comparison libmpeg2/libmpeg2_changes.diff @ 31860:32a214ee10e5

Restore hunk previously removed in r31354. This fixes a crash with http://samples.mplayerhq.hu/MPEG2/libmpeg2-crash.vob
author diego
date Fri, 06 Aug 2010 23:44:31 +0000
parents 60709ef498be
children
comparison
equal deleted inserted replaced
31859:44f8d08901fe 31860:32a214ee10e5
126 if (accel & MPEG2_ACCEL_PPC_ALTIVEC) { 126 if (accel & MPEG2_ACCEL_PPC_ALTIVEC) {
127 mpeg2_cpu_state_save = state_save_altivec; 127 mpeg2_cpu_state_save = state_save_altivec;
128 mpeg2_cpu_state_restore = state_restore_altivec; 128 mpeg2_cpu_state_restore = state_restore_altivec;
129 --- libmpeg2/header.c 2006-06-16 20:12:26.000000000 +0200 129 --- libmpeg2/header.c 2006-06-16 20:12:26.000000000 +0200
130 +++ libmpeg2/header.c 2006-06-16 20:12:50.000000000 +0200 130 +++ libmpeg2/header.c 2006-06-16 20:12:50.000000000 +0200
131 @@ -872,6 +879,7 @@ 131 @@ -872,6 +876,7 @@
132 mpeg2dec->scaled[idx] = decoder->q_scale_type; 132 mpeg2dec->scaled[idx] = decoder->q_scale_type;
133 for (i = 0; i < 32; i++) { 133 for (i = 0; i < 32; i++) {
134 k = decoder->q_scale_type ? non_linear_scale[i] : (i << 1); 134 k = decoder->q_scale_type ? non_linear_scale[i] : (i << 1);
135 + decoder->quantizer_scales[i] = k; 135 + decoder->quantizer_scales[i] = k;
136 for (j = 0; j < 64; j++) 136 for (j = 0; j < 64; j++)
353 + char* quant_store; 353 + char* quant_store;
354 + int quant_stride; 354 + int quant_stride;
355 }; 355 };
356 356
357 typedef struct { 357 typedef struct {
358 @@ -226,7 +238,7 @@ 358 @@ -226,7 +235,7 @@
359 }; 359 };
360 360
361 typedef struct { 361 typedef struct {
362 -#ifdef ARCH_PPC 362 -#ifdef ARCH_PPC
363 +#if ARCH_PPC 363 +#if ARCH_PPC
397 + = decoder->quantizer_scale; \ 397 + = decoder->quantizer_scale; \
398 + } \ 398 + } \
399 decoder->offset += 16; \ 399 decoder->offset += 16; \
400 if (decoder->offset == decoder->width) { \ 400 if (decoder->offset == decoder->width) { \
401 do { /* just so we can use the break statement */ \ 401 do { /* just so we can use the break statement */ \
402 --- libmpeg2/decode.c (revision 31938)
403 +++ libmpeg2/decode.c (working copy)
404 @@ -345,6 +345,13 @@
405 fbuf->buf[1] = buf[1];
406 fbuf->buf[2] = buf[2];
407 fbuf->id = id;
408 + // HACK! FIXME! At first I frame, copy pointers to prediction frame too!
409 + if (mpeg2dec->custom_fbuf && !mpeg2dec->fbuf[1]->buf[0]) {
410 + mpeg2dec->fbuf[1]->buf[0] = buf[0];
411 + mpeg2dec->fbuf[1]->buf[1] = buf[1];
412 + mpeg2dec->fbuf[1]->buf[2] = buf[2];
413 + mpeg2dec->fbuf[1]->id = NULL;
414 + }
415 }
416
417 void mpeg2_custom_fbuf (mpeg2dec_t * mpeg2dec, int custom_fbuf)