On Tue, Jul 12, 2011 at 10:42:58AM -0700, Ronald S. Bultje wrote: > > On Tue, Jul 12, 2011 at 10:39 AM, Diego Biurrun <[email protected]> wrote: > > On Tue, Jul 12, 2011 at 05:16:44PM +0200, Ronald S. Bultje wrote: > >> Module: libav > >> Branch: master > >> Commit: c90a2538a0bb4937cdecb852fadc3f98899624a9 > >> > >> Author: Ronald S. Bultje <[email protected]> > >> Committer: Ronald S. Bultje <[email protected]> > >> Date: Tue Jul 12 08:15:55 2011 -0700 > >> > >> h264: move h264_mvpred.h include. > >> > >> Fixes the following compile error with darwin/gcc-4.2.1: > >> In file included from libavcodec/error_resilience.c:33: > >> libavcodec/h264.h: In function ‘decode_mb_skip’: > >> libavcodec/h264.h:773: error: ‘always_inline’ function could not be > >> inlined in call to ‘pred_pskip_motion’: the function body must appear > >> before caller > >> libavcodec/h264.h:1334: error: called from here > > > > I'm afraid it's not quite so easy ... > > > >> --- a/libavcodec/h264.h > >> +++ b/libavcodec/h264.h > >> @@ -770,7 +770,7 @@ static av_always_inline int get_chroma_qp(H264Context > >> *h, int t, int qscale){ > >> return h->pps.chroma_qp_table[t][qscale]; > >> } > >> > >> -static av_always_inline void pred_pskip_motion(H264Context * const h); > >> +#include "h264_mvpred.h" //For pred_pskip_motion() > >> > >> static void fill_decode_neighbors(H264Context *h, int mb_type){ > >> MpegEncContext * const s = &h->s; > >> @@ -1341,6 +1341,4 @@ static void av_unused decode_mb_skip(H264Context *h){ > >> h->prev_mb_skipped= 1; > >> } > >> > >> -#include "h264_mvpred.h" //For pred_pskip_motion() > >> - > >> #endif /* AVCODEC_H264_H */ > > > > ... since now 'make checkheaders' is broken: > > > > biurrun@passion:~/src/libav $ make checkheaders > > CC libavcodec/h264_mvpred.ho > > In file included from libavcodec/h264_mvpred.h:33:0: > > libavcodec/h264.h: In function ‘decode_mb_skip’: > > libavcodec/h264.h:1334:9: error: implicit declaration of function > > ‘pred_pskip_motion’ [-Werror=implicit-function-declaration] > > libavcodec/h264_mvpred.h: At top level: > > libavcodec/h264_mvpred.h:235:30: warning: conflicting types for > > ‘pred_pskip_motion’ [enabled by default] > > libavcodec/h264_mvpred.h:235:30: error: static declaration of > > ‘pred_pskip_motion’ follows non-static declaration > > libavcodec/h264.h:1334:9: note: previous implicit declaration of > > ‘pred_pskip_motion’ was here > > cc1: some warnings being treated as errors > > > > make: *** [libavcodec/h264_mvpred.ho] Error 1 > > Don't include h264_mvpred.h directly, instead include h264.h?
Umm, it is h264_mvpred.h itself that is failing to compile since it has circular dependencies with h264.h. A possible solution would be to move decode_mb_skip() to another header. Do you have a suitable suggestion? Diego _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
