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

Reply via email to