mpeg12.c File Reference


Detailed Description

MPEG1/2 decoder.

Definition in file mpeg12.c.

Go to the source code of this file.

Classes

struct  Mpeg1Context

Functions

static int mpeg1_decode_block_inter (MpegEncContext *s, DCTELEM *block, int n)
static int mpeg1_decode_block_intra (MpegEncContext *s, DCTELEM *block, int n)
static int mpeg1_fast_decode_block_inter (MpegEncContext *s, DCTELEM *block, int n)
static int mpeg2_decode_block_non_intra (MpegEncContext *s, DCTELEM *block, int n)
static int mpeg2_decode_block_intra (MpegEncContext *s, DCTELEM *block, int n)
static int mpeg2_fast_decode_block_non_intra (MpegEncContext *s, DCTELEM *block, int n)
static int mpeg2_fast_decode_block_intra (MpegEncContext *s, DCTELEM *block, int n)
static int mpeg_decode_motion (MpegEncContext *s, int fcode, int pred)
static void exchange_uv (MpegEncContext *s)
int XVMC_field_start (MpegEncContext *s, AVCodecContext *avctx)
int XVMC_field_end (MpegEncContext *s)
void XVMC_pack_pblocks (MpegEncContext *s, int cbp)
void XVMC_init_block (MpegEncContext *s)
int XVMC_VLD_field_start (MpegEncContext *s, AVCodecContext *avctx)
int XVMC_VLD_field_end (MpegEncContext *s)
int XVMC_VLD_decode_slice (MpegEncContext *s, int start_code, uint8_t *buffer, int buf_size)
void DVDV_init_block (MpegEncContext *s)
void DVDV_decode_mb (MpegEncContext *s)
static void init_2d_vlc_rl (RLTable *rl, int use_static)
void ff_mpeg12_common_init (MpegEncContext *s)
void ff_mpeg1_clean_buffers (MpegEncContext *s)
static void init_vlcs (void)
static int get_dmv (MpegEncContext *s)
static int get_qscale (MpegEncContext *s)
static int mpeg_decode_mb (MpegEncContext *s, DCTELEM block[12][64])
static int decode_dc (GetBitContext *gb, int component)
static int mpeg_decode_init (AVCodecContext *avctx)
static void quant_matrix_rebuild (uint16_t *matrix, const uint8_t *old_perm, const uint8_t *new_perm)
static int mpeg_decode_postinit (AVCodecContext *avctx)
static int mpeg1_decode_picture (AVCodecContext *avctx, const uint8_t *buf, int buf_size)
static void mpeg_decode_sequence_extension (Mpeg1Context *s1)
static void mpeg_decode_sequence_display_extension (Mpeg1Context *s1)
static void mpeg_decode_picture_display_extension (Mpeg1Context *s1)
static void mpeg_decode_quant_matrix_extension (MpegEncContext *s)
static void mpeg_decode_picture_coding_extension (MpegEncContext *s)
static void mpeg_decode_extension (AVCodecContext *avctx, const uint8_t *buf, int buf_size)
static int mpeg_field_start (MpegEncContext *s)
static int mpeg_decode_slice (Mpeg1Context *s1, int mb_y, const uint8_t **buf, int buf_size)
 decodes a slice.
static int slice_decode_thread (AVCodecContext *c, void *arg)
static int slice_end (AVCodecContext *avctx, AVFrame *pict)
 handles slice ends.
static int mpeg1_decode_sequence (AVCodecContext *avctx, const uint8_t *buf, int buf_size)
static int vcr2_init_sequence (AVCodecContext *avctx)
static void mpeg_decode_user_data (AVCodecContext *avctx, const uint8_t *buf, int buf_size)
static void mpeg_decode_gop (AVCodecContext *avctx, const uint8_t *buf, int buf_size)
int ff_mpeg1_find_frame_end (ParseContext *pc, const uint8_t *buf, int buf_size)
 finds the end of the current frame in the bitstream.
