[FFmpeg-devel] [PATCH 3/3] avcodec/mpeg12dec: Optimize reading mpeg2 intra escape codes
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Thu Oct 8 22:53:13 EEST 2020
Said escape code is only six bits long, so that one has at least 25 - 6
bits in the bitstream reader's cache after reading it; therefore the
whole following 18 bits (containing the actual code) are already in the
bitstream reader's cache, making it unnecessary to reload the cache.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
---
libavcodec/mpeg12dec.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index 7b448d3648..3be90d7f25 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -524,10 +524,9 @@ static inline int mpeg2_decode_block_intra(MpegEncContext *s,
} else {
/* escape */
run = SHOW_UBITS(re, &s->gb, 6) + 1;
- LAST_SKIP_BITS(re, &s->gb, 6);
- UPDATE_CACHE(re, &s->gb);
+ SKIP_BITS(re, &s->gb, 6);
level = SHOW_SBITS(re, &s->gb, 12);
- SKIP_BITS(re, &s->gb, 12);
+ LAST_SKIP_BITS(re, &s->gb, 12);
i += run;
if (i > MAX_INDEX)
break;
@@ -606,10 +605,9 @@ static inline int mpeg2_fast_decode_block_intra(MpegEncContext *s,
} else {
/* escape */
run = SHOW_UBITS(re, &s->gb, 6) + 1;
- LAST_SKIP_BITS(re, &s->gb, 6);
- UPDATE_CACHE(re, &s->gb);
+ SKIP_BITS(re, &s->gb, 6);
level = SHOW_SBITS(re, &s->gb, 12);
- SKIP_BITS(re, &s->gb, 12);
+ LAST_SKIP_BITS(re, &s->gb, 12);
i += run;
j = scantable[i];
if (level < 0) {
--
2.25.1
More information about the ffmpeg-devel
mailing list