mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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 Originally committed as revision 10505 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
8765775724
commit
50c21814b9
@ -2164,11 +2164,8 @@ static void clone_tables(H264Context *dst, H264Context *src){
|
||||
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 @@ static void clone_slice(H264Context *dst, H264Context *src)
|
||||
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 @@ static int decode_slice_header(H264Context *h, H264Context *h0){
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user