Hi,

On Tue, Jul 12, 2011 at 10:54 AM, Diego Biurrun <[email protected]> wrote:
> 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?

Sounds good to me.

Ronald
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to