[FFmpeg-devel] ff_idct_xvid_sse2-cannot-be-inline.patch

Måns Rullgård mans
Tue Mar 9 01:52:21 CET 2010


Pavel Pavlov <pavel at summit-tech.ca> writes:

>> On Mon, Mar 08, 2010 at 06:43:11PM -0500, Pavel Pavlov wrote:
>> > > > The function ff_idct_xvid_sse2 simply cannot be static because
>> > > > it's
>> > > referenced inside dsputil_mmx.c:
>> > > >   c->idct    = ff_idct_xvid_sse2;
>> > > > I have no idea how gcc could compile/link this kind of code. There
>> > > should have been a link error at least
>> > > > <ff_idct_xvid_sse2-cannot-be-inline.patch>
>> > >
>> > > It's C99 inline. C99 doesn't make inline functions static if there's
>> > > a prototype, and there is one.
>> > >
>> >
>> >
>> > I don't know why I wrote static, if it's actually inline :) Anyways,
>> > I'm getting a link error and I have to remove inline to fix it.
>> 
>> the function in question must be marked inline due to speed reasons
>> 
>
> In this case I think there should be 
> static av_inline_always void ff_idct_xvid_sse2_static(short *block){
> ...
> }
>
> void ff_idct_xvid_sse2(short *block){
>    ff_idct_xvid_sse2_static(block);
> }
>
> And the other two places should call ff_idct_xvid_sse2_static instead

Yes, something like that is the correct solution.  A non-static inline
function should not produce an external definition.  That's what the
spec says.

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



More information about the ffmpeg-devel mailing list