hvirtual/quicktime/ffmpeg/libavcodec/4xm.c File Reference

#include "avcodec.h"
#include "dsputil.h"
#include "mpegvideo.h"

Include dependency graph for 4xm.c:

Go to the source code of this file.

Data Structures

struct  CFrameBuffer
struct  FourXContext

Defines

#define BLOCK_TYPE_VLC_BITS   5
#define ACDC_VLC_BITS   9
#define CFRAME_BUFFER_COUNT   100
#define FIX_1_082392200   70936
#define FIX_1_414213562   92682
#define FIX_1_847759065   121095
#define FIX_2_613125930   171254
#define MULTIPLY(var, const)   (((var)*(const)) >> 16)

Functions

static void idct (DCTELEM block[64])
static void init_vlcs (FourXContext *f)
static void init_mv (FourXContext *f)
static void mcdc (uint16_t *dst, uint16_t *src, int log2w, int h, int stride, int scale, int dc)
static void decode_p_block (FourXContext *f, uint16_t *dst, uint16_t *src, int log2w, int log2h, int stride)
static int get32 (void *p)
static int decode_p_frame (FourXContext *f, uint8_t *buf, int length)
static int decode_i_block (FourXContext *f, DCTELEM *block)
static void idct_put (FourXContext *f, int x, int y)
static int decode_i_mb (FourXContext *f)
static uint8_t * read_huffman_tables (FourXContext *f, uint8_t *const buf)
static int decode_i_frame (FourXContext *f, uint8_t *buf, int length)
static int decode_frame (AVCodecContext *avctx, void *data, int *data_size, uint8_t *buf, int buf_size)
static void common_init (AVCodecContext *avctx)
static int decode_init (AVCodecContext *avctx)
static int decode_end (AVCodecContext *avctx)

Variables

static const uint8_t block_type_tab [4][8][2]
static const uint8_t size2index [4][4]
static const int8_t mv [256][2]
static const uint8_t dequant_table [64]
static VLC block_type_vlc [4]
AVCodec fourxm_decoder


Detailed Description

4XM codec.

Definition in file 4xm.c.


Define Documentation

#define ACDC_VLC_BITS   9

Definition at line 33 of file 4xm.c.

Referenced by decode_i_block(), decode_i_frame(), and read_huffman_tables().

#define BLOCK_TYPE_VLC_BITS   5

Definition at line 32 of file 4xm.c.

Referenced by decode_p_block(), and init_vlcs().

#define CFRAME_BUFFER_COUNT   100

Definition at line 35 of file 4xm.c.

Referenced by decode_end(), and decode_frame().

#define FIX_1_082392200   70936

Definition at line 131 of file 4xm.c.

Referenced by idct(), and RTjpeg_idct().

#define FIX_1_414213562   92682

Definition at line 132 of file 4xm.c.

Referenced by idct(), and RTjpeg_idct().

#define FIX_1_847759065   121095

#define FIX_2_613125930   171254

Definition at line 134 of file 4xm.c.

Referenced by idct(), and RTjpeg_idct().

#define MULTIPLY ( var,
const   )     (((var)*(const)) >> 16)


Function Documentation

static void common_init ( AVCodecContext avctx  )  [static]

Definition at line 707 of file 4xm.c.

References FourXContext::avctx, FourXContext::dsp, dsputil_init(), and AVCodecContext::priv_data.

Referenced by decode_init(), encode_init(), ff_msmpeg4_decode_init(), and mpeg_decode_init().

Here is the call graph for this function:

static int decode_end ( AVCodecContext avctx  )  [static]

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

static int decode_i_block ( FourXContext f,
DCTELEM block 
) [static]

decode block and dequantize. Note this is allmost identical to mjpeg

Definition at line 371 of file 4xm.c.

References ACDC_VLC_BITS, av_log(), AV_LOG_ERROR, FourXContext::avctx, dequant_table, ff_zigzag_direct, FourXContext::gb, get_vlc2(), get_xbits(), FourXContext::last_dc, level, FourXContext::pre_gb, FourXContext::pre_vlc, and VLC::table.

Referenced by decode_i_mb().

Here is the call graph for this function:

static int decode_i_frame ( FourXContext f,
uint8_t *  buf,
int  length 
) [static]

static int decode_i_mb ( FourXContext f  )  [static]

Definition at line 459 of file 4xm.c.

References FourXContext::block, DSPContext::clear_blocks, decode_i_block(), and FourXContext::dsp.

Referenced by decode_i_frame().

Here is the call graph for this function:

static int decode_init ( AVCodecContext avctx  )  [static]