static int mpeg_decode_frame (AVCodecContext *avctx, void *data, int *data_size, uint8_t *buf, int buf_size)
static int mpeg_decode_end (AVCodecContext *avctx)
static int mpeg_mc_decode_init (AVCodecContext *avctx)
static int mpeg_xvmc_vld_decode_init (AVCodecContext *avctx)
static int mpeg_dvdv_decode_init (AVCodecContext *avctx)

Variables

static enum PixelFormat pixfmt_yuv_420 [] = {PIX_FMT_YUV420P,-1}
static enum PixelFormat pixfmt_yuv_422 [] = {PIX_FMT_YUV422P,-1}
static enum PixelFormat pixfmt_yuv_444 [] = {PIX_FMT_YUV444P,-1}
static enum PixelFormat pixfmt_xvmc_mpg2_420 []
uint8_t ff_mpeg12_static_rl_table_store [2][2][2 *MAX_RUN+MAX_LEVEL+3]
static VLC dc_lum_vlc
static VLC dc_chroma_vlc
static VLC mv_vlc
static VLC mbincr_vlc
static VLC mb_ptype_vlc
static VLC mb_btype_vlc
static VLC mb_pat_vlc
AVCodec mpeg1video_decoder
AVCodec mpeg2video_decoder
AVCodec mpegvideo_decoder
AVCodec mpeg_xvmc_decoder
AVCodec mpeg_xvmc_vld_decoder
AVCodec mpeg_dvdv_decoder


Function Documentation

static int mpeg1_decode_block_inter ( MpegEncContext s,
DCTELEM block,
int  n 
) [inline, static]

Definition at line 746 of file mpeg12.c.

Referenced by mpeg_decode_mb().

static int mpeg1_decode_block_intra ( MpegEncContext s,
DCTELEM block,
int  n 
) [inline, static]

Definition at line 673 of file mpeg12.c.

Referenced by mpeg_decode_mb().

static int mpeg1_fast_decode_block_inter ( MpegEncContext s,
DCTELEM block,
int  n 
) [inline, static]

Definition at line 831 of file mpeg12.c.

Referenced by mpeg_decode_mb().

static int mpeg2_decode_block_non_intra ( MpegEncContext s,
DCTELEM block,
int  n 
) [inline, static]

Definition at line 911 of file mpeg12.c.

Referenced by mpeg_decode_mb().

static int mpeg2_decode_block_intra ( MpegEncContext s,
DCTELEM block,
int  n 
) [inline, static]

Definition at line 1123 of file mpeg12.c.

Referenced by mpeg_decode_mb().

static int mpeg2_fast_decode_block_non_intra ( MpegEncContext s,
DCTELEM block,
int  n 
) [inline, static]

Definition at line 1026 of file mpeg12.c.

Referenced by mpeg_decode_mb().

static int mpeg2_fast_decode_block_intra ( MpegEncContext s,
DCTELEM block,
int  n 
) [inline, static]

Definition at line 1233 of file mpeg12.c.

Referenced by mpeg_decode_mb().

static int mpeg_decode_motion ( MpegEncContext s,
int  fcode,
int  pred 
) [static]

Definition at line 622 of file mpeg12.c.

Referenced by mpeg_decode_mb().

static void exchange_uv ( MpegEncContext s  )  [static]

Definition at line 1757 of file mpeg12.c.

Referenced by mpeg_decode_mb(), and vcr2_init_sequence().

int XVMC_field_start ( MpegEncContext s,
AVCodecContext avctx 
)

Definition at line 98 of file xvmcvideo.c.

Referenced by mpeg_field_start(), and XVMC_VLD_field_start().

int XVMC_field_end ( MpegEncContext s  ) 

Definition at line 151 of file xvmcvideo.c.

Referenced by MPV_frame_end(), and slice_end().

