[FFmpeg-trac] #1404(avcodec:new): Several problems with prores decoders/encoders during compilation

FFmpeg trac at avcodec.org
Sun Jun 3 22:30:55 CEST 2012


#1404: Several problems with prores decoders/encoders during compilation
---------------------------------+--------------------------------------
             Reporter:  jamal    |                     Type:  defect
               Status:  new      |                 Priority:  normal
            Component:  avcodec  |                  Version:  git-master
             Keywords:  prores   |               Blocked By:
             Blocking:           |  Reproduced by developer:  0
Analyzed by developer:  0        |
---------------------------------+--------------------------------------
 Some problems i found with the different prores decoders and encoders.

 First, the following configuration fails when linking the executables:

 {{{
 ./configure --disable-everything --enable-decoder=prores
 }}}

 The error is as follows:

 {{{
 LD      ffmpeg_g.exe
 libavcodec/libavcodec.a(proresdec2.o): In function `decode_init':
 D:\msys\1.0\home\jamal\ffmpeg/libavcodec/proresdec2.c:73: undefined
 reference to `ff_proresdsp_init'
 collect2: ld returned 1 exit status
 make: *** [ffmpeg_g.exe] Error 1
 }}}

 The problem is that libavcodec/Makefile is not compiling proresdsp.c when
 this decoder is enabled alone.

 {{{
 OBJS-$(CONFIG_PRORES_DECODER)          += proresdec2.o
 }}}
 should be
 {{{
 OBJS-$(CONFIG_PRORES_DECODER)          += proresdec2.o proresdsp.o
 }}}

 ----

 Second, when for example configuring with

 {{{
 ./configure --disable-decoders --enable-decoder=prores_lgpl
 }}}

 The compilation succeeds, but both ffmpeg and ffprobe crash when trying to
 read a file with a prores stream.
 The problem is that proresdsp.c contains two functions used by the
 prores_lgpl decoder that only consider "CONFIG_PRORES_DECODER" but not
 "CONFIG_PRORES_LGPL_DECODER" during compilation.

 In both cases
 {{{
 #if CONFIG_PRORES_DECODER
 }}}
 should be
 {{{
 #if CONFIG_PRORES_DECODER | CONFIG_PRORES_LGPL_DECODER
 }}}
 Since the other prores decoder also uses these functions.

 ----

 Third, when compiling for example with

 {{{
 ./configure --disable-encoders --enable-encoder=prores_kostya
 }}}

 The compilation succeeds as well, but ffmpeg crashes when trying to encode
 using said encoder.
 The problem is once again in proresdsp.c where two functions needed by the
 prores_kostya encoder checks for CONFIG_PRORES_ENCODER when it should
 check for CONFIG_PRORES_KOSTYA_ENCODER instead.

 In both cases
 {{{
 #if CONFIG_PRORES_ENCODER
 }}}
 should be
 {{{
 #if CONFIG_PRORES_KOSTYA_ENCODER
 }}}
 Since the other prores encoder doesn't use functions from proresdsp.c at
 all.

 ----

 I presume most of these problem were introduced after the
 decoders/encoders got a name change in one of the merges from libav. The
 prores and prores_anatoliy encoders are exactly the same thing for
 example, yet for some reason are two separate encoders.

 Once again, found this thanks to Måns' --enable-random feature.

-- 
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/1404>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list