libavcodec/mjpegdec.c File Reference

MJPEG decoder. More...

#include <assert.h>
#include "libavutil/imgutils.h"
#include "libavutil/avassert.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "dsputil.h"
#include "mjpeg.h"
#include "mjpegdec.h"
#include "jpeglsdec.h"

Go to the source code of this file.

Defines

#define REFINE_BIT(j)
#define ZERO_RUN
#define OFFSET(x)   offsetof(MJpegDecodeContext, x)
#define VD   AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM

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, DCTELEM *block, int component, int dc_index, int ac_index, int16_t *quant_matrix)
static int decode_dc_progressive (MJpegDecodeContext *s, DCTELEM *block, int component, int dc_index, int16_t *quant_matrix, int Al)
static int decode_block_progressive (MJpegDecodeContext *s, DCTELEM *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, DCTELEM *block, uint8_t *last_nnz, int ac_index, int16_t *quant_matrix, int ss, int se, int Al, int *EOBRUN)
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 predictor, int point_transform)
static av_always_inline void mjpeg_copy_block (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 *data_size, AVPacket *avpkt)
av_cold int ff_mjpeg_decode_end (AVCodecContext *avctx)

Variables

static const AVOption options []
static const AVClass mjpegdec_class
AVCodec ff_mjpeg_decoder
AVCodec ff_thp_decoder


Detailed Description

MJPEG decoder.

Definition in file mjpegdec.c.


Define Documentation

#define OFFSET (  )     offsetof(MJpegDecodeContext, x)

Definition at line 1807 of file mjpegdec.c.

#define REFINE_BIT (  ) 

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);                                  \
}

Definition at line 621 of file mjpegdec.c.

Referenced by decode_block_refinement().

#define VD   AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM

Definition at line 1808 of file mjpegdec.c.

#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])                                                   \
        REFINE_BIT(j)                                               \
    else if (run-- == 0)                                            \
        break;                                                      \
}

Definition at line 629 of file mjpegdec.c.

Referenced by decode_block_refinement().


Function Documentation

static void build_basic_mjpeg_vlc ( MJpegDecodeContext s  )  [static]

Definition at line 69 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 46 of file mjpegdec.c.

Referenced by build_basic_mjpeg_vlc(), and ff_mjpeg_decode_dht().

static int decode_block ( MJpegDecodeContext s,
DCTELEM block,
int  component,
int  dc_index,
int  ac_index,
int16_t quant_matrix 
) [static]

Definition at line 483 of file mjpegdec.c.

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

Definition at line 549 of file mjpegdec.c.

Referenced by mjpeg_decode_scan_progressive_ac().

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

Definition at line 647 of file mjpegdec.c.

Referenced by mjpeg_decode_scan_progressive_ac().

static int decode_dc_progressive ( MJpegDecodeContext s,
DCTELEM block,
int  component,
int  dc_index,
int16_t quant_matrix,
int  Al 
) [static]

Definition at line 531 of file mjpegdec.c.

Referenced by mjpeg_decode_scan().

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 1783 of file mjpegdec.c.

Referenced by mxpeg_decode_end().

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

Definition at line 1578 of file mjpegdec.c.

Referenced by sp5x_decode_frame().

av_cold int ff_mjpeg_decode_init ( AVCodecContext avctx  ) 

Definition at line 85 of file mjpegdec.c.

Referenced by mxpeg_decode_init().

int ff_mjpeg_decode_sof ( MJpegDecodeContext s  ) 

Definition at line 212 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 1142 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 1494 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 1470 of file mjpegdec.c.

Referenced by ff_mjpeg_find_marker().

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

Definition at line 712 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_sos().

static int ljpeg_decode_yuv_scan ( MJpegDecodeContext s,
int  predictor,
int  point_transform 
) [static]

Definition at line 799 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_sos().

static av_always_inline void mjpeg_copy_block ( uint8_t dst,
const uint8_t src,
int  linesize,
int  lowres 
) [static]

Definition at line 943 of file mjpegdec.c.

Referenced by mjpeg_decode_scan().

static int mjpeg_decode_app ( MJpegDecodeContext s  )  [static]

Definition at line 1291 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_frame().

static int mjpeg_decode_com ( MJpegDecodeContext s  )  [static]

Definition at line 1433 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_frame().

static int mjpeg_decode_dc ( MJpegDecodeContext s,
int  dc_index 
) [inline, static]

static int mjpeg_decode_dri ( MJpegDecodeContext s  )  [static]

Definition at line 1279 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 958 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 1095 of file mjpegdec.c.

Referenced by ff_mjpeg_decode_sos().


Variable Documentation

Initial value:

 {
    .name           = "mjpeg",
    .type           = AVMEDIA_TYPE_VIDEO,
    .id             = CODEC_ID_MJPEG,
    .priv_data_size = sizeof(MJpegDecodeContext),
    .init           = ff_mjpeg_decode_init,
    .close          = ff_mjpeg_decode_end,
    .decode         = ff_mjpeg_decode_frame,
    .capabilities   = CODEC_CAP_DR1,
    .max_lowres     = 3,
    .long_name      = NULL_IF_CONFIG_SMALL("MJPEG (Motion JPEG)"),
    .priv_class     = &mjpegdec_class,
}

Definition at line 1822 of file mjpegdec.c.

Initial value:

 {
    .name           = "thp",
    .type           = AVMEDIA_TYPE_VIDEO,
    .id             = CODEC_ID_THP,
    .priv_data_size = sizeof(MJpegDecodeContext),
    .init           = ff_mjpeg_decode_init,
    .close          = ff_mjpeg_decode_end,
    .decode         = ff_mjpeg_decode_frame,
    .capabilities   = CODEC_CAP_DR1,
    .max_lowres     = 3,
    .long_name      = NULL_IF_CONFIG_SMALL("Nintendo Gamecube THP video"),
}

Definition at line 1836 of file mjpegdec.c.

const AVClass mjpegdec_class [static]

Initial value:

 {
    .class_name = "MJPEG decoder",
    .item_name  = av_default_item_name,
    .option     = options,
    .version    = LIBAVUTIL_VERSION_INT,
}

Definition at line 1815 of file mjpegdec.c.

const AVOption options[] [static]

Initial value:

 {
    { "extern_huff", "Use external huffman table.",
      OFFSET(extern_huff), AV_OPT_TYPE_INT, { 0 }, 0, 1, VD },
    { NULL },
}

Definition at line 1809 of file mjpegdec.c.


Generated on Fri Oct 26 02:47:57 2012 for FFmpeg by  doxygen 1.5.8