OSDN Git Service

jpeg2000dec: initialize static data just once
authorJanne Grunau <janne-libav@jannau.net>
Mon, 6 May 2013 20:42:27 +0000 (22:42 +0200)
committerJanne Grunau <janne-libav@jannau.net>
Mon, 6 May 2013 20:45:47 +0000 (22:45 +0200)
libavcodec/jpeg2000dec.c

index 97e706a..11211d3 100644 (file)
@@ -1264,8 +1264,6 @@ static int jpeg2000_decode_frame(AVCodecContext *avctx, void *data,
     // reduction factor, i.e number of resolution levels to skip
     s->reduction_factor = s->lowres;
 
-    ff_jpeg2000_init_tier1_luts();
-
     if (s->buf_end - s->buf < 2)
         return AVERROR(EINVAL);
 
@@ -1308,6 +1306,11 @@ end:
     return ret ? ret : s->buf - s->buf_start;
 }
 
+static void jpeg2000_init_static_data(AVCodec *codec)
+{
+    ff_jpeg2000_init_tier1_luts();
+}
+
 #define OFFSET(x) offsetof(Jpeg2000DecoderContext, x)
 #define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
 
@@ -1334,16 +1337,17 @@ static const AVClass class = {
 };
 
 AVCodec ff_jpeg2000_decoder = {
-    .name           = "jpeg2000",
-    .long_name      = NULL_IF_CONFIG_SMALL("JPEG 2000"),
-    .type           = AVMEDIA_TYPE_VIDEO,
-    .id             = AV_CODEC_ID_JPEG2000,
-    .capabilities   = CODEC_CAP_FRAME_THREADS,
-    .priv_data_size = sizeof(Jpeg2000DecoderContext),
-    .decode         = jpeg2000_decode_frame,
-    .priv_class     = &class,
-    .pix_fmts       = (enum PixelFormat[]) { AV_PIX_FMT_XYZ12,
-                                             AV_PIX_FMT_GRAY8,
-                                             -1 },
-    .profiles       = NULL_IF_CONFIG_SMALL(profiles)
+    .name             = "jpeg2000",
+    .long_name        = NULL_IF_CONFIG_SMALL("JPEG 2000"),
+    .type             = AVMEDIA_TYPE_VIDEO,
+    .id               = AV_CODEC_ID_JPEG2000,
+    .capabilities     = CODEC_CAP_FRAME_THREADS,
+    .priv_data_size   = sizeof(Jpeg2000DecoderContext),
+    .init_static_data = jpeg2000_init_static_data,
+    .decode           = jpeg2000_decode_frame,
+    .priv_class       = &class,
+    .pix_fmts         = (enum PixelFormat[]) { AV_PIX_FMT_XYZ12,
+                                               AV_PIX_FMT_GRAY8,
+                                               -1 },
+    .profiles         = NULL_IF_CONFIG_SMALL(profiles)
 };