[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