libavcodec/mss4.c File Reference

Microsoft Screen 4 (aka Microsoft Titanium Screen 2, aka Microsoft Expression Encoder Screen) decoder. More...

#include "avcodec.h"
#include "bytestream.h"
#include "dsputil.h"
#include "get_bits.h"
#include "mss34dsp.h"
#include "unary.h"

Go to the source code of this file.

Data Structures

struct  MSS4Context

Defines

#define HEADER_SIZE   8
#define MAX_ENTRIES   162
#define MKVAL(vals)   (vals[0] | (vals[1] << 3) | (vals[2] << 6))

Enumerations

enum  FrameType {
  ACTIVE_FRAME, SID_FRAME, UNTRANSMITTED_FRAME, INTRA_FRAME = 0,
  INTER_FRAME, SKIP_FRAME, FT_SHORT = 0, FT_MEDIUM,
  FT_LONG, FT_PPC
}
enum  BlockType {
  FILL_BLOCK = 0, IMAGE_BLOCK, DCT_BLOCK, HAAR_BLOCK,
  SKIP_BLOCK, SKIP_BLOCK = 0, DCT_BLOCK, IMAGE_BLOCK
}
enum  CachePos { LEFT = 0, TOP_LEFT, TOP }

Functions

static av_cold int mss4_init_vlc (VLC *vlc, const uint8_t *lens, const uint8_t *syms, int num_syms)
static av_cold int mss4_init_vlcs (MSS4Context *ctx)
static av_cold void mss4_free_vlcs (MSS4Context *ctx)
static av_always_inline int get_coeff_bits (GetBitContext *gb, int nbits)
static int get_coeff (GetBitContext *gb, VLC *vlc)
static int mss4_decode_dct (GetBitContext *gb, VLC *dc_vlc, VLC *ac_vlc, int *block, int *dc_cache, int bx, int by, uint16_t *quant_mat)
static int mss4_decode_dct_block (MSS4Context *c, GetBitContext *gb, uint8_t *dst[3], int mb_x, int mb_y)
static void read_vec_pos (GetBitContext *gb, int *vec_pos, int *sel_flag, int *sel_len, int *prev)
static int get_value_cached (GetBitContext *gb, int vec_pos, uint8_t *vec, int vec_size, int component, int shift, int *prev)
static int mss4_decode_image_block (MSS4Context *ctx, GetBitContext *gb, uint8_t *picdst[3], int mb_x, int mb_y)
static void mss4_update_dc_cache (MSS4Context *c, int mb_x)
static int mss4_decode_frame (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
static av_cold int mss4_decode_init (AVCodecContext *avctx)
static av_cold int mss4_decode_end (AVCodecContext *avctx)

Variables

static const uint8_t mss4_dc_vlc_lens [2][16]
static const uint8_t mss4_ac_vlc_lens [2][16]
static const uint8_t mss4_ac_vlc_syms [2][162]
static const uint8_t vec_len_syms [2][4]
static const uint8_t mss4_vec_entry_vlc_lens [2][16]
static const uint8_t mss4_vec_entry_vlc_syms [2][9]
AVCodec ff_mts2_decoder


Detailed Description

Microsoft Screen 4 (aka Microsoft Titanium Screen 2, aka Microsoft Expression Encoder Screen) decoder.

Definition in file mss4.c.


Define Documentation

#define HEADER_SIZE   8

Definition at line 35 of file mss4.c.

#define MAX_ENTRIES   162

Definition at line 125 of file mss4.c.

Referenced by mss4_init_vlc().

#define MKVAL ( vals   )     (vals[0] | (vals[1] << 3) | (vals[2] << 6))

Definition at line 367 of file mss4.c.

Referenced by mss4_decode_image_block().


Enumeration Type Documentation

enum BlockType

Enumerator:
FILL_BLOCK 
IMAGE_BLOCK 
DCT_BLOCK 
HAAR_BLOCK 
SKIP_BLOCK 
SKIP_BLOCK 
DCT_BLOCK 
IMAGE_BLOCK 

Definition at line 43 of file mss4.c.

enum CachePos

Enumerator:
LEFT 
TOP_LEFT 
TOP 

Definition at line 49 of file mss4.c.

enum FrameType

Enumerator:
ACTIVE_FRAME  Active speech.
SID_FRAME  Silence Insertion Descriptor frame.
UNTRANSMITTED_FRAME 
INTRA_FRAME 
INTER_FRAME 
SKIP_FRAME 
FT_SHORT  Short frame (divided in n sub-blocks).
FT_MEDIUM  Medium frame (divided in m<n sub-blocks).
FT_LONG  Long frame (single sub-block + PPC).
FT_PPC  Periodic Peak Component (part of the long frame).

Definition at line 37 of file mss4.c.


Function Documentation

static int get_coeff ( GetBitContext gb,
VLC vlc 
) [inline, static]

Definition at line 220 of file mss4.c.

Referenced by mss4_decode_dct(), and mss4_decode_image_block().

static av_always_inline int get_coeff_bits ( GetBitContext gb,
int  nbits 
) [static]

Definition at line 206 of file mss4.c.

Referenced by get_coeff(), and mss4_decode_dct().

static int get_value_cached ( GetBitContext gb,
int  vec_pos,
uint8_t vec,
int  vec_size,
int  component,
int  shift,
int prev 
) [static]

Definition at line 356 of file mss4.c.

Referenced by mss4_decode_image_block().

static int mss4_decode_dct ( GetBitContext gb,
VLC dc_vlc,
VLC ac_vlc,
int block,
int dc_cache,
int  bx,
int  by,
uint16_t *  quant_mat 
) [static]

Definition at line 227 of file mss4.c.

Referenced by mss4_decode_dct_block().

static int mss4_decode_dct_block ( MSS4Context c,
GetBitContext gb,
uint8_t dst[3],
int  mb_x,
int  mb_y 
) [static]

Definition at line 282 of file mss4.c.

Referenced by mss4_decode_frame().

static av_cold int mss4_decode_end ( AVCodecContext avctx  )  [static]

Definition at line 658 of file mss4.c.

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

Definition at line 509 of file mss4.c.

static int mss4_decode_image_block ( MSS4Context ctx,
GetBitContext gb,
uint8_t picdst[3],
int  mb_x,
int  mb_y 
) [static]

Definition at line 380 of file mss4.c.

Referenced by mss4_decode_frame().

static av_cold int mss4_decode_init ( AVCodecContext avctx  )  [static]

Definition at line 632 of file mss4.c.

static av_cold void mss4_free_vlcs ( MSS4Context ctx  )  [static]

Definition at line 188 of file mss4.c.

Referenced by mss4_decode_end(), and mss4_decode_init().

static av_cold int mss4_init_vlc ( VLC vlc,
const uint8_t lens,
const uint8_t syms,
int  num_syms 
) [static]

Definition at line 146 of file mss4.c.

Referenced by mss4_init_vlcs().

static av_cold int mss4_init_vlcs ( MSS4Context ctx  )  [static]

Definition at line 168 of file mss4.c.

Referenced by mss4_decode_init().

static void mss4_update_dc_cache ( MSS4Context c,
int  mb_x 
) [inline, static]

Definition at line 490 of file mss4.c.

Referenced by mss4_decode_frame().

static void read_vec_pos ( GetBitContext gb,
int vec_pos,
int sel_flag,
int sel_len,
int prev 
) [static]

Definition at line 330 of file mss4.c.

Referenced by mss4_decode_image_block().


Variable Documentation

Initial value:

 {
    .name           = "mts2",
    .type           = AVMEDIA_TYPE_VIDEO,
    .id             = AV_CODEC_ID_MTS2,
    .priv_data_size = sizeof(MSS4Context),
    .init           = mss4_decode_init,
    .close          = mss4_decode_end,
    .decode         = mss4_decode_frame,
    .capabilities   = CODEC_CAP_DR1,
    .long_name      = NULL_IF_CONFIG_SMALL("MS Expression Encoder Screen"),
}

Definition at line 672 of file mss4.c.

const uint8_t mss4_ac_vlc_lens[2][16] [static]

Initial value:

 {
    { 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125 },
    { 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119 }
}

Definition at line 60 of file mss4.c.

Referenced by mss4_init_vlcs().

const uint8_t mss4_ac_vlc_syms[2][162] [static]

Definition at line 65 of file mss4.c.

Referenced by mss4_init_vlcs().

const uint8_t mss4_dc_vlc_lens[2][16] [static]

Initial value:

 {
    { 0, 1, 5, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 3, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0 }
}

Definition at line 55 of file mss4.c.

Referenced by mss4_init_vlcs().

const uint8_t mss4_vec_entry_vlc_lens[2][16] [static]

Initial value:

 {
    { 0, 2, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 1, 5, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}

Definition at line 115 of file mss4.c.

Referenced by mss4_init_vlcs().

const uint8_t mss4_vec_entry_vlc_syms[2][9] [static]

Initial value:

 {
    { 0, 7, 6, 5, 8, 4, 3, 1, 2 },
    { 0, 2, 3, 4, 5, 6, 7, 1, 8 }
}

Definition at line 120 of file mss4.c.

Referenced by mss4_init_vlcs().

const uint8_t vec_len_syms[2][4] [static]

Initial value:

 {
    { 4, 2, 3, 1 },
    { 4, 1, 2, 3 }
}

Definition at line 110 of file mss4.c.

Referenced by mss4_decode_image_block().


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