Apr 22, 2024, 09:20 by d...@lynne.ee: > Apr 22, 2024, 00:19 by mich...@niedermayer.cc: > >> On Fri, Apr 12, 2024 at 11:11:53AM +0200, Lynne wrote: >> >>> Apr 12, 2024, 00:45 by mich...@niedermayer.cc: >>> >>> > On Thu, Apr 11, 2024 at 07:42:37AM +0200, Lynne wrote: >>> > >>> >> Apr 10, 2024, 23:57 by mich...@niedermayer.cc: >>> >> >>> >> > On Wed, Apr 10, 2024 at 08:18:11PM +0200, Michael Niedermayer wrote: >>> >> > >>> >> >> On Wed, Apr 10, 2024 at 06:48:26PM +0200, Lynne wrote: >>> >> >> > Apr 8, 2024, 09:36 by d...@lynne.ee: >>> >> >> > >>> >> >> > > The following patchset refactors the AAC decoder step by step, >>> >> >> > > removing all large-scale templating and abstracting away typed >>> >> >> > > DSP functions from symbol parsing. >>> >> >> > > >>> >> >> > > This series saves 110Kib of binary data from libavcodec.so >>> >> >> > > when compiled with Clang 18 with -O3, after stripping. >>> >> >> > > >>> >> >> > > The patchset can also be viewed here: >>> >> >> > > https://github.com/cyanreg/FFmpeg/tree/aac_cleanup >>> >> >> > > >>> >> >> > > Fate passes on each step, and I've been running this patchset for >>> >> >> > > a week with no issues. >>> >> >> > > >>> >> >> > > This also prepares the decoder for USAC support. >>> >> >> > > >>> >> >> > >>> >> >> > I've rebased the linked repo to current git master if anyone >>> >> >> > wants to test. >>> >> >> >>> >> >> thanks, i will try to test it >>> >> >> >>> >> > >>> >> > make fate-source >>> >> > >>> >> > TEST source >>> >> > --- ./tests/ref/fate/source 2024-04-08 18:26:00.670129617 +0200 >>> >> > +++ tests/data/fate/source 2024-04-10 23:56:18.032896853 +0200 >>> >> > @@ -22,6 +22,13 @@ >>> >> > compat/djgpp/math.h >>> >> > compat/float/float.h >>> >> > compat/float/limits.h >>> >> > +libavcodec/aac/aacdec.h >>> >> > +libavcodec/aac/aacdec_fixed_coupling.h >>> >> > +libavcodec/aac/aacdec_fixed_dequant.h >>> >> > +libavcodec/aac/aacdec_fixed_prediction.h >>> >> > +libavcodec/aac/aacdec_float_coupling.h >>> >> > +libavcodec/aac/aacdec_float_prediction.h >>> >> > +libavcodec/aac/aacdec_latm.h >>> >> > libavcodec/bitstream_template.h >>> >> > tools/decode_simple.h >>> >> > Use of av_clip() where av_clip_uintp2() could be used: >>> >> > Test source failed. Look at tests/data/fate/source.err for details. >>> >> > tests/Makefile:310: recipe for target 'fate-source' failed >>> >> > make: *** [fate-source] Error 1 >>> >> > >>> >> >>> >> Thanks for testing. Fixed both issues in the repo. >>> >> Was only testing with fate-aac while developing. >>> >> >>> > >>> > mips: >>> > >>> > make -k >>> > LD ffmpeg_g >>> > libavcodec/libavcodec.a(aacsbr.o): In function >>> > `ff_aac_sbr_ctx_alloc_init': >>> > aacsbr.c:(.text.unlikely+0x1d4): undefined reference to >>> > `ff_aacsbr_func_ptr_init_mips' >>> > aacsbr.c:(.text.unlikely+0x200): undefined reference to >>> > `ff_aacsbr_func_ptr_init_mips' >>> > libavcodec/libavcodec.a(sbrdsp.o): In function `ff_sbrdsp_init': >>> > sbrdsp.c:(.text.unlikely+0x10): undefined reference to >>> > `ff_sbrdsp_init_mips' >>> > sbrdsp.c:(.text.unlikely+0xb4): undefined reference to >>> > `ff_sbrdsp_init_mips' >>> > libavcodec/libavcodec.a(aacpsdsp_float.o): In function `ff_psdsp_init': >>> > aacpsdsp_float.c:(.text.unlikely+0x10): undefined reference to >>> > `ff_psdsp_init_mips' >>> > aacpsdsp_float.c:(.text.unlikely+0x6c): undefined reference to >>> > `ff_psdsp_init_mips' >>> > collect2: error: ld returned 1 exit status >>> > Makefile:136: recipe for target 'ffmpeg_g' failed >>> > make: *** [ffmpeg_g] Error 1 >>> > LD ffprobe_g >>> > libavcodec/libavcodec.a(aacsbr.o): In function >>> > `ff_aac_sbr_ctx_alloc_init': >>> > aacsbr.c:(.text.unlikely+0x1d4): undefined reference to >>> > `ff_aacsbr_func_ptr_init_mips' >>> > aacsbr.c:(.text.unlikely+0x200): undefined reference to >>> > `ff_aacsbr_func_ptr_init_mips' >>> > libavcodec/libavcodec.a(sbrdsp.o): In function `ff_sbrdsp_init': >>> > sbrdsp.c:(.text.unlikely+0x10): undefined reference to >>> > `ff_sbrdsp_init_mips' >>> > sbrdsp.c:(.text.unlikely+0xb4): undefined reference to >>> > `ff_sbrdsp_init_mips' >>> > libavcodec/libavcodec.a(aacpsdsp_float.o): In function `ff_psdsp_init': >>> > aacpsdsp_float.c:(.text.unlikely+0x10): undefined reference to >>> > `ff_psdsp_init_mips' >>> > aacpsdsp_float.c:(.text.unlikely+0x6c): undefined reference to >>> > `ff_psdsp_init_mips' >>> > collect2: error: ld returned 1 exit status >>> > Makefile:136: recipe for target 'ffprobe_g' failed >>> > make: *** [ffprobe_g] Error 1 >>> > make: Target 'all' not remade because of errors. >>> > >>> >>> Fixed. This should be all. >>> On the Loongson machine I have access to, I can't compile FFmpeg >>> due to missing asm/errno.h kernel header, while on the standard MIPS64 >>> machine I can access, compilation worked either way. >>> >>> Would you mind testing again the new version in the repo? >>> >> >> it works on my qemu based mips. I did give the loongson to anton 2 years ago >> so i have no native loongson to test it with >> > > Thanks. That sounds good enough for me, really the main > potential issue I see with this is that it changes the way files > are organized to be more like the VVC decoder. > Since no one seems bothered by that, I'll move on with pushing > this tomorrow. >
Patchset pushed. Thanks for the reviews and testing, and for Andreas for the commits he did. Final savings: All measurements done on libavcodec/libavcodec.so.61 with a default configuration after stripping: x86-64: clang-18 with -Os Before: 10601800 After: 10589512 clang-18 with -O3 Before: 15377624 After: 15340760 gcc-14 with -O3 Before: 15377624 After: 15340760 gcc-14 with -Os Before: 10601800 After: 10589512 aarch64: gcc-12 with -O3 Before: 12444560 After: 12399504 clang-17 with -O3 Before: 12436368 After: 12399504 Disabling everything but audio encoders and decoders seems like it saves more, but to keep it far, this is the default config with everything enabled. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".