diff --git a/libavcodec/vda.h b/libavcodec/vda.h index b3d6399a65..2f68188c9c 100644 --- a/libavcodec/vda.h +++ b/libavcodec/vda.h @@ -41,6 +41,12 @@ #include "libavcodec/version.h" +// extra flags not defined in VDADecoder.h +enum { + kVDADecodeInfo_Asynchronous = 1UL << 0, + kVDADecodeInfo_FrameDropped = 1UL << 1 +}; + /** * @defgroup lavc_codec_hwaccel_vda VDA * @ingroup lavc_codec_hwaccel diff --git a/libavcodec/vda_h264.c b/libavcodec/vda_h264.c index e0561e2914..1eff671f7f 100644 --- a/libavcodec/vda_h264.c +++ b/libavcodec/vda_h264.c @@ -41,6 +41,9 @@ static void vda_decoder_callback(void *vda_hw_ctx, { struct vda_context *vda_ctx = vda_hw_ctx; + if (infoFlags & kVDADecodeInfo_FrameDropped) + vda_ctx->cv_buffer = NULL; + if (!image_buffer) return;