libavcodec/vc1.c File Reference

VC-1 and WMV3 decoder common code. More...

#include "internal.h"
#include "dsputil.h"
#include "avcodec.h"
#include "mpegvideo.h"
#include "vc1.h"
#include "vc1data.h"
#include "msmpeg4data.h"
#include "unary.h"
#include "simple_idct.h"
#include <assert.h>

Go to the source code of this file.

Defines

#define INIT_LUT(lumscale, lumshift, luty, lutuv)

Enumerations

VC-1 Bitplane decoding
See also:
8.7, p56


enum  Imode {
  IMODE_RAW, IMODE_NORM2, IMODE_DIFF2, IMODE_NORM6,
  IMODE_DIFF6, IMODE_ROWSKIP, IMODE_COLSKIP, IMODE_RAW,
  IMODE_NORM2, IMODE_DIFF2, IMODE_NORM6, IMODE_DIFF6,
  IMODE_ROWSKIP, IMODE_COLSKIP
}
 Imode types. More...

Functions

static void decode_rowskip (uint8_t *plane, int width, int height, int stride, GetBitContext *gb)
 Decode rows by checking if they are skipped.
static void decode_colskip (uint8_t *plane, int width, int height, int stride, GetBitContext *gb)
 Decode columns by checking if they are skipped.
static int bitplane_decoding (uint8_t *data, int *raw_flag, VC1Context *v)
 Decode a bitplane's bits.
static int vop_dquant_decoding (VC1Context *v)
 VOP Dquant decoding.
static int decode_sequence_header_adv (VC1Context *v, GetBitContext *gb)
int vc1_decode_sequence_header (AVCodecContext *avctx, VC1Context *v, GetBitContext *gb)
 Decode Simple/Main Profiles sequence header.
int vc1_decode_entry_point (AVCodecContext *avctx, VC1Context *v, GetBitContext *gb)
int vc1_parse_frame_header (VC1Context *v, GetBitContext *gb)
int vc1_parse_frame_header_adv (VC1Context *v, GetBitContext *gb)


Detailed Description

VC-1 and WMV3 decoder common code.

Definition in file vc1.c.


Define Documentation

#define INIT_LUT ( lumscale,
lumshift,
luty,
lutuv   ) 

Value:

if (!lumscale) {                                \
        scale = -64;                                \
        shift = (255 - lumshift * 2) << 6;          \
        if (lumshift > 31)                          \
            shift += 128 << 6;                      \
    } else {                                        \
        scale = lumscale + 32;                      \
        if (lumshift > 31)                          \
            shift = (lumshift - 64) << 6;           \
        else                                        \
            shift = lumshift << 6;                  \
    }                                               \
    for (i = 0; i < 256; i++) {                     \
        luty[i]  = av_clip_uint8((scale * i + shift + 32) >> 6);           \
        lutuv[i] = av_clip_uint8((scale * (i - 128) + 128*64 + 32) >> 6);  \
    }

Definition at line 802 of file vc1.c.

Referenced by vc1_parse_frame_header_adv().


Enumeration Type Documentation

enum Imode

Imode types.

Enumerator:
IMODE_RAW 
IMODE_NORM2 
IMODE_DIFF2 
IMODE_NORM6 
IMODE_DIFF6 
IMODE_ROWSKIP 
IMODE_COLSKIP 
IMODE_RAW 
IMODE_NORM2 
IMODE_DIFF2 
IMODE_NORM6 
IMODE_DIFF6 
IMODE_ROWSKIP 
IMODE_COLSKIP 

Definition at line 54 of file vc1.c.


Function Documentation

static int bitplane_decoding ( uint8_t *  data,
int *  raw_flag,
VC1Context v 
) [static]

Decode a bitplane's bits.

Parameters:
data bitplane where to store the decode bits
[out] raw_flag pointer to the flag indicating that this bitplane is not coded explicitly
v VC-1 context for bit reading and logging
Returns:
Status
Todo:
FIXME: Optimize

Definition at line 116 of file vc1.c.

Referenced by vc1_parse_frame_header(), and vc1_parse_frame_header_adv().

static void decode_colskip ( uint8_t *  plane,
int  width,
int  height,
int  stride,
GetBitContext gb 
) [static]

Decode columns by checking if they are skipped.

Parameters:
plane Buffer to store decoded bits
[in] width Width of this buffer
[in] height Height of this buffer
[in] stride of this buffer
Todo:
FIXME: Optimize

Definition at line 93 of file vc1.c.

Referenced by bitplane_decoding().

static void decode_rowskip ( uint8_t *  plane,
int  width,
int  height,
int  stride,
GetBitContext gb 
) [static]

Decode rows by checking if they are skipped.

Parameters:
plane Buffer to store decoded bits
[in] width Width of this buffer
[in] height Height of this buffer
[in] stride of this buffer

Definition at line 71 of file vc1.c.

Referenced by bitplane_decoding().

static int decode_sequence_header_adv ( VC1Context v,
GetBitContext gb 
) [static]

Definition at line 419 of file vc1.c.

Referenced by vc1_decode_sequence_header().

int vc1_decode_entry_point ( AVCodecContext avctx,
VC1Context v,
GetBitContext gb 
)

Definition at line 528 of file vc1.c.

Referenced by vc1_decode_frame(), vc1_decode_init(), and vc1_extract_headers().

int vc1_decode_sequence_header ( AVCodecContext avctx,
VC1Context v,
GetBitContext gb 
)

Decode Simple/Main Profiles sequence header.

See also:
Figure 7-8, p16-17
Parameters:
avctx Codec context
gb GetBit context initialized from Codec context extra_data
Returns:
Status

Definition at line 294 of file vc1.c.

Referenced by vc1_decode_init(), and vc1_extract_headers().

int vc1_parse_frame_header ( VC1Context v,
GetBitContext gb 
)

Definition at line 577 of file vc1.c.

Referenced by vc1_decode_frame(), and vc1_extract_headers().

int vc1_parse_frame_header_adv ( VC1Context v,
GetBitContext gb 
)

Definition at line 820 of file vc1.c.

Referenced by vc1_decode_frame(), and vc1_extract_headers().

static int vop_dquant_decoding ( VC1Context v  )  [static]

VOP Dquant decoding.

Parameters:
v VC-1 Context

Definition at line 245 of file vc1.c.

Referenced by vc1_parse_frame_header(), and vc1_parse_frame_header_adv().


Generated on Fri Oct 26 02:46:10 2012 for FFmpeg by  doxygen 1.5.8