[FFmpeg-devel] [PATCH 2/9] avcodec/opustab: Avoid indirection to access ff_celt_window

Michael Niedermayer michael at niedermayer.cc
Tue Oct 4 15:14:16 EEST 2022


On Tue, Oct 04, 2022 at 12:44:58AM +0200, Andreas Rheinhardt wrote:
> Currently, it is accessed via a pointer (ff_celt_window)
> exported from opustab.h which points inside a static array
> (ff_celt_window_padded) in opustab.h. Instead export
> ff_celt_window_padded directly and make opustab.h
> a static const pointer pointing inside ff_celt_window_padded.
> Also mark all the declarations in opustab.h as hidden,
> so that the compiler knows that ff_celt_window has a fixed
> offset from the code even when compiling position-independent
> code.
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> ---
>  libavcodec/opusenc.c | 4 ++--
>  libavcodec/opustab.c | 4 +---
>  libavcodec/opustab.h | 8 +++++++-
>  3 files changed, 10 insertions(+), 6 deletions(-)
[...]
> diff --git a/libavcodec/opustab.h b/libavcodec/opustab.h
> index 16011db758..9c9f1b9d98 100644
> --- a/libavcodec/opustab.h
> +++ b/libavcodec/opustab.h
> @@ -25,6 +25,9 @@
>  
>  #include <stdint.h>
>  
> +#include "libavutil/attributes_internal.h"
> +
> +FF_VISIBILITY_PUSH_HIDDEN
>  extern const uint8_t  ff_celt_band_end[];
>  
>  extern const uint8_t  ff_opus_default_coupled_streams[];

didnt investigate but this breaks mingw64 here

CC	libavcodec/opus.o
In file included from src/libavcodec/opus.c:34:0:
src/libavcodec/opustab.h:31:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘extern’
 extern const uint8_t  ff_celt_band_end[];
 ^~~~~~
In file included from src/libavcodec/opus.c:35:0:
src/libavcodec/internal.h:52:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘typedef’
 typedef struct AVCodecInternal {
 ^~~~~~~
src/libavcodec/opus.c: In function ‘ff_opus_parse_extradata’:
src/libavcodec/opus.c:333:24: error: ‘struct AVCodecInternal’ has no member named ‘skip_samples’
         avctx->internal->skip_samples = avctx->delay;
                        ^~
src/ffbuild/common.mak:81: recipe for target 'libavcodec/opus.o' failed
make: *** [libavcodec/opus.o] Error 1



[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

it is not once nor twice but times without number that the same ideas make
their appearance in the world. -- Aristotle
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20221004/7ab1332f/attachment.sig>


More information about the ffmpeg-devel mailing list