On Do, 2024-01-11 at 14:31 +0800, [email protected] wrote: > From: Tong Wu <[email protected]> > > 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 <[email protected]> > --- > 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 [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
