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

Pavel Pavlov pavel
Tue Mar 9 02:41:34 CET 2010


> >> 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.
> 

See attached patch.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: ff_idct_xvid_sse2-cannot-be-inline2.patch
Type: application/octet-stream
Size: 1063 bytes
Desc: ff_idct_xvid_sse2-cannot-be-inline2.patch
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100308/59579008/attachment.obj>



More information about the ffmpeg-devel mailing list