[FFmpeg-cvslog] avcodec/speedhqenc: Avoid unnecessary indirection
Andreas Rheinhardt
git at videolan.org
Thu Oct 27 16:52:42 EEST 2022
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Sat Oct 22 00:39:13 2022 +0200| [18412c76e6f087d15a26864999fd2d63df72cdc6] | committer: Andreas Rheinhardt
avcodec/speedhqenc: Avoid unnecessary indirection
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=18412c76e6f087d15a26864999fd2d63df72cdc6
---
libavcodec/speedhq.c | 4 ++--
libavcodec/speedhq.h | 7 +++++++
libavcodec/speedhqenc.c | 8 ++++----
3 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/libavcodec/speedhq.c b/libavcodec/speedhq.c
index ee37573789..2d6e8ca949 100644
--- a/libavcodec/speedhq.c
+++ b/libavcodec/speedhq.c
@@ -24,7 +24,7 @@
#include "speedhq.h"
/* AC codes: Very similar but not identical to MPEG-2. */
-static const uint16_t speedhq_vlc[123][2] = {
+const uint16_t ff_speedhq_vlc_table[SPEEDHQ_RL_NB_ELEMS + 2][2] = {
{0x0001, 2}, {0x0003, 3}, {0x000E, 4}, {0x0007, 5},
{0x0017, 5}, {0x0028, 6}, {0x0008, 6}, {0x006F, 7},
{0x001F, 7}, {0x00C4, 8}, {0x0044, 8}, {0x005F, 8},
@@ -101,7 +101,7 @@ static const uint8_t speedhq_run[121] = {
RLTable ff_rl_speedhq = {
121,
121,
- speedhq_vlc,
+ ff_speedhq_vlc_table,
speedhq_run,
speedhq_level,
};
diff --git a/libavcodec/speedhq.h b/libavcodec/speedhq.h
index 94879eda65..78f11ac6ab 100644
--- a/libavcodec/speedhq.h
+++ b/libavcodec/speedhq.h
@@ -21,9 +21,16 @@
#ifndef AVCODEC_SPEEDHQ_H
#define AVCODEC_SPEEDHQ_H
+#include <stdint.h>
#include "rl.h"
#include "libavutil/attributes_internal.h"
+#define SPEEDHQ_RL_NB_ELEMS 121
+
+FF_VISIBILITY_PUSH_HIDDEN
+extern const uint16_t ff_speedhq_vlc_table[SPEEDHQ_RL_NB_ELEMS + 2][2];
+
extern RLTable attribute_visibility_hidden ff_rl_speedhq;
+FF_VISIBILITY_POP_HIDDEN
#endif /* AVCODEC_SPEEDHQ_H */
diff --git a/libavcodec/speedhqenc.c b/libavcodec/speedhqenc.c
index 6cf40aac2d..58b5e858a8 100644
--- a/libavcodec/speedhqenc.c
+++ b/libavcodec/speedhqenc.c
@@ -222,11 +222,11 @@ static void encode_block(MpegEncContext *s, int16_t *block, int n)
if (alevel <= ff_rl_speedhq.max_level[0][run]) {
code = ff_rl_speedhq.index_run[0][run] + alevel - 1;
/* store the VLC & sign at once */
- put_bits_le(&s->pb, ff_rl_speedhq.table_vlc[code][1] + 1,
- ff_rl_speedhq.table_vlc[code][0] + (sign << ff_rl_speedhq.table_vlc[code][1]));
+ put_bits_le(&s->pb, ff_speedhq_vlc_table[code][1] + 1,
+ ff_speedhq_vlc_table[code][0] | (sign << ff_speedhq_vlc_table[code][1]));
} else {
/* escape seems to be pretty rare <5% so I do not optimize it;
- * the values correspond to ff_rl_speedhq.table_vlc[121] */
+ * the values correspond to ff_speedhq_vlc_table[121] */
put_bits_le(&s->pb, 6, 32);
/* escape: only clip in this case */
put_bits_le(&s->pb, 6, run);
@@ -235,7 +235,7 @@ static void encode_block(MpegEncContext *s, int16_t *block, int n)
last_non_zero = i;
}
}
- /* end of block; the values correspond to ff_rl_speedhq.table_vlc[122] */
+ /* end of block; the values correspond to ff_speedhq_vlc_table[122] */
put_bits_le(&s->pb, 4, 6);
}
More information about the ffmpeg-cvslog
mailing list