#define AVCODEC_MJPEGDEC_H
#include "libavutil/log.h"
+#include "libavutil/mem_internal.h"
#include "libavutil/pixdesc.h"
#include "libavutil/stereo3d.h"
#define MAX_COMPONENTS 4
+typedef struct ICCEntry {
+ uint8_t *data;
+ int length;
+} ICCEntry;
+
+struct JLSState;
+
typedef struct MJpegDecodeContext {
AVClass *class;
AVCodecContext *avctx;
GetBitContext gb;
int buf_size;
+ AVPacket *pkt;
+
int start_code; /* current start code */
int buffer_size;
uint8_t *buffer;
VLC vlcs[3][4];
int qscale[4]; ///< quantizer scale calculated from quant_matrixes
- int org_height; /* size given at codec init */
+ int orig_height; /* size given at codec init */
int first_picture; /* true if decoding first picture */
int interlaced; /* true if interlaced */
int bottom_field; /* true if bottom field */
int lossless;
int ls;
int progressive;
+ int bayer; /* true if it's a bayer-encoded JPEG embedded in a DNG */
int rgb;
uint8_t upscale_h[4];
uint8_t upscale_v[4];
const AVPixFmtDescriptor *pix_desc;
- uint8_t **iccdata;
- int *iccdatalens;
+ ICCEntry *iccentries;
int iccnum;
int iccread;
+ AVFrame *smv_frame;
+ int smv_frames_per_jpeg;
+ int smv_next_frame;
+
// Raw stream data for hwaccel use.
const uint8_t *raw_image_buffer;
size_t raw_image_buffer_size;
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,
+ const uint8_t *val_table, int is_ac, void *logctx);
int ff_mjpeg_decode_init(AVCodecContext *avctx);
int ff_mjpeg_decode_end(AVCodecContext *avctx);
-int ff_mjpeg_decode_frame(AVCodecContext *avctx,
- void *data, int *got_frame,
- AVPacket *avpkt);
+int ff_mjpeg_receive_frame(AVCodecContext *avctx, AVFrame *frame);
int ff_mjpeg_decode_dqt(MJpegDecodeContext *s);
int ff_mjpeg_decode_dht(MJpegDecodeContext *s);
int ff_mjpeg_decode_sof(MJpegDecodeContext *s);
const uint8_t **buf_ptr, const uint8_t *buf_end,
const uint8_t **unescaped_buf_ptr, int *unescaped_buf_size);
+int ff_sp5x_process_packet(AVCodecContext *avctx, AVPacket *avpkt);
+
#endif /* AVCODEC_MJPEGDEC_H */