[FFmpeg-cvslog] r10505 - trunk/libavcodec/h264.c
gpoirier
subversion
Sun Sep 16 12:37:07 CEST 2007
Author: gpoirier
Date: Sun Sep 16 12:37:07 2007
New Revision: 10505
Log:
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
Modified:
trunk/libavcodec/h264.c
Modified: trunk/libavcodec/h264.c
==============================================================================
--- trunk/libavcodec/h264.c (original)
+++ trunk/libavcodec/h264.c Sun Sep 16 12:37:07 2007
@@ -2164,11 +2164,8 @@ static void clone_tables(H264Context *ds
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
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(H264Conte
}
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);
}
More information about the ffmpeg-cvslog
mailing list