# HG changeset patch # User gpoirier # Date 1189939027 0 # Node ID 070a376d496b48c57dfaa4ec52c442ddd012fd3e # Parent 1eb243819e087e1d6f393990cd4436e8dce1f7cf fix image corruption when with multi-threaded decoding. dequant-tables were not correctly reinitialized in the slave contexts when a PPS came with updated matrices. Patch by Andreas ªÓman %andreas A olebyn P nu% Original thread: date: Sep 16, 2007 6:14 AM subject: [FFmpeg-devel] Parallelized h264 image corruption bug diff -r 1eb243819e08 -r 070a376d496b h264.c --- a/h264.c Sat Sep 15 11:06:27 2007 +0000 +++ b/h264.c Sun Sep 16 10:37:07 2007 +0000 @@ -2164,11 +2164,8 @@ dst->mvd_table[1] = src->mvd_table[1]; dst->direct_table = src->direct_table; - if(!dst->dequant4_coeff[0]) - init_dequant_tables(dst); dst->s.obmc_scratchpad = NULL; ff_h264_pred_init(&dst->hpc, src->s.codec_id); - dst->dequant_coeff_pps= -1; } /** @@ -3522,6 +3519,9 @@ memcpy(dst->long_ref, src->long_ref, sizeof(dst->long_ref)); memcpy(dst->default_ref_list, src->default_ref_list, sizeof(dst->default_ref_list)); memcpy(dst->ref_list, src->ref_list, sizeof(dst->ref_list)); + + memcpy(dst->dequant4_coeff, src->dequant4_coeff, sizeof(src->dequant4_coeff)); + memcpy(dst->dequant8_coeff, src->dequant8_coeff, sizeof(src->dequant8_coeff)); } /** @@ -3589,7 +3589,7 @@ } h->sps = *h0->sps_buffers[h->pps.sps_id]; - if(h->dequant_coeff_pps != pps_id){ + if(h == h0 && h->dequant_coeff_pps != pps_id){ h->dequant_coeff_pps = pps_id; init_dequant_tables(h); }