|
|
|
@ -1265,8 +1265,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); |
|
|
|
|
|
|
|
|
@ -1313,6 +1311,11 @@ end: |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
@ -1339,16 +1342,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) |
|
|
|
|
}; |
|
|
|
|