libavcodec/4xm.c File Reference

4XM codec. More...

#include "libavutil/intreadwrite.h"
#include "avcodec.h"
#include "bytestream.h"
#include "dsputil.h"
#include "get_bits.h"
#include "libavutil/avassert.h"

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)
#define LE_CENTRIC_MUL(dst, src, scale, dc)

Functions

static void idct (DCTELEM block[64])
static av_cold void init_vlcs (FourXContext *f)
static void init_mv (FourXContext *f)
static void mcdc (uint16_t *dst, const uint16_t *src, int log2w, int h, int stride, int scale, unsigned dc)
static void decode_p_block (FourXContext *f, uint16_t *dst, uint16_t *src, int log2w, int log2h, int stride)
static int decode_p_frame (FourXContext *f, const uint8_t *buf, int length)
static int decode_i_block (FourXContext *f, DCTELEM *block)
 decode block and dequantize.
static void idct_put (FourXContext *f, int x, int y)
static int decode_i_mb (FourXContext *f)
static const uint8_tread_huffman_tables (FourXContext *f, const uint8_t *const buf, int buf_size)
static int mix (int c0, int c1)
static int decode_i2_frame (FourXContext *f, const uint8_t *buf, int length)
static int decode_i_frame (FourXContext *f, const uint8_t *buf, int length)
static int decode_frame (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
static av_cold void common_init (AVCodecContext *avctx)
static av_cold int decode_init (AVCodecContext *avctx)
static av_cold int decode_end (AVCodecContext *avctx)

Variables

static const uint8_t block_type_tab [2][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 [2][4]
AVCodec ff_fourxm_decoder


Detailed Description

4XM codec.

Definition in file 4xm.c.


Define Documentation

#define ACDC_VLC_BITS   9

Definition at line 36 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 35 of file 4xm.c.

Referenced by decode_p_block(), and init_vlcs().

#define CFRAME_BUFFER_COUNT   100

Definition at line 38 of file 4xm.c.

Referenced by decode_end(), and decode_frame().

#define FIX_1_082392200   70936

Definition at line 148 of file 4xm.c.

Referenced by idct().

#define FIX_1_414213562   92682

Definition at line 149 of file 4xm.c.

Referenced by idct().

#define FIX_1_847759065   121095

Definition at line 150 of file 4xm.c.

Referenced by ff_fdct248_islow(), ff_j_rev_dct(), ff_j_rev_dct4(), ff_jpeg_fdct_islow(), idct(), and row_fdct().

#define FIX_2_613125930   171254

Definition at line 151 of file 4xm.c.

Referenced by idct().

#define LE_CENTRIC_MUL ( dst,
src,
scale,
dc   ) 

Value:

{                                                    \
        unsigned tmpval = AV_RN32(src) * (scale) + (dc); \
        AV_WN32A(dst, tmpval);                           \
    }

Definition at line 279 of file 4xm.c.

Referenced by mcdc().

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


Function Documentation

static av_cold void common_init ( AVCodecContext avctx  )  [static]

Definition at line 924 of file 4xm.c.

Referenced by asink_init(), decode_init(), ff_h264_decode_init(), and vsink_init().

static av_cold int decode_end ( AVCodecContext avctx  )  [static]

Definition at line 961 of file 4xm.c.

Referenced by decode_init().

static int decode_frame ( AVCodecContext avctx,
void *  data,
int data_size,
AVPacket avpkt 
) [static]

Definition at line 785 of file 4xm.c.

Referenced by decode_packet(), flac_decode_frame(), nut_read_packet(), and sipr_decoder_init().

static int decode_i2_frame ( FourXContext f,
const uint8_t buf,
int  length 
) [static]

Definition at line 676 of file 4xm.c.

Referenced by decode_frame().

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

decode block and dequantize.

Note this is almost identical to MJPEG.

Definition at line 473 of file 4xm.c.

Referenced by decode_i_mb().

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

Definition at line 725 of file 4xm.c.

Referenced by decode_frame().

static int decode_i_mb ( FourXContext f  )  [static]

Definition at line 567 of file 4xm.c.

Referenced by decode_i_frame().

static av_cold int decode_init ( AVCodecContext avctx  )  [static]

Definition at line 933 of file 4xm.c.

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

Definition at line 334 of file 4xm.c.

Referenced by decode_p_frame().

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

Definition at line 406 of file 4xm.c.

Referenced by decode_frame().

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

Definition at line 155 of file 4xm.c.

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

static void init_mv ( FourXContext f  )  [static]

Definition at line 257 of file 4xm.c.

Referenced by decode_p_frame().

static av_cold void init_vlcs ( FourXContext f  )  [static]

Definition at line 240 of file 4xm.c.

Referenced by decode_init(), and tscc2_decode_init().

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

Definition at line 286 of file 4xm.c.

Referenced by decode_p_block().

static int mix ( int  c0,
int  c1 
) [static]

Definition at line 668 of file 4xm.c.

Referenced by av_aes_init(), crypt(), and decode_i2_frame().

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

Definition at line 580 of file 4xm.c.

Referenced by decode_i_frame().


Variable Documentation

const uint8_t block_type_tab[2][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 }
        }
    }, {
        {   
            { 1, 2 }, { 4, 3 }, { 5, 3 }, { 0, 2 }, { 6, 3 }, { 7, 3 }, { 0, 0 }
        }, {
            { 1, 2 }, { 0, 0 }, { 2, 2 }, { 0, 2 }, { 6, 3 }, { 7, 3 }, { 0, 0 }
        }, {
            { 1, 2 }, { 2, 2 }, { 0, 0 }, { 0, 2 }, { 6, 3 }, { 7, 3 }, { 0, 0 }
        }, {
            { 1, 2 }, { 0, 0 }, { 0, 0 }, { 0, 2 }, { 2, 2 }, { 6, 3 }, { 7, 3 }
      }
    }
}

Definition at line 40 of file 4xm.c.

Referenced by init_vlcs().

VLC block_type_vlc[2][4] [static]

Definition at line 119 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 108 of file 4xm.c.

Referenced by decode_i_block(), and fill_tone_level_array().

Initial value:

 {
    .name           = "4xm",
    .type           = AVMEDIA_TYPE_VIDEO,
    .id             = AV_CODEC_ID_4XM,
    .priv_data_size = sizeof(FourXContext),
    .init           = decode_init,
    .close          = decode_end,
    .decode         = decode_frame,
    .capabilities   = CODEC_CAP_DR1,
    .long_name      = NULL_IF_CONFIG_SMALL("4X Movie"),
}

Definition at line 981 of file 4xm.c.

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 64 of file 4xm.c.

Referenced by decode_p_block().


Generated on Fri Oct 26 02:50:03 2012 for FFmpeg by  doxygen 1.5.8