[FFmpeg-devel] [PATCH 5/6] x86/simple_idct: add explicit sse2 simple_idct_put/add versions.
Ronald S. Bultje
rsbultje at gmail.com
Wed Apr 5 01:13:30 EEST 2017
Hi,
On Tue, Apr 4, 2017 at 5:52 PM, Michael Niedermayer <michael at niedermayer.cc>
wrote:
> On Tue, Apr 04, 2017 at 12:48:17PM -0400, Ronald S. Bultje wrote:
> > These use the mmx IDCT, but sse2 put/add_pixels_clamped implementations.
> > This way we don't need to use the ff_put/add_pixels_clamped function
> > pointers.
> > ---
> > libavcodec/x86/idctdsp_init.c | 10 ++++++++++
> > libavcodec/x86/simple_idct.c | 15 +++++++++++++--
> > libavcodec/x86/simple_idct.h | 3 +++
> > 3 files changed, 26 insertions(+), 2 deletions(-)
> >
> > diff --git a/libavcodec/x86/idctdsp_init.c
> b/libavcodec/x86/idctdsp_init.c
> > index bcf7e5b..579c5e7 100644
> > --- a/libavcodec/x86/idctdsp_init.c
> > +++ b/libavcodec/x86/idctdsp_init.c
> > @@ -87,6 +87,16 @@ av_cold void ff_idctdsp_init_x86(IDCTDSPContext *c,
> AVCodecContext *avctx,
> > }
> >
> > if (ARCH_X86_64 && avctx->lowres == 0) {
> > + if (!high_bit_depth &&
>
> > + avctx->lowres == 0 &&
>
> this looks redundant
>
> otherwise should be ok
>
> thx
Thanks.
While looking, this patch may actually have a slightly theoretical issue.
Imagine that you're on a configuration where external asm is disabled but
inline asm is enabled. In our current system,
put/add_pixels_clamped_mmx/sse2 are yasm functions, but idct() is still
inline. So in this configuration, idct() is available, but idct_add/put are
not.
What do we set idct_permutation to?
(I know that in practice this configuration is basically a bug and so the
performance implications aren't that important, but I do believe it should
not crash; should we just move the assignment of idct under
HAVE_EXTERNAL_MMX - which is where idct_put/add would go - even though it
strictly speaking doesn't use external asm?)
Ronald
More information about the ffmpeg-devel
mailing list