avcodec/mpeg4audio: Unavpriv and deduplicate mpeg4audio_sample_rates
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>
Wed, 10 Feb 2021 18:37:37 +0000 (19:37 +0100)
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>
Tue, 4 Jan 2022 12:16:50 +0000 (13:16 +0100)
commit49bf94536f059340eacd5430592e4216b29d0d20
treeb1a59398a83aa4c2a8bdd01af8498dda08a48a34
parentd82c91ba2f889bc5e0ee7c976219f91e62dc9f8b
avcodec/mpeg4audio: Unavpriv and deduplicate mpeg4audio_sample_rates

avpriv_mpeg4audio_sample_rates has a size of 64B and it is currently
avpriv; a clone of it exists in aacenctab.h and from there it is inlined
in aacenc.c (which also uses the avpriv version) and in the FLV muxer.
This means that despite it being avpriv both libavformat as well as
libavcodec have copies already.

This situation is clearly suboptimal. Given the overhead of exporting
symbols (for x64 Elf/Linux/GNU: 2x2B version, 2x24B .dynsym, 24B .rela.dyn,
8B .got, 4B hash + twice the size of the name (here 31B)) the object is
unavprived, i.e. duplicated into libavformat when creating a shared
build; but the duplicates in the AAC encoder and FLV muxer are removed.

This involves splitting of the sample rate table into a file of its own;
this allowed to break some spurious dependencies (e.g. both the AAC
encoder as well as the Matroska demuxer actually don't need the
mpeg4audio_get_config stuff).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
13 files changed:
libavcodec/Makefile
libavcodec/aacenc.c
libavcodec/aacenctab.h
libavcodec/adts_header.c
libavcodec/mpeg4audio.c
libavcodec/mpeg4audio.h
libavcodec/mpeg4audio_sample_rates.c [new file with mode: 0644]
libavcodec/mpeg4audio_sample_rates.h [new file with mode: 0644]
libavformat/Makefile
libavformat/flvenc.c
libavformat/matroskadec.c
libavformat/mpeg4audio_sample_rates.c [new file with mode: 0644]
libavformat/sdp.c