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

Muhammad Faiz mfcc64 at gmail.com
Fri Feb 9 17:21:04 EET 2018


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.

Thank's.


More information about the ffmpeg-devel mailing list