[FFmpeg-devel] [PATCH 2/4] avcodec/vp3: Avoid code duplication when initializing coeff_vlcs

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Sat May 8 04:27:15 EEST 2021


Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
 libavcodec/vp3.c | 20 +++++---------------
 1 file changed, 5 insertions(+), 15 deletions(-)

diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c
index 9aa84e83b7..ef443dbf22 100644
--- a/libavcodec/vp3.c
+++ b/libavcodec/vp3.c
@@ -2408,6 +2408,8 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx)
     s->fragment_start[2] = y_fragment_count + c_fragment_count;
 
     if (!s->theora_tables) {
+        const uint8_t (*bias_tabs)[32][2];
+
         for (i = 0; i < 64; i++) {
             s->coded_dc_scale_factor[0][i] = s->version < 2 ? vp31_dc_scale_factor[i] : vp4_y_dc_scale_factor[i];
             s->coded_dc_scale_factor[1][i] = s->version < 2 ? vp31_dc_scale_factor[i] : vp4_uv_dc_scale_factor[i];
@@ -2428,27 +2430,15 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx)
         }
 
         /* init VLC tables */
-        if (s->version < 2) {
-            for (i = 0; i < FF_ARRAY_ELEMS(s->coeff_vlc); i++) {
-                ret = ff_init_vlc_from_lengths(&s->coeff_vlc[i], 11, 32,
-                                               &vp3_bias[i][0][1], 2,
-                                               &vp3_bias[i][0][0], 2, 1,
-                                               0, 0, avctx);
-                if (ret < 0)
-                    return ret;
-            }
-#if CONFIG_VP4_DECODER
-        } else { /* version >= 2 */
+        bias_tabs = CONFIG_VP4_DECODER && s->version >= 2 ? vp4_bias : vp3_bias;
             for (i = 0; i < FF_ARRAY_ELEMS(s->coeff_vlc); i++) {
                 ret = ff_init_vlc_from_lengths(&s->coeff_vlc[i], 11, 32,
-                                               &vp4_bias[i][0][1], 2,
-                                               &vp4_bias[i][0][0], 2, 1,
+                                               &bias_tabs[i][0][1], 2,
+                                               &bias_tabs[i][0][0], 2, 1,
                                                0, 0, avctx);
                 if (ret < 0)
                     return ret;
             }
-#endif
-        }
     } else {
         for (i = 0; i < FF_ARRAY_ELEMS(s->coeff_vlc); i++) {
             const HuffTable *tab = &s->huffman_table[i];
-- 
2.27.0



More information about the ffmpeg-devel mailing list