[FFmpeg-cvslog] h264: remove clear_blocks call in threading init.

Ronald S. Bultje git at videolan.org
Thu Feb 14 00:43:18 CET 2013


ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Mon Feb 11 18:08:45 2013 -0800| [faf8eca08dcb069e205c720476cad638b36699ef] | committer: Michael Niedermayer

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 <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=faf8eca08dcb069e205c720476cad638b36699ef
---

 libavcodec/h264.c |    7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index cbf64c6..26386b9 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



More information about the ffmpeg-cvslog mailing list