mirror of https://git.ffmpeg.org/ffmpeg.git
h264: avoid pointless copying of ref lists
ref_list is constructed from other fields per slice when needed, so do not copy it for both frame and slice threading. default_ref_list is constructed per frame and still needs to be copied to per-slice contexts for slice threading, but a copy is not needed for frame threading.
This commit is contained in:
parent
b90632d596
commit
940b8b5861
|
@ -1253,7 +1253,7 @@ static int decode_update_thread_context(AVCodecContext *dst,
|
|||
|
||||
// reference lists
|
||||
copy_fields(h, h1, ref_count, list_count);
|
||||
copy_fields(h, h1, ref_list, intra_gb);
|
||||
copy_fields(h, h1, ref2frm, intra_gb);
|
||||
copy_fields(h, h1, short_ref, cabac_init_idc);
|
||||
|
||||
copy_picture_range(h->short_ref, h1->short_ref, 32, s, s1);
|
||||
|
@ -2369,7 +2369,6 @@ static int clone_slice(H264Context *dst, H264Context *src)
|
|||
memcpy(dst->short_ref, src->short_ref, sizeof(dst->short_ref));
|
||||
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));
|
||||
|
|
|
@ -481,9 +481,9 @@ typedef struct H264Context {
|
|||
|
||||
int redundant_pic_count;
|
||||
|
||||
Picture default_ref_list[2][32]; ///< base reference list for all slices of a coded picture
|
||||
Picture *short_ref[32];
|
||||
Picture *long_ref[32];
|
||||
Picture default_ref_list[2][32]; ///< base reference list for all slices of a coded picture
|
||||
Picture *delayed_pic[MAX_DELAYED_PIC_COUNT + 2]; // FIXME size?
|
||||
int last_pocs[MAX_DELAYED_PIC_COUNT];
|
||||
Picture *next_output_pic;
|
||||
|
|
Loading…
Reference in New Issue