Definition at line 715 of file 4xm.c.

References common_init(), init_vlcs(), AVCodecContext::pix_fmt, PIX_FMT_RGB565, and AVCodecContext::priv_data.

Referenced by decode_init_mp3on4().

Here is the call graph for this function:

static void decode_p_block ( FourXContext f,
uint16_t *  dst,
uint16_t *  src,
int  log2w,
int  log2h,
int  stride 
) [static]

Definition at line 281 of file 4xm.c.

References BLOCK_TYPE_VLC_BITS, FourXContext::bytestream, FourXContext::gb, get_vlc2(), le2me_16, mcdc(), FourXContext::mv, size2index, VLC::table, and FourXContext::wordstream.

Referenced by decode_p_frame().

Here is the call graph for this function:

static int decode_p_frame ( FourXContext f,
uint8_t *  buf,
int  length 
) [static]

static int get32 ( void *  p  )  [static]

Definition at line 315 of file 4xm.c.

References le2me_32.

Referenced by decode_frame(), decode_i_frame(), and decode_p_frame().

static void idct ( DCTELEM  block[64]  )  [static]

Definition at line 138 of file 4xm.c.

References FIX_1_082392200, FIX_1_414213562, FIX_1_847759065, FIX_2_613125930, and MULTIPLY.

static void idct_put ( FourXContext f,
int  x,
int  y 
) [inline, static]

static void init_mv ( FourXContext f  )  [static]

Definition at line 232 of file 4xm.c.

References FourXContext::current_picture, mv, and FourXContext::mv.

Referenced by decode_p_frame().

static void init_vlcs ( FourXContext f  )  [static]

Definition at line 222 of file 4xm.c.

References block_type_tab, BLOCK_TYPE_VLC_BITS, and init_vlc().

Referenced by decode_init(), and mpeg_decode_init().

Here is the call graph for this function:

static void mcdc ( uint16_t *  dst,
uint16_t *  src,
int  log2w,
int  h,
int  stride,
int  scale,
int  dc 
) [inline, static]

Definition at line 240 of file 4xm.c.

Referenced by decode_p_block().

static uint8_t* read_huffman_tables ( FourXContext f,
uint8_t *const   buf 
) [static]

Definition at line 472 of file 4xm.c.

References ACDC_VLC_BITS, av_log(), AV_LOG_ERROR, FourXContext::avctx, bits, init_vlc(), and FourXContext::pre_vlc.

Referenced by decode_frame(), decode_i_frame(), and decode_init().

Here is the call graph for this function:


Variable Documentation

const uint8_t block_type_tab[4][8][2] [static]

Initial value:

{
  {   
    { 0,1}, { 2,2}, { 6,3}, {14,4}, {30,5}, {31,5}, { 0,0}
  },{ 
    { 0,1}, { 0,0}, { 2,2}, { 6,3}, {14,4}, {15,4}, { 0,0}
  },{ 
    { 0,1}, { 2,2}, { 0,0}, { 6,3}, {14,4}, {15,4}, { 0,0}
  },{ 
    { 0,1}, { 0,0}, { 0,0}, { 2,2}, { 6,3}, {14,4}, {15,4}
  }
}

Definition at line 37 of file 4xm.c.

Referenced by init_vlcs().

VLC block_type_vlc[4] [static]

Definition at line 103 of file 4xm.c.

const uint8_t dequant_table[64] [static]

Initial value:

{
 16, 15, 13, 19, 24, 31, 28, 17,
 17, 23, 25, 31, 36, 63, 45, 21,
 18, 24, 27, 37, 52, 59, 49, 20,
 16, 28, 34, 40, 60, 80, 51, 20,
 18, 31, 48, 66, 68, 86, 56, 21,
 19, 38, 56, 59, 64, 64, 48, 20,
 27, 48, 55, 55, 56, 51, 35, 15,
 20, 35, 34, 32, 31, 22, 15,  8,
}

Definition at line 92 of file 4xm.c.

Referenced by decode_i_block().

Initial value:

Definition at line 742 of file 4xm.c.

Referenced by avcodec_register_all().

const int8_t mv[256][2] [static]

const uint8_t size2index[4][4] [static]

Initial value:

{
  {-1, 3, 1, 1},
  { 3, 0, 0, 0},
  { 2, 0, 0, 0},
  { 2, 0, 0, 0},
}

Definition at line 49 of file 4xm.c.

Referenced by decode_p_block().


Generated on Mon Apr 28 14:03:10 2008 for Cinelerra by  doxygen 1.5.5