You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-04 22:03:09 +02:00
avcodec/vt: Don't restart decoder when confronted with ReferenceMissingErr
Otherwise the decoder may enter an loop of repeated state resets. This can happen for streams with CRA but no IDR. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
This commit is contained in:
@ -728,8 +728,12 @@ static void videotoolbox_decoder_callback(void *opaque,
|
||||
}
|
||||
|
||||
if (!image_buffer) {
|
||||
if (status != kVTVideoDecoderReferenceMissingErr)
|
||||
vtctx->reconfig_needed = true;
|
||||
|
||||
av_log(vtctx->logctx, status ? AV_LOG_WARNING : AV_LOG_DEBUG,
|
||||
"vt decoder cb: output image buffer is null: %i\n", status);
|
||||
"vt decoder cb: output image buffer is null: %i, reconfig %d\n",
|
||||
status, vtctx->reconfig_needed);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1066,10 +1070,8 @@ int ff_videotoolbox_common_end_frame(AVCodecContext *avctx, AVFrame *frame)
|
||||
return AVERROR_UNKNOWN;
|
||||
}
|
||||
|
||||
if (!vtctx->frame) {
|
||||
vtctx->reconfig_needed = true;
|
||||
if (!vtctx->frame)
|
||||
return AVERROR_UNKNOWN;
|
||||
}
|
||||
|
||||
return videotoolbox_buffer_create(avctx, frame);
|
||||
}
|
||||
|
Reference in New Issue
Block a user