void XVMC_pack_pblocks ( MpegEncContext s,
int  cbp 
)

Definition at line 79 of file xvmcvideo.c.

Referenced by mpeg_decode_mb().

void XVMC_init_block ( MpegEncContext s  ) 

Definition at line 74 of file xvmcvideo.c.

Referenced by mpeg_decode_slice().

int XVMC_VLD_field_start ( MpegEncContext s,
AVCodecContext avctx 
)

Definition at line 32 of file xvmcvldvideo.c.

Referenced by mpeg_field_start().

int XVMC_VLD_field_end ( MpegEncContext s  ) 

Definition at line 150 of file xvmcvldvideo.c.

Referenced by slice_end().

int XVMC_VLD_decode_slice ( MpegEncContext s,
int  start_code,
uint8_t *  buffer,
int  buf_size 
)

Definition at line 184 of file xvmcvldvideo.c.

Referenced by mpeg_decode_slice().

void DVDV_init_block ( MpegEncContext s  ) 

Definition at line 14 of file dvdv.c.

Referenced by mpeg_decode_slice().

void DVDV_decode_mb ( MpegEncContext s  ) 

Definition at line 23 of file dvdv.c.

Referenced by mpeg_decode_slice().

static void init_2d_vlc_rl ( RLTable rl,
int  use_static 
) [static]

Definition at line 98 of file mpeg12.c.

Referenced by init_vlcs().

void ff_mpeg12_common_init ( MpegEncContext s  ) 

Definition at line 140 of file mpeg12.c.

Referenced by ff_mpeg1_encode_init(), and mpeg_decode_init().

void ff_mpeg1_clean_buffers ( MpegEncContext s  ) 

Definition at line 148 of file mpeg12.c.

Referenced by encode_thread(), and mpeg_decode_slice().

static void init_vlcs ( void   )  [static]

Definition at line 167 of file mpeg12.c.

static int get_dmv ( MpegEncContext s  )  [inline, static]

Definition at line 204 of file mpeg12.c.

Referenced by mpeg_decode_mb().

static int get_qscale ( MpegEncContext s  )  [inline, static]

static int mpeg_decode_mb ( MpegEncContext s,
DCTELEM  block[12][64] 
) [static]

Definition at line 228 of file mpeg12.c.

Referenced by mpeg_decode_slice().

static int decode_dc ( GetBitContext gb,
int  component 
) [inline, static]

static int mpeg_decode_init ( AVCodecContext avctx  )  [static]

static void quant_matrix_rebuild ( uint16_t *  matrix,
const uint8_t *  old_perm,
const uint8_t *  new_perm 
) [static]

Definition at line 1371 of file mpeg12.c.

static int mpeg_decode_postinit ( AVCodecContext avctx  )  [static]

Definition at line 1385 of file mpeg12.c.

Referenced by mpeg1_decode_picture().

static int mpeg1_decode_picture ( AVCodecContext avctx,
const uint8_t *  buf,
int  buf_size 
) [static]

Definition at line 1495 of file mpeg12.c.

Referenced by mpeg_decode_frame().

static void mpeg_decode_sequence_extension ( Mpeg1Context s1  )  [static]

Definition at line 1541 of file mpeg12.c.

Referenced by mpeg_decode_extension().

static void mpeg_decode_sequence_display_extension ( Mpeg1Context s1  )  [static]

Definition at line 1577 of file mpeg12.c.

Referenced by mpeg_decode_extension().

static void mpeg_decode_picture_display_extension ( Mpeg1Context s1  )  [static]

Definition at line 1601 of file mpeg12.c.

Referenced by mpeg_decode_extension().

static void mpeg_decode_quant_matrix_extension ( MpegEncContext s  )  [static]

Definition at line 1635 of file mpeg12.c.

Referenced by mpeg_decode_extension().

static void mpeg_decode_picture_coding_extension ( MpegEncContext s  )  [static]

