[FFmpeg-devel] [PATCH 1/2] avcodec/d3d12va_decode: check existance before assigning a new index

Xiang, Haihao haihao.xiang at intel.com
Wed Jan 24 09:14:23 EET 2024


On Wo, 2024-01-17 at 06:23 +0000, Xiang, Haihao wrote:
> On Do, 2024-01-11 at 14:31 +0800, tong1.wu-at-intel.com at ffmpeg.org wrote:
> > From: Tong Wu <tong1.wu at 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.wu at 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, 
> 
Will apply,

- Haihao


More information about the ffmpeg-devel mailing list