[Ffmpeg-devel] HEADS UP mpeg4 encoder seems to have recently been broken since 8517

Marc Hoffman mmh
Sat Mar 31 14:56:43 CEST 2007


Marc Hoffman writes:
 > 

(gdb) r -i ~/vid/sman.mp4 x.mp4
The program being debugged has been started already.
Start it from the beginning? (y or n) y
`/Users/mmh/ffmpeg/host/ffmpeg_g' has changed; re-reading symbols.
Starting program: /Users/mmh/ffmpeg/host/ffmpeg_g -i ~/vid/sman.mp4 x.mp4
FFmpeg version SVN-r8565, Copyright (c) 2000-2007 Fabrice Bellard, et al.
  configuration: --enable-gpl --enable-liba52 --enable-libfaac --enable-x264 --enable-libfaad --enable-pp --enable-swscaler --enable-libmp3lame
  libavutil version: 49.4.0
  libavcodec version: 51.40.2
  libavformat version: 51.11.0
  built on Mar 31 2007 08:15:31, gcc: 4.0.1 (Apple Computer, Inc. build 5367)
Output #0, mp4, to 'x.mp4':
  Stream #0.0: Video: mpeg4, yuv420p, 352x240, q=2-31, 200 kb/s, 25.00 fps(c)
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding

Breakpoint 2, av_encode (output_files=0x489100, nb_output_files=1, input_files=0x489260, nb_input_files=0, stream_maps=0xffffff00, nb_stream_maps=0) at /Users/mmh/ffmpeg/ffmpeg-svn/ffmpeg.c:1882
(gdb) dis 2
(gdb) c
Continuing.

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
0x001a0167 in ff_snow_inner_add_yblock (obmc=0x4933 "h\001", obmc_stride=127, block=0xffffffff, b_w=7, b_h=42671852, src_x=0, src_y=0, src_stride=80, sb=0x3000001, add=19924256, dst8=0x1 <Address 0x1 out of bounds>) at /Users/mmh/ffmpeg/ffmpeg-svn/libavcodec/snow.c:2534
(gdb) p sb
$1 = (slice_buffer *) 0x3000001
(gdb) 

void ff_snow_inner_add_yblock(const uint8_t *obmc, const int obmc_stride, uint8_t * * block, int b_w, int b_h,
                              int src_x, int src_y, int src_stride, slice_buffer * sb, int add, uint8_t * dst8){
    int y, x;
    DWTELEM * dst;
    for(y=0; y<b_h; y++){
        //FIXME ugly missue of obmc_stride
        const uint8_t *obmc1= obmc + y*obmc_stride;
        const uint8_t *obmc2= obmc1+ (obmc_stride>>1);
        const uint8_t *obmc3= obmc1+ obmc_stride*(obmc_stride>>1);
        const uint8_t *obmc4= obmc3+ (obmc_stride>>1);
>boom>>        dst = slice_buffer_get_line(sb, src_y + y);
        for(x=0; x<b_w; x++){
            int v=   obmc1[x] * block[3][x + y*src_stride]
                    +obmc2[x] * block[2][x + y*src_stride]
                    +obmc3[x] * block[1][x + y*src_stride]
                    +obmc4[x] * block[0][x + y*src_stride];






More information about the ffmpeg-devel mailing list