ffmpeg | branch: master | Stefano Pigozzi <stefano.pigo...@gmail.com> | Mon Dec 29 21:28:50 2014 +0100| [2cef68da69a17ed09c313ba3c3850ec1cc0a80e0] | committer: Vittorio Giovara
vda: error out if decoded CVPixelBuffer is empty On some video samples, VDA silently fails to decode frames and returns kVDADecoderNoErr. Error out in these cases to avoid producing AVFrames with empty planes. Signed-off-by: Stefano Pigozzi <stefano.pigo...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2cef68da69a17ed09c313ba3c3850ec1cc0a80e0 --- libavcodec/vda_h264.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/libavcodec/vda_h264.c b/libavcodec/vda_h264.c index c7f6a74..acefde6 100644 --- a/libavcodec/vda_h264.c +++ b/libavcodec/vda_h264.c @@ -345,24 +345,25 @@ static int vda_h264_end_frame(AVCodecContext *avctx) CFRelease(coded_frame); + if (!vda->frame) + return AVERROR_UNKNOWN; + if (status != kVDADecoderNoErr) { av_log(avctx, AV_LOG_ERROR, "Failed to decode frame (%d)\n", status); return AVERROR_UNKNOWN; } - if (vda->frame) { - av_buffer_unref(&frame->buf[0]); + av_buffer_unref(&frame->buf[0]); - frame->buf[0] = av_buffer_create((uint8_t*)vda->frame, - sizeof(vda->frame), - release_buffer, NULL, - AV_BUFFER_FLAG_READONLY); - if (!frame->buf) - return AVERROR(ENOMEM); + frame->buf[0] = av_buffer_create((uint8_t*)vda->frame, + sizeof(vda->frame), + release_buffer, NULL, + AV_BUFFER_FLAG_READONLY); + if (!frame->buf) + return AVERROR(ENOMEM); - frame->data[3] = (uint8_t*)vda->frame; - vda->frame = NULL; - } + frame->data[3] = (uint8_t*)vda->frame; + vda->frame = NULL; return 0; } _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog