[MPlayer-dev-eng] Intel H.263 (I.263) broken?

Juergen Keil jk at tools.de
Sat Oct 26 20:27:50 CEST 2002


It seems Intel H.263 decoding is currently broken in ffmpeg.

Here's a site with several samples in this format:

  http://www.sugarlandtravel.com/video.html
  http://www.sugarlandtravel.com/video/holamerb.avi


Using mplayer, they (all?) crash with a null pointer access:

(gdb) run /tmp/holamerb.avi
....
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffi263] vfm:ffmpeg (FFmpeg I263 decoder)
....

Program received signal SIGSEGV, Segmentation fault.
decode_slice (s=0x851b800) at h263dec.c:147
147         s->y_dc_scale= s->y_dc_scale_table[ s->qscale ];
(gdb) p s->y_dc_scale_table 
$1 = (UINT8 *) 0x0


The problem seems to be in intel_h263_decode_picture_header(),  this
slightly changed copy of h263_decode_picture_header() does not set
up 'y_dc_scale_table' and 'c_dc_scale_table'.

The following (partial) patch for libavcodec fixes the crash. (partial
because ffmpeg now complains about 'PB frame mode no supported') 


Index: h263.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/h263.c,v
retrieving revision 1.118
diff -u -B -r1.118 h263.c
--- h263.c      25 Oct 2002 00:08:32 -0000      1.118
+++ h263.c      26 Oct 2002 18:18:04 -0000
@@ -4644,6 +4644,10 @@
         skip_bits(&s->gb, 8);
     }
     s->f_code = 1;
+
+    s->y_dc_scale_table=
+    s->c_dc_scale_table= ff_mpeg1_dc_scale_table;
+
     return 0;
 }
 




More information about the MPlayer-dev-eng mailing list