*/
//#define JLS_BROKEN
-typedef struct JpegLSDecodeContext {
- MJpegDecodeContext mjpeg;
- JLSState state;
-} JpegLSDecodeContext;
-
/**
* Decode LSE block with initialization parameters
*/
{
int i, t = 0;
uint8_t *zero, *last, *cur;
- JLSState *const state = &((JpegLSDecodeContext*)s)->state;
+ JLSState *state = s->jls_state;
int off = 0, stride = 1, width, shift, ret = 0;
int decoded_height = 0;
+ if (!state) {
+ state = av_malloc(sizeof(*state));
+ if (!state)
+ return AVERROR(ENOMEM);
+ s->jls_state = state;
+ }
zero = av_mallocz(s->picture_ptr->linesize[0]);
if (!zero)
return AVERROR(ENOMEM);
.long_name = NULL_IF_CONFIG_SMALL("JPEG-LS"),
.type = AVMEDIA_TYPE_VIDEO,
.id = AV_CODEC_ID_JPEGLS,
- .priv_data_size = sizeof(JpegLSDecodeContext),
+ .priv_data_size = sizeof(MJpegDecodeContext),
.init = ff_mjpeg_decode_init,
.close = ff_mjpeg_decode_end,
.receive_frame = ff_mjpeg_receive_frame,
int length;
} ICCEntry;
+struct JLSState;
+
typedef struct MJpegDecodeContext {
AVClass *class;
AVCodecContext *avctx;
enum AVPixelFormat hwaccel_sw_pix_fmt;
enum AVPixelFormat hwaccel_pix_fmt;
void *hwaccel_picture_private;
+ struct JLSState *jls_state;
} MJpegDecodeContext;
int ff_mjpeg_build_vlc(VLC *vlc, const uint8_t *bits_table,