]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/cllc.c
avcodec: Constify AVCodecs
[ffmpeg] / libavcodec / cllc.c
index af0f6da2e999593c3b189d245b06b06709ffffbf..41b3a4ef83f3bbbf0569b348091d414435a37063 100644 (file)
@@ -46,19 +46,15 @@ static int read_code_table(CLLCContext *ctx, GetBitContext *gb, VLC *vlc)
 {
     uint8_t symbols[256];
     uint8_t bits[256];
-    uint16_t codes[256];
-    int num_lens, num_codes, num_codes_sum, prefix;
+    int num_lens, num_codes, num_codes_sum;
     int i, j, count;
 
-    prefix        = 0;
     count         = 0;
     num_codes_sum = 0;
 
     num_lens = get_bits(gb, 5);
 
     if (num_lens > VLC_BITS * VLC_DEPTH) {
-        vlc->table = NULL;
-
         av_log(ctx->avctx, AV_LOG_ERROR, "To long VLCs %d\n", num_lens);
         return AVERROR_INVALIDDATA;
     }
@@ -68,8 +64,6 @@ static int read_code_table(CLLCContext *ctx, GetBitContext *gb, VLC *vlc)
         num_codes_sum += num_codes;
 
         if (num_codes_sum > 256) {
-            vlc->table = NULL;
-
             av_log(ctx->avctx, AV_LOG_ERROR,
                    "Too many VLCs (%d) to be read.\n", num_codes_sum);
             return AVERROR_INVALIDDATA;
@@ -78,20 +72,13 @@ static int read_code_table(CLLCContext *ctx, GetBitContext *gb, VLC *vlc)
         for (j = 0; j < num_codes; j++) {
             symbols[count] = get_bits(gb, 8);
             bits[count]    = i + 1;
-            codes[count]   = prefix++;
 
             count++;
         }
-        if (prefix > (65535 - 256)/2) {
-            vlc->table = NULL;
-            return AVERROR_INVALIDDATA;
-        }
-
-        prefix <<= 1;
     }
 
-    return ff_init_vlc_sparse(vlc, VLC_BITS, count, bits, 1, 1,
-                              codes, 2, 2, symbols, 1, 1, 0);
+    return ff_init_vlc_from_lengths(vlc, VLC_BITS, count, bits, 1,
+                                    symbols, 1, 1, 0, 0, ctx->avctx);
 }
 
 /*
@@ -247,7 +234,7 @@ static int decode_argb_frame(CLLCContext *ctx, GetBitContext *gb, AVFrame *pic)
     for (i = 0; i < 4; i++) {
         ret = read_code_table(ctx, gb, &vlc[i]);
         if (ret < 0) {
-            for (j = 0; j <= i; j++)
+            for (j = 0; j < i; j++)
                 ff_free_vlc(&vlc[j]);
 
             av_log(ctx->avctx, AV_LOG_ERROR,
@@ -290,7 +277,7 @@ static int decode_rgb24_frame(CLLCContext *ctx, GetBitContext *gb, AVFrame *pic)
     for (i = 0; i < 3; i++) {
         ret = read_code_table(ctx, gb, &vlc[i]);
         if (ret < 0) {
-            for (j = 0; j <= i; j++)
+            for (j = 0; j < i; j++)
                 ff_free_vlc(&vlc[j]);
 
             av_log(ctx->avctx, AV_LOG_ERROR,
@@ -343,7 +330,7 @@ static int decode_yuv_frame(CLLCContext *ctx, GetBitContext *gb, AVFrame *pic)
     for (i = 0; i < 2; i++) {
         ret = read_code_table(ctx, gb, &vlc[i]);
         if (ret < 0) {
-            for (j = 0; j <= i; j++)
+            for (j = 0; j < i; j++)
                 ff_free_vlc(&vlc[j]);
 
             av_log(ctx->avctx, AV_LOG_ERROR,
@@ -483,19 +470,6 @@ static int cllc_decode_frame(AVCodecContext *avctx, void *data,
     return avpkt->size;
 }
 
-#if HAVE_THREADS
-static int cllc_init_thread_copy(AVCodecContext *avctx)
-{
-    CLLCContext *ctx = avctx->priv_data;
-
-    ctx->avctx            = avctx;
-    ctx->swapped_buf      = NULL;
-    ctx->swapped_buf_size = 0;
-
-    return 0;
-}
-#endif
-
 static av_cold int cllc_decode_close(AVCodecContext *avctx)
 {
     CLLCContext *ctx = avctx->priv_data;
@@ -519,14 +493,13 @@ static av_cold int cllc_decode_init(AVCodecContext *avctx)
     return 0;
 }
 
-AVCodec ff_cllc_decoder = {
+const AVCodec ff_cllc_decoder = {
     .name           = "cllc",
     .long_name      = NULL_IF_CONFIG_SMALL("Canopus Lossless Codec"),
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_CLLC,
     .priv_data_size = sizeof(CLLCContext),
     .init           = cllc_decode_init,
-    .init_thread_copy = ONLY_IF_THREADS_ENABLED(cllc_init_thread_copy),
     .decode         = cllc_decode_frame,
     .close          = cllc_decode_close,
     .capabilities   = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS,