On Do, 2024-01-11 at 14:31 +0800, tong1.wu-at-intel....@ffmpeg.org wrote: > From: Tong Wu <tong1...@intel.com> > > Fixes #10759. > > It can happen in H.264, MPEG2, VC1 that the current frame resource > memory is already in ref_resource. For example, for a interlaced frame, > the same curr memory is passed twice. For the second time it could possibly > reference itself. When this happens the curr is already given an index and > in ref_resources. When the reference frame index is required, we should check > the existance in the ref_resources first before assigning a new index for it. > > Signed-off-by: Tong Wu <tong1...@intel.com> > --- > libavcodec/d3d12va_decode.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/libavcodec/d3d12va_decode.c b/libavcodec/d3d12va_decode.c > index c5c599675e..a6f40236d1 100644 > --- a/libavcodec/d3d12va_decode.c > +++ b/libavcodec/d3d12va_decode.c > @@ -62,14 +62,14 @@ unsigned ff_d3d12va_get_surface_index(const AVCodecContext > *avctx, > if (!res) > goto fail; > > - if (!curr) { > - for (i = 0; i < ctx->max_num_ref; i++) { > - if (ctx->ref_resources[i] && res == ctx->ref_resources[i]) { > - ctx->used_mask |= 1 << i; > - return i; > - } > + for (i = 0; i < ctx->max_num_ref; i++) { > + if (ctx->ref_resources[i] && res == ctx->ref_resources[i]) { > + ctx->used_mask |= 1 << i; > + return i; > } > - } else { > + } > + > + if (curr) { > for (i = 0; i < ctx->max_num_ref; i++) { > if (!((ctx->used_mask >> i) & 0x1)) { > ctx->ref_resources[i] = res;
Patchset LGTM, BRs Haihao _______________________________________________ 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".