[FFmpeg-devel] [PATCH 6/6] avcodec/hevc: ff_hevc_(qpel/epel)_filters are signed type

Nuo Mi nuomi2021 at gmail.com
Tue Sep 10 14:37:03 EEST 2024


On Mon, Sep 9, 2024 at 6:35 PM Anton Khirnov <anton at khirnov.net> wrote:

> Quoting Zhao Zhili (2024-09-07 19:13:40)
> > From: Zhao Zhili <zhilizhao at tencent.com>
> >
> > ---
> >  libavcodec/hevc/dsp_template.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/libavcodec/hevc/dsp_template.c
> b/libavcodec/hevc/dsp_template.c
> > index aebccd1a0c..a0f79c2673 100644
> > --- a/libavcodec/hevc/dsp_template.c
> > +++ b/libavcodec/hevc/dsp_template.c
> > @@ -302,8 +302,8 @@ IDCT_DC(32)
> >
> ////////////////////////////////////////////////////////////////////////////////
> >  #define ff_hevc_pel_filters ff_hevc_qpel_filters
> >  #define DECL_HV_FILTER(f)                              \
> > -    const uint8_t *hf = ff_hevc_ ## f ## _filters[mx]; \
> > -    const uint8_t *vf = ff_hevc_ ## f ## _filters[my];
> > +    const int8_t *hf = ff_hevc_ ## f ## _filters[mx]; \
> > +    const int8_t *vf = ff_hevc_ ## f ## _filters[my];
>
> Looks ok, though I wonder why are these then used as intptr_t.
>
The original HEVC assembly  code
<https://github.com/FFmpeg/FFmpeg/blob/b3bbbb14d0685c8c1fbcf8455e59c7f444290c7c/libavcodec/x86/hevc_mc.asm#L204>
uses mx and my as 64-bit variables.
If we define it as an int, it will push a 32-bit value onto the stack,
leaving the upper 32 bits undefined. Defining it as intptr_t will ensure
all bits are filled.
We no longer need to use intptr_t for x86 and NEON, as the assembly code
now accepts const int8_t *.However, other platforms like MIPS still use
intptr_t.
Once all architectures are updated to use the const int8_t * style, we can
modify HEVCDSPContext->put_hevc_xxx(intptr_t mx, intptr_t my...) to
HEVCDSPContext->put_hevc_xxx(... const int8_t *hf, const int8_t *vf...).


> --
> Anton Khirnov
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>


More information about the ffmpeg-devel mailing list