Commit 2cef68da authored by Stefano Pigozzi's avatar Stefano Pigozzi Committed by 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: 's avatarStefano Pigozzi <stefano.pigozzi@gmail.com>
parent 0352ff10
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment