[MEncoder-users] mcdeint=2 segfault

Christian Ebert blacktrash at gmx.net
Sun Apr 12 15:16:39 CEST 2009


* Christian Ebert on Sunday, April 12, 2009 at 14:25:44 +0200
> * R.L. Horn on Sunday, April 12, 2009 at 02:14:59 -0500
>> On Sun, 12 Apr 2009, vmrsss wrote:
>>> On 10 Apr 2009, at 20:56, Christian Ebert wrote:
>>>> 'd love to try it, but:
>>>> 
>>>> cc -Wundef -Wdisabled-optimization -Wno-pointer-sign  
>>>> -Wdeclaration-after-statement -std=gnu99  -mdynamic-no-pic 
>>>> -falign-loops=16 -shared-libgcc -D_LARGEFILE_SOURCE 
>>>> -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -I. -I/usr/local/include 
>>>> -I/sw/include -I/usr/X11/include -I/usr/local/include 
>>>> -I/sw/include/freetype2 -I/sw/include -I/sw/include 
>>>> -I/usr/local/include -I/usr/local/include/libdvdread   -c -o 
>>>> liba52/imdct.o liba52/imdct.c
>>>> In file included from liba52/imdct.c:725:
>>>> liba52/imdct_3dnow.h: In function 'fft_asmb_3dnow':
>>>> liba52/imdct_3dnow.h:257: error: can't find a register in class  
>>>> 'GENERAL_REGS' while reloading 'asm'
>>>> make: *** [liba52/imdct.o] Error 1
>>> 
>>> I had the same problem. This is because the CFLAGS set in configure for 
>>> Darwin have changed recently: adding back "-O4 -fomit-frame-pointer" 
>>> worked for me.
>> 
>> Looking at this a little harder, it does appear that you definitely need  
>> an -O option (which one, apart from -O0, doesn't seem to matter).  
>> Without it, I couldn't get imdct.c to compile with any version of gcc I  
>> have on hand.  I believe they all tend to imply -fomit-frame-pointer, but 
>> that alone isn't sufficient (or, evidently, even necessary):
>> 
>> $(CC) -I. -O -c -o liba52/imdct.o liba52/imdct.c    works
>> 
>> $(CC) -I. -O -fno-omit-frame-pointer -c -o liba52/imdct.o liba52/imdct.c
>>                                                     works
>> 
>> $(CC) -I. -c -o liba52/imdct.o liba52/imdct.c       doesn't work
>> 
>> $(CC) -I. -fomit-frame-pointer -c -o liba52/imdct.o liba52/imdct.c
>>                                                     doesn't work
> 
> Ok. -O4 did not make much sense in Darwin in the first place
> (only up to -O3 is in the manual). But adding adding -O3 or -O to
> --extra-cflags gives a different error:
> 
> cc -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I.. -I.. -Wundef -Wdisabled-optimization -Wno-pointer-sign -Wdeclaration-after-statement -std=gnu99  -mdynamic-no-pic -falign-loops=16 -shared-libgcc -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -I. -O -I/usr/local/include -I/sw/include  -I/usr/X11/include -I/usr/local/include -I/sw/include/freetype2 -I/sw/include -I/sw/include -I/usr/local/include -I/usr/local/include/libdvdread   -c -o h264.o h264.c
> h264.c: In function 'pred_direct_motion':
> h264.c:1046: warning: assignment from incompatible pointer type
> h264.c:1047: warning: assignment from incompatible pointer type
> h264.c: In function 'filter_mb_dir':
> h264.c:6283: warning: initialization from incompatible pointer type
> h264.c:6284: warning: initialization from incompatible pointer type
> cabac.h: In function 'get_cabac_noinline':
> cabac.h:527: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
> make[1]: *** [h264.o] Error 1
> make: *** [libavcodec/libavcodec.a] Error 2

Got it working with --extra-cflags "-O3 -fomit-frame-pointer"

c
-- 
  Was heißt hier Dogma, ich bin Underdogma!
[ What the hell do you mean dogma, I am underdogma. ]
_F R E E_  _V I D E O S_  http://www.blacktrash.org/underdogma/
                          http://www.blacktrash.org/underdogma/index-en.html


More information about the MEncoder-users mailing list