[FFmpeg-devel] [PATCH] broken build with --disable-optimizations

Måns Rullgård mans
Mon Jan 18 16:14:30 CET 2010


Michael Niedermayer <michaelni at gmx.at> writes:

> On Mon, Jan 18, 2010 at 02:01:11PM +0000, M?ns Rullg?rd wrote:
>> Jai Menon <jmenon86 at gmail.com> writes:
>> 
>> > On Sun, Jan 17, 2010 at 10:06:17PM +0100, Michael Niedermayer wrote:
>> >> On Mon, Jan 18, 2010 at 01:11:40AM +0530, Jai Menon wrote:
>> >> > Hi,
>> >> > 
>> >> > Attached patch fixes it. This probably isn't correct and is
>> >> > just meant to be an indicator of what the issue is.
>> >> 
>> >> Could you show me the error message with which it fails?
>> >
>> > here you go :
>> >
>> > /home/jai/ffbuild/libavcodec/libavcodec.a(h264.o): In function
>> > `decode_significance_8x8_x86':
>> > /home/jai/ffmpeg/libavcodec/x86/h264_i386.h:97: undefined reference to
>> > `last_coeff_flag_offset_8x8'
>> 
>> The problem is all those non-inline functions in h264*.h. 
>
>> There is absolutely no sense whatsoever in having a non-inline
>> function in a header file.
>
> There is a sense, some things like CABAC are constants that way but
> would not if its in a C file. inlining OTOH may or may not be good,
> its independant

I see your point.  However, you could still put both versions of the
function in a .c file, perhaps by #including a template.h with
different definitions.

>> Either the function should be inlined or it should not.
>> In the former case it should be marked inline explicitly, in the
>> latter it should be in a .c file.  Having multiple copies of
>> non-inline functions in the object code is obviously a bad thing.
>> 
>> Michael, if this is a work in progress and you're experimenting with
>> inlining, say so and that's fine.  If you do not intend for these
>> functions to be inlined, please move them to .c files.
>
> someone has to benchmark if static, static inline or static in .c is faster
> for each function. If someone does iam perfectly fine with these functions
> being changed to their fastes variant.
> If someone wants they can also temporary mark all as static inline until
> someone has time to benchmark them.
>
> besides the static function this time is in h264_i386.h and that was
> there since a long time and not commited by me, actually i was unaware
> that it was non inline until now.
>
> and jais compiler is broken if it does not remove unused static functions

There is no such requirement in the C standard, so technically the
compiler is not broken at all, just not optimising very well (at the
request of the user this time).

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list