Definition at line 1673 of file mpeg12.c.

Referenced by mpeg_decode_extension().

static void mpeg_decode_extension ( AVCodecContext avctx,
const uint8_t *  buf,
int  buf_size 
) [static]

Definition at line 1728 of file mpeg12.c.

Referenced by mpeg_decode_frame().

static int mpeg_field_start ( MpegEncContext s  )  [static]

Definition at line 1763 of file mpeg12.c.

Referenced by mpeg_decode_frame().

static int mpeg_decode_slice ( Mpeg1Context s1,
int  mb_y,
const uint8_t **  buf,
int  buf_size 
) [static]

decodes a slice.

MpegEncContext.mb_y must be set to the MB row from the startcode

Returns:
DECODE_SLICE_ERROR if the slice is damaged
DECODE_SLICE_OK if this slice is ok

Definition at line 1825 of file mpeg12.c.

Referenced by mpeg_decode_frame(), and slice_decode_thread().

static int slice_decode_thread ( AVCodecContext c,
void *  arg 
) [static]

Definition at line 2054 of file mpeg12.c.

Referenced by mpeg_decode_frame().

static int slice_end ( AVCodecContext avctx,
AVFrame pict 
) [static]

handles slice ends.

Returns:
1 if it seems to be the last slice of

Definition at line 2093 of file mpeg12.c.

Referenced by mpeg_decode_frame().

static int mpeg1_decode_sequence ( AVCodecContext avctx,
const uint8_t *  buf,
int  buf_size 
) [static]

Definition at line 2139 of file mpeg12.c.

Referenced by mpeg_decode_frame().

static int vcr2_init_sequence ( AVCodecContext avctx  )  [static]

Definition at line 2245 of file mpeg12.c.

Referenced by mpeg_decode_frame().

static void mpeg_decode_user_data ( AVCodecContext avctx,
const uint8_t *  buf,
int  buf_size 
) [static]

Definition at line 2302 of file mpeg12.c.

Referenced by mpeg_decode_frame().

static void mpeg_decode_gop ( AVCodecContext avctx,
const uint8_t *  buf,
int  buf_size 
) [static]

Definition at line 2419 of file mpeg12.c.

Referenced by mpeg_decode_frame().

int ff_mpeg1_find_frame_end ( ParseContext pc,
const uint8_t *  buf,
int  buf_size 
)

finds the end of the current frame in the bitstream.

Returns:
the position of the first byte of the next frame, or -1

Definition at line 2453 of file mpeg12.c.

Referenced by mpeg_decode_frame(), and mpegvideo_parse().

static int mpeg_decode_frame ( AVCodecContext avctx,
void *  data,
int *  data_size,
uint8_t *  buf,
int  buf_size 
) [static]

Definition at line 2494 of file mpeg12.c.

static int mpeg_decode_end ( AVCodecContext avctx  )  [static]

Definition at line 2666 of file mpeg12.c.

static int mpeg_mc_decode_init ( AVCodecContext avctx  )  [static]

Definition at line 2716 of file mpeg12.c.

static int mpeg_xvmc_vld_decode_init ( AVCodecContext avctx  )  [static]

Definition at line 2751 of file mpeg12.c.

static int mpeg_dvdv_decode_init ( AVCodecContext avctx  )  [static]

Definition at line 2785 of file mpeg12.c.


Variable Documentation

enum PixelFormat pixfmt_yuv_420[] = {PIX_FMT_YUV420P,-1} [static]

Definition at line 88 of file mpeg12.c.

Referenced by vcr2_init_sequence().

enum PixelFormat pixfmt_yuv_422[] = {PIX_FMT_YUV422P,-1} [static]

Definition at line 89 of file mpeg12.c.

enum PixelFormat pixfmt_yuv_444[] = {PIX_FMT_YUV444P,-1} [static]

Definition at line 90 of file mpeg12.c.

Initial value:

Definition at line 91 of file mpeg12.c.

