[FFmpeg-devel] [FFmpeg-cvslog] lavc: add new API for iterating codecs and codec parsers

Michael Niedermayer michael at niedermayer.cc
Sun Feb 11 01:37:37 EET 2018


On Sat, Feb 10, 2018 at 05:13:10PM +0700, Muhammad Faiz wrote:
> On Sat, Feb 10, 2018 at 7:51 AM, Michael Niedermayer
> <michael at niedermayer.cc> wrote:
> > On Fri, Feb 09, 2018 at 10:21:04PM +0700, Muhammad Faiz wrote:
> >> On Fri, Feb 9, 2018 at 6:53 PM, James Almer <jamrial at gmail.com> wrote:
> >> > On 2/9/2018 7:56 AM, Muhammad Faiz wrote:
> >> >> On Thu, Feb 8, 2018 at 7:04 AM, Michael Niedermayer
> >> >> <michael at niedermayer.cc> wrote:
> >> >>> On Wed, Feb 07, 2018 at 01:52:33PM +0100, Nicolas George wrote:
> >> >>>> Josh de Kock (2018-02-06):
> >> >>>>> ffmpeg | branch: master | Josh de Kock <josh at itanimul.li> | Fri Dec 22 22:17:00 2017 +0000| [7e8eba2d8755962d9dca5eade57bf8f591a73c0c] | committer: Josh de Kock
> >> >>>>>
> >> >>>>> lavc: add new API for iterating codecs and codec parsers
> >> >>>>>
> >> >>>>> Based on an unfinished patch by atomnuker.
> >> >>>
> >> >>> This commit also breaks
> >> >>>
> >> >>> ./configure --enable-libsoxr && make -j12 fate-checkasm
> >> >>>  make -j12 fate-checkasm
> >> >>>  ...
> >> >>> LD      tests/checkasm/checkasm
> >> >>> libswresample/libswresample.a(soxr_resample.o): In function `get_out_samples':
> >> >>> ffmpeg/libswresample/soxr_resample.c:118: undefined reference to `soxr_delay'
> >> >>> libswresample/libswresample.a(soxr_resample.o): In function `get_delay':
> >> >>> ffmpeg/libswresample/soxr_resample.c:100: undefined reference to `soxr_delay'
> >> >>> libswresample/libswresample.a(soxr_resample.o): In function `flush':
> >> >>> ffmpeg/libswresample/soxr_resample.c:70: undefined reference to `soxr_delay'
> >> >>> ffmpeg/libswresample/soxr_resample.c:72: undefined reference to `soxr_process'
> >> >>> ffmpeg/libswresample/soxr_resample.c:77: undefined reference to `soxr_process'
> >> >>> ffmpeg/libswresample/soxr_resample.c:78: undefined reference to `soxr_delay'
> >> >>> libswresample/libswresample.a(soxr_resample.o): In function `process':
> >> >>> ffmpeg/libswresample/soxr_resample.c:88: undefined reference to `soxr_set_num_channels'
> >> >>> ffmpeg/libswresample/soxr_resample.c:88: undefined reference to `soxr_set_error'
> >> >>> ffmpeg/libswresample/soxr_resample.c:90: undefined reference to `soxr_process'
> >> >>> libswresample/libswresample.a(soxr_resample.o): In function `destroy':
> >> >>> ffmpeg/libswresample/soxr_resample.c:65: undefined reference to `soxr_delete'
> >> >>> libswresample/libswresample.a(soxr_resample.o): In function `create':
> >> >>> ffmpeg/libswresample/soxr_resample.c:46: undefined reference to `soxr_io_spec'
> >> >>> ffmpeg/libswresample/soxr_resample.c:48: undefined reference to `soxr_quality_spec'
> >> >>> ffmpeg/libswresample/soxr_resample.c:56: undefined reference to `soxr_delete'
> >> >>> ffmpeg/libswresample/soxr_resample.c:57: undefined reference to `soxr_create'
> >> >>> collect2: error: ld returned 1 exit status
> >> >>> make: *** [tests/checkasm/checkasm] Error 1
> >> >>
> >> >> Fixed in 81d6501be77b273053a66eeced94d78e2021f1d1
> >> >>
> >> >> Thank's.
> >> >
> >> > This is not a proper solution. swr is pulled by avcodec only if Opus
> >> > decoder is enabled. There's no reason to hardcode it for checkasm otherwise.
> >> > The problem here is that the Makefile should pull all the dependencies
> >> > of its hardcoded dependencies. This is what FFLIBS and FFEXTRALIBS do in
> >> > common.mak to link the actual libraries.
> >>
> >> Probably, this is not a proper solution, but it is trivial enough.
> >> (I'm sorry that I pushed it without posting).
> >> So, please fix it with the proper solution. Probably, by adding
> >> swresample-extralibs to avcodec-extralibs when avcodec has dependency
> >> to swresample. I don't know how to do it.
> >>
> >
> >> >
> >> > That said, was this really a regression generated by this commit? It
> >> > looks unrelated.
> >>
> >> Actually, it was a bug even before this commit. Just, previously it
> >> was hidden because linker was smart enough to discard unneeded
> >> dependency. But now when the list is changed to array, the linker is
> >> unable to do it.
> >
> > iam not sure i understand correctly. But does this mean that
> > tools/target_dec_"codec"_fuzzer will now include everything and not just
> > the "codec" ?
> > If so this will possibly prevent FFmpeg from being tested in googles ossfuzz
> > framework. As their diskspace was already rather tight.
> >
> > i do see on my disk that the more recently build fuzzers have gottem MUCH
> > larger:
> > -rwxr-x--- 1 michael michael  17588987 Feb  3 18:53 tools/target_dec_scpr_fuzzer*
> > -rwxr-x--- 1 michael michael  17476326 Feb  4 02:16 tools/target_dec_paf_video_fuzzer*
> > -rwxr-x--- 1 michael michael 143210465 Feb  9 13:53 tools/target_dec_h264_fuzzer*
> > -rwxr-x--- 1 michael michael 143210465 Feb  9 13:56 tools/target_dec_vp3_fuzzer*
> >
> 
> Does the attached patch fix the problem?

in my local build this makes no difference to the size

make distclean ; ./configure   --optflags='-O1 -Os' --enable-debug --disable-encoders --disable-parsers --disable-avformat --disable-avfilter --disable-ffplay --disable-ffmpeg --disable-avdevice  --disable-stripping --enable-ossfuzz --libfuzzer='~/libfuzzer/libFuzzer.a -lstdc++'    --cc='ccache clang' --cxx='ccache clang++' --disable-vaapi --disable-cuvid   --pkg-config-flags="--static" --enable-libx265  --enable-libx264 --enable-libvorbis --enable-libopus --enable-libvpx --enable-libmp3lame --enable-libfdk-aac  --enable-gpl --enable-nonfree --enable-libfreetype --enable-libtheora --enable-libass --assert_level=2 --enable-debug && time make -j12 tools/target_dec_h264_fuzzer


after the patch:
-rwxr-x--- 1 michael michael 143237303 Feb 11 00:18 tools/target_dec_h264_fuzzer

before the patch:
-rwxr-x--- 1 michael michael 143237007 Feb 11 00:27 tools/target_dec_h264_fuzzer*

caa4bd7a9fe9186a56fdcb8194263b066978cbbe
-rwxr-x--- 1 michael michael  35470813 Feb 11 00:31 tools/target_dec_h264_fuzzer*


[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Does the universe only have a finite lifespan? No, its going to go on
forever, its just that you wont like living in it. -- Hiranya Peiri
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180211/3dc38d1c/attachment.sig>


More information about the ffmpeg-devel mailing list