changeset 21923:1658f7d97b27

fix crash with http://sam.zoy.org/zzuf/lol-mplayer.m2v
author henry
date Tue, 16 Jan 2007 09:49:28 +0000
parents 277f0943aa4e
children 422eef67d14a
files libmpeg2/libmpeg-0.4.1.diff libmpeg2/slice.c
diffstat 2 files changed, 31 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libmpeg2/libmpeg-0.4.1.diff	Tue Jan 16 07:12:32 2007 +0000
+++ b/libmpeg2/libmpeg-0.4.1.diff	Tue Jan 16 09:49:28 2007 +0000
@@ -400,6 +400,29 @@
      decoder->offset += 16;						\
      if (decoder->offset == decoder->width) {				\
  	do { /* just so we can use the break statement */		\
+@@ -1604,6 +1604,12 @@
+     }									\
+ } while (0)
+ 
++static void motion_dummy (mpeg2_decoder_t * const decoder,
++                          motion_t * const motion,
++                          mpeg2_mc_fct * const * const table)
++{
++}
++
+ void mpeg2_init_fbuf (mpeg2_decoder_t * decoder, uint8_t * current_fbuf[3],
+ 		      uint8_t * forward_fbuf[3], uint8_t * backward_fbuf[3])
+ {
+@@ -1661,7 +1667,9 @@
+ 
+     if (decoder->mpeg1) {
+ 	decoder->motion_parser[0] = motion_zero_420;
++        decoder->motion_parser[MC_FIELD] = motion_dummy;
+ 	decoder->motion_parser[MC_FRAME] = motion_mp1;
++        decoder->motion_parser[MC_DMV] = motion_dummy;
+ 	decoder->motion_parser[4] = motion_reuse_420;
+     } else if (decoder->picture_structure == FRAME_PICTURE) {
+ 	if (decoder->chroma_format == 0) {
 --- libmpeg2/idct.c	2006-06-16 20:12:26.000000000 +0200
 +++ libmpeg2/idct.c	2006-06-16 20:12:50.000000000 +0200
 @@ -253,7 +253,7 @@
--- a/libmpeg2/slice.c	Tue Jan 16 07:12:32 2007 +0000
+++ b/libmpeg2/slice.c	Tue Jan 16 09:49:28 2007 +0000
@@ -1604,6 +1604,12 @@
     }									\
 } while (0)
 
+static void motion_dummy (mpeg2_decoder_t * const decoder,
+                          motion_t * const motion,
+                          mpeg2_mc_fct * const * const table)
+{
+}
+
 void mpeg2_init_fbuf (mpeg2_decoder_t * decoder, uint8_t * current_fbuf[3],
 		      uint8_t * forward_fbuf[3], uint8_t * backward_fbuf[3])
 {
@@ -1661,7 +1667,9 @@
 
     if (decoder->mpeg1) {
 	decoder->motion_parser[0] = motion_zero_420;
+        decoder->motion_parser[MC_FIELD] = motion_dummy;
 	decoder->motion_parser[MC_FRAME] = motion_mp1;
+        decoder->motion_parser[MC_DMV] = motion_dummy;
 	decoder->motion_parser[4] = motion_reuse_420;
     } else if (decoder->picture_structure == FRAME_PICTURE) {
 	if (decoder->chroma_format == 0) {