From faf8eca08dcb069e205c720476cad638b36699ef Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Mon, 11 Feb 2013 18:08:45 -0800 Subject: [PATCH] h264: remove clear_blocks call in threading init. Init code in that if statement goes down from 26716 cycles to 26047 cycles, i.e. the removal of the clear_blocks and smaller memcpy() together save around 670 cycles. Signed-off-by: Michael Niedermayer --- libavcodec/h264.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index cbf64c6995..26386b9914 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -1253,7 +1253,9 @@ static int decode_update_thread_context(AVCodecContext *dst, // copy all fields after MpegEnc memcpy(&h->s + 1, &h1->s + 1, - sizeof(H264Context) - sizeof(MpegEncContext)); + offsetof(H264Context, intra_gb) - sizeof(MpegEncContext)); + memcpy(&h->cabac, &h1->cabac, + sizeof(H264Context) - offsetof(H264Context, cabac)); memset(h->sps_buffers, 0, sizeof(h->sps_buffers)); memset(h->pps_buffers, 0, sizeof(h->pps_buffers)); @@ -1273,9 +1275,6 @@ static int decode_update_thread_context(AVCodecContext *dst, h->bipred_scratchpad = NULL; h->thread_context[0] = h; - - s->dsp.clear_blocks(h->mb); - s->dsp.clear_blocks(h->mb + (24 * 16 << h->pixel_shift)); } /* frame_start may not be called for the next thread (if it's decoding