Referenced by vcr2_init_sequence().

uint8_t ff_mpeg12_static_rl_table_store[2][2][2 *MAX_RUN+MAX_LEVEL+3]

Definition at line 96 of file mpeg12.c.

Referenced by ff_mpeg1_encode_init(), and init_vlcs().

VLC dc_lum_vlc [static]

Definition at line 159 of file mpeg12.c.

VLC dc_chroma_vlc [static]

Definition at line 160 of file mpeg12.c.

VLC mv_vlc [static]

Definition at line 161 of file mpeg12.c.

VLC mbincr_vlc [static]

Definition at line 162 of file mpeg12.c.

VLC mb_ptype_vlc [static]

Definition at line 163 of file mpeg12.c.

VLC mb_btype_vlc [static]

Definition at line 164 of file mpeg12.c.

VLC mb_pat_vlc [static]

Definition at line 165 of file mpeg12.c.

Initial value:

 {
    "mpeg1video",
    CODEC_TYPE_VIDEO,
    CODEC_ID_MPEG1VIDEO,
    sizeof(Mpeg1Context),
    mpeg_decode_init,
    NULL,
    mpeg_decode_end,
    mpeg_decode_frame,
    CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_DELAY,
    .flush= ff_mpeg_flush,
}

Definition at line 2675 of file mpeg12.c.

Initial value:

 {
    "mpeg2video",
    CODEC_TYPE_VIDEO,
    CODEC_ID_MPEG2VIDEO,
    sizeof(Mpeg1Context),
    mpeg_decode_init,
    NULL,
    mpeg_decode_end,
    mpeg_decode_frame,
    CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_DELAY,
    .flush= ff_mpeg_flush,
}

Definition at line 2688 of file mpeg12.c.

Initial value:

 {
    "mpegvideo",
    CODEC_TYPE_VIDEO,
    CODEC_ID_MPEG2VIDEO,
    sizeof(Mpeg1Context),
    mpeg_decode_init,
    NULL,
    mpeg_decode_end,
    mpeg_decode_frame,
    CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_DELAY,
    .flush= ff_mpeg_flush,
}

Definition at line 2702 of file mpeg12.c.

Initial value:

 {
    "mpegvideo_xvmc",
    CODEC_TYPE_VIDEO,
    CODEC_ID_MPEG2VIDEO_XVMC,
    sizeof(Mpeg1Context),
    mpeg_mc_decode_init,
    NULL,
    mpeg_decode_end,
    mpeg_decode_frame,
    CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED| CODEC_CAP_HWACCEL | CODEC_CAP_DELAY,
    .flush= ff_mpeg_flush,
}

Definition at line 2735 of file mpeg12.c.

Initial value:

 {
    "mpegvideo_xvmc_vld",
    CODEC_TYPE_VIDEO,
    CODEC_ID_MPEG2VIDEO_XVMC_VLD,
    sizeof(Mpeg1Context),
    mpeg_xvmc_vld_decode_init,
    NULL,
    mpeg_decode_end,
    mpeg_decode_frame,
    CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED| CODEC_CAP_HWACCEL | CODEC_CAP_DELAY,
    .flush= ff_mpeg_flush,
}

Definition at line 2769 of file mpeg12.c.

Initial value:

 {
    "mpegvideo_dvdv",
    CODEC_TYPE_VIDEO,
    CODEC_ID_MPEG2VIDEO_DVDV,
    sizeof(Mpeg1Context) + sizeof(DVDV_CurPtrs),
    mpeg_dvdv_decode_init,
    NULL,
    mpeg_decode_end,
    mpeg_decode_frame,
    CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_HWACCEL | CODEC_CAP_DELAY,
    .flush= ff_mpeg_flush,
}

Definition at line 2805 of file mpeg12.c.


Generated on Sat Dec 18 05:15:54 2010 for MythTV by  doxygen 1.5.5