Anton Khirnov <an...@khirnov.net> 于2022年9月19日周一 21:22写道:
> Fixes assertion failures after avcodec_flush_buffers(), where > stashed hwaccel state is present, but prev_thread is NULL. > > Found-by: Wang Bin <wbse...@gmail.com> > --- > libavcodec/pthread_frame.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c > index 066269621d..f8fddc5e4d 100644 > --- a/libavcodec/pthread_frame.c > +++ b/libavcodec/pthread_frame.c > @@ -459,14 +459,14 @@ static int submit_packet(PerThreadContext *p, > AVCodecContext *user_avctx, > pthread_mutex_unlock(&p->mutex); > return err; > } > - > - /* transfer hwaccel state stashed from previous thread, if any */ > - av_assert0(!p->avctx->hwaccel); > - FFSWAP(const AVHWAccel*, p->avctx->hwaccel, > fctx->stash_hwaccel); > - FFSWAP(void*, p->avctx->hwaccel_context, > fctx->stash_hwaccel_context); > - FFSWAP(void*, p->avctx->internal->hwaccel_priv_data, > fctx->stash_hwaccel_priv); > } > > + /* transfer the stashed hwaccel state, if any */ > + av_assert0(!p->avctx->hwaccel); > + FFSWAP(const AVHWAccel*, p->avctx->hwaccel, > fctx->stash_hwaccel); > + FFSWAP(void*, p->avctx->hwaccel_context, > fctx->stash_hwaccel_context); > + FFSWAP(void*, p->avctx->internal->hwaccel_priv_data, > fctx->stash_hwaccel_priv); > + > av_packet_unref(p->avpkt); > ret = av_packet_ref(p->avpkt, avpkt); > if (ret < 0) { > -- > 2.35.1 > > The patch works as expected. I've tested all hwaccels. Thanks. Regards _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".