mjpegdec.c File Reference

MJPEG decoder. More...

#include "libavutil/imgutils.h"
#include "libavutil/avassert.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "copy_block.h"
#include "internal.h"
#include "mjpeg.h"
#include "mjpegdec.h"
#include "jpeglsdec.h"
Include dependency graph for mjpegdec.c:

Go to the source code of this file.

Macros

#define REFINE_BIT(j)
 
#define ZERO_RUN
 

Functions

static int build_vlc (VLC *vlc, const uint8_t *bits_table, const uint8_t *val_table, int nb_codes, int use_static, int is_ac)
 
static void build_basic_mjpeg_vlc (MJpegDecodeContext *s)
 
av_cold int ff_mjpeg_decode_init (AVCodecContext *avctx)
 
int ff_mjpeg_decode_dqt (MJpegDecodeContext *s)
 
int ff_mjpeg_decode_dht (MJpegDecodeContext *s)
 
int ff_mjpeg_decode_sof (MJpegDecodeContext *s)
 
static int mjpeg_decode_dc (MJpegDecodeContext *s, int dc_index)
 
static int decode_block (MJpegDecodeContext *s, int16_t *block, int component, int dc_index, int ac_index, int16_t *quant_matrix)
 
static int decode_dc_progressive (MJpegDecodeContext *s, int16_t *block, int component, int dc_index, int16_t *quant_matrix, int Al)
 
static int decode_block_progressive (MJpegDecodeContext *s, int16_t *block, uint8_t *last_nnz, int ac_index, int16_t *quant_matrix, int ss, int se, int Al, int *EOBRUN)
 
static int decode_block_refinement (MJpegDecodeContext *s, int16_t *block, uint8_t *last_nnz, int ac_index, int16_t *quant_matrix, int ss, int se, int Al, int *EOBRUN)
 
static void handle_rstn (MJpegDecodeContext *s, int nb_components)
 
static int ljpeg_decode_rgb_scan (MJpegDecodeContext *s, int nb_components, int predictor, int point_transform)
 
static int ljpeg_decode_yuv_scan (MJpegDecodeContext *s, int nb_components, int predictor, int point_transform)
 
static av_always_inline void mjpeg_copy_block (MJpegDecodeContext *s, uint8_t *dst, const uint8_t *src, int linesize, int lowres)
 
static int mjpeg_decode_scan (MJpegDecodeContext *s, int nb_components, int Ah, int Al, const uint8_t *mb_bitmask, const AVFrame *reference)
 
static int mjpeg_decode_scan_progressive_ac (MJpegDecodeContext *s, int ss, int se, int Ah, int Al)
 
int ff_mjpeg_decode_sos (MJpegDecodeContext *s, const uint8_t *mb_bitmask, const AVFrame *reference)
 
static int mjpeg_decode_dri (MJpegDecodeContext *s)
 
static int mjpeg_decode_app (MJpegDecodeContext *s)
 
static int mjpeg_decode_com (MJpegDecodeContext *s)
 
static int find_marker (const uint8_t **pbuf_ptr, const uint8_t *buf_end)
 
int ff_mjpeg_find_marker (MJpegDecodeContext *s, const uint8_t **buf_ptr, const uint8_t *buf_end, const uint8_t **unescaped_buf_ptr, int *unescaped_buf_size)
 
int ff_mjpeg_decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 
av_cold int ff_mjpeg_decode_end (AVCodecContext *avctx)
 
static void decode_flush (AVCodecContext *avctx)
 

Detailed Description

MJPEG decoder.

Definition in file mjpegdec.c.

Macro Definition Documentation

#define REFINE_BIT (   j)
Value:
{ \
UPDATE_CACHE(re, &s->gb); \
sign = block[j] >> 15; \
block[j] += SHOW_UBITS(re, &s->gb, 1) * \
((quant_matrix[j] ^ sign) - sign) << Al; \
LAST_SKIP_BITS(re, &s->gb, 1); \
}
const char * s
Definition: avisynth_c.h:668
#define UPDATE_CACHE(name, gb)
Definition: get_bits.h:160
#define LAST_SKIP_BITS(name, gb, num)
Definition: get_bits.h:181
#define SHOW_UBITS(name, gb, num)
Definition: get_bits.h:187
float re
Definition: fft-test.c:64

Definition at line 641 of file mjpegdec.c.

Referenced by decode_block_refinement().

#define ZERO_RUN
Value:
for (; ; i++) { \
if (i > last) { \
i += run; \
if (i > se) { \
av_log(s->avctx, AV_LOG_ERROR, "error count: %d\n", i); \
return -1; \
} \
break; \
} \
j = s->scantable.permutated[i]; \
if (block[j]) \
else if (run-- == 0) \
break; \
}
const char * s
Definition: avisynth_c.h:668
uint8_t run
Definition: svq3.c:136
initialize output if(nPeaks >3)%at least 3 peaks in spectrum for trying to find f0 nf0peaks
void av_log(void *avcl, int level, const char *fmt,...)
Definition: log.c:246
else[Y, I2]
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:148
synthesis window for stochastic i
#define REFINE_BIT(j)
Definition: mjpegdec.c:641
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame This method is called when a frame is wanted on an output For an it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return it should return

Definition at line 649 of file mjpegdec.c.

Referenced by decode_block_refinement().

Function Documentation

static void build_basic_mjpeg_vlc ( MJpegDecodeContext s)
static

Definition at line 67 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_init().

static int build_vlc ( VLC vlc,
const uint8_t bits_table,
const uint8_t val_table,
int  nb_codes,
int  use_static,
int  is_ac 
)
static

Definition at line 44 of file mjpegdec.c.

Referenced by build_basic_mjpeg_vlc(), and ff_mjpeg_decode_dht().

static int decode_block ( MJpegDecodeContext s,
int16_t *  block,
int  component,
int  dc_index,
int  ac_index,
int16_t *  quant_matrix 
)
static

Definition at line 503 of file mjpegdec.c.

Referenced by mjpeg_decode_scan().

static int decode_block_progressive ( MJpegDecodeContext s,
int16_t *  block,
uint8_t last_nnz,
int  ac_index,
int16_t *  quant_matrix,
int  ss,
int  se,
int  Al,
int *  EOBRUN 
)
static

Definition at line 569 of file mjpegdec.c.

Referenced by mjpeg_decode_scan_progressive_ac().

static int decode_block_refinement ( MJpegDecodeContext s,
int16_t *  block,
uint8_t last_nnz,
int  ac_index,
int16_t *  quant_matrix,
int  ss,
int  se,
int  Al,
int *  EOBRUN 
)
static

Definition at line 667 of file mjpegdec.c.

Referenced by mjpeg_decode_scan_progressive_ac().

static int decode_dc_progressive ( MJpegDecodeContext s,
int16_t *  block,
int  component,
int  dc_index,
int16_t *  quant_matrix,
int  Al 
)
static

Definition at line 551 of file mjpegdec.c.

Referenced by mjpeg_decode_scan().

static void decode_flush ( AVCodecContext avctx)
static

Definition at line 1890 of file mjpegdec.c.

int ff_mjpeg_decode_dht ( MJpegDecodeContext s)
int ff_mjpeg_decode_dqt ( MJpegDecodeContext s)

Definition at line 126 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_frame(), mjpegb_decode_frame(), and mxpeg_decode_frame().

av_cold int ff_mjpeg_decode_end ( AVCodecContext avctx)

Definition at line 1867 of file mjpegdec.c.

Referenced by decode_flush(), end(), mxpeg_decode_end(), and sp5x_decode_frame().

int ff_mjpeg_decode_frame ( AVCodecContext avctx,
void data,
int *  got_frame,
AVPacket avpkt 
)

Definition at line 1629 of file mjpegdec.c.

Referenced by decode_flush(), decode_frame(), and sp5x_decode_frame().

av_cold int ff_mjpeg_decode_init ( AVCodecContext avctx)

Definition at line 83 of file mjpegdec.c.

Referenced by decode_flush(), init(), mxpeg_decode_init(), and sp5x_decode_frame().

int ff_mjpeg_decode_sof ( MJpegDecodeContext s)

Definition at line 213 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_frame(), mjpegb_decode_frame(), and mxpeg_decode_frame().

int ff_mjpeg_decode_sos ( MJpegDecodeContext s,
const uint8_t mb_bitmask,
const AVFrame reference 
)

Definition at line 1177 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_frame(), mjpegb_decode_frame(), and mxpeg_decode_frame().

int ff_mjpeg_find_marker ( MJpegDecodeContext s,
const uint8_t **  buf_ptr,
const uint8_t buf_end,
const uint8_t **  unescaped_buf_ptr,
int *  unescaped_buf_size 
)

Definition at line 1541 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_frame(), and mxpeg_decode_frame().

static int find_marker ( const uint8_t **  pbuf_ptr,
const uint8_t buf_end 
)
static

Definition at line 1517 of file mjpegdec.c.

Referenced by ff_mjpeg_find_marker().

static void handle_rstn ( MJpegDecodeContext s,
int  nb_components 
)
static

Definition at line 732 of file mjpegdec.c.

Referenced by mjpeg_decode_scan(), and mjpeg_decode_scan_progressive_ac().

static int ljpeg_decode_rgb_scan ( MJpegDecodeContext s,
int  nb_components,
int  predictor,
int  point_transform 
)
static

Definition at line 762 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_sos().

static int ljpeg_decode_yuv_scan ( MJpegDecodeContext s,
int  nb_components,
int  predictor,
int  point_transform 
)
static

Definition at line 849 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_sos().

static av_always_inline void mjpeg_copy_block ( MJpegDecodeContext s,
uint8_t dst,
const uint8_t src,
int  linesize,
int  lowres 
)
static

Definition at line 992 of file mjpegdec.c.

Referenced by mjpeg_decode_scan().

static int mjpeg_decode_app ( MJpegDecodeContext s)
static

Definition at line 1346 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_frame().

static int mjpeg_decode_com ( MJpegDecodeContext s)
static

Definition at line 1482 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_frame().

static int mjpeg_decode_dc ( MJpegDecodeContext s,
int  dc_index 
)
inlinestatic
static int mjpeg_decode_dri ( MJpegDecodeContext s)
static

Definition at line 1334 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_frame().

static int mjpeg_decode_scan ( MJpegDecodeContext s,
int  nb_components,
int  Ah,
int  Al,
const uint8_t mb_bitmask,
const AVFrame reference 
)
static

Definition at line 1008 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_sos().

static int mjpeg_decode_scan_progressive_ac ( MJpegDecodeContext s,
int  ss,
int  se,
int  Ah,
int  Al 
)
static

Definition at line 1119 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_sos().