vc1.h File Reference
#include "avcodec.h"
#include "h264chroma.h"
#include "mpegvideo.h"
#include "intrax8.h"
#include "vc1dsp.h"
Include dependency graph for vc1.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  VC1Context
 The VC1 Context. More...
 

Macros

#define AC_VLC_BITS   9
 
#define IS_MARKER(x)   (((x) & ~0xFF) == VC1_CODE_RES0)
 

Typedefs

typedef struct VC1Context VC1Context
 The VC1 Context. More...
 

Enumerations

enum  CodingSet {
  CS_HIGH_MOT_INTRA = 0, CS_HIGH_MOT_INTER, CS_LOW_MOT_INTRA, CS_LOW_MOT_INTER,
  CS_MID_RATE_INTRA, CS_MID_RATE_INTER, CS_HIGH_RATE_INTRA, CS_HIGH_RATE_INTER
}
 
enum  FrameCodingMode { PROGRESSIVE = 0, ILACE_FRAME, ILACE_FIELD }
 FCM Frame Coding Mode. More...
 
enum  VC1Code {
  VC1_CODE_RES0 = 0x00000100, VC1_CODE_ENDOFSEQ = 0x0000010A, VC1_CODE_SLICE, VC1_CODE_FIELD,
  VC1_CODE_FRAME, VC1_CODE_ENTRYPOINT, VC1_CODE_SEQHDR
}
 Markers used in VC-1 AP frame data. More...
 
enum  Profile { PROFILE_SIMPLE, PROFILE_MAIN, PROFILE_COMPLEX, PROFILE_ADVANCED }
 Available Profiles. More...
 
enum  QuantMode { QUANT_FRAME_IMPLICIT, QUANT_FRAME_EXPLICIT, QUANT_NON_UNIFORM, QUANT_UNIFORM }
 Sequence quantizer mode. More...
 
enum  DQProfile { DQPROFILE_FOUR_EDGES, DQPROFILE_DOUBLE_EDGES, DQPROFILE_SINGLE_EDGE, DQPROFILE_ALL_MBS }
 Where quant can be changed. More...
 
Where quant can be changed
enum  DQSingleEdge { DQSINGLE_BEDGE_LEFT, DQSINGLE_BEDGE_TOP, DQSINGLE_BEDGE_RIGHT, DQSINGLE_BEDGE_BOTTOM }
 
enum  DQDoubleEdge { DQDOUBLE_BEDGE_TOPLEFT, DQDOUBLE_BEDGE_TOPRIGHT, DQDOUBLE_BEDGE_BOTTOMRIGHT, DQDOUBLE_BEDGE_BOTTOMLEFT }
 Which pair of edges is quantized with ALTPQUANT. More...
 
enum  MVModes {
  MV_PMODE_1MV_HPEL_BILIN, MV_PMODE_1MV, MV_PMODE_1MV_HPEL, MV_PMODE_MIXED_MV,
  MV_PMODE_INTENSITY_COMP
}
 MV modes for P frames. More...
 
enum  MBModesIntfr {
  MV_PMODE_INTFR_1MV, MV_PMODE_INTFR_2MV_FIELD, MV_PMODE_INTFR_2MV, MV_PMODE_INTFR_4MV_FIELD,
  MV_PMODE_INTFR_4MV, MV_PMODE_INTFR_INTRA
}
 MBMODE for interlaced frame P-picture. More...
 
MV types for B frames
enum  BMVTypes { BMV_TYPE_BACKWARD, BMV_TYPE_FORWARD, BMV_TYPE_INTERPOLATED, BMV_TYPE_DIRECT }
 
Block types for P/B frames
enum  TransformTypes {
  TT_8X8, TT_8X4_BOTTOM, TT_8X4_TOP, TT_8X4,
  TT_4X8_RIGHT, TT_4X8_LEFT, TT_4X8, TT_4X4
}
 
Overlap conditions for Advanced Profile
enum  COTypes { CONDOVER_NONE = 0, CONDOVER_ALL, CONDOVER_SELECT }
 

Functions

static av_always_inline const uint8_tfind_next_marker (const uint8_t *src, const uint8_t *end)
 Find VC-1 marker in buffer. More...
 
static av_always_inline int vc1_unescape_buffer (const uint8_t *src, int size, uint8_t *dst)
 
int ff_vc1_decode_sequence_header (AVCodecContext *avctx, VC1Context *v, GetBitContext *gb)
 Decode Simple/Main Profiles sequence header. More...
 
int ff_vc1_decode_entry_point (AVCodecContext *avctx, VC1Context *v, GetBitContext *gb)
 
int ff_vc1_parse_frame_header (VC1Context *v, GetBitContext *gb)
 
int ff_vc1_parse_frame_header_adv (VC1Context *v, GetBitContext *gb)
 
int ff_vc1_init_common (VC1Context *v)
 Init VC-1 specific tables and VC1Context members. More...
 
int ff_vc1_decode_init_alloc_tables (VC1Context *v)
 
void ff_vc1_init_transposed_scantables (VC1Context *v)
 
int ff_vc1_decode_end (AVCodecContext *avctx)
 Close a VC1/WMV3 decoder. More...
 
void ff_vc1_decode_blocks (VC1Context *v)
 

Macro Definition Documentation

#define AC_VLC_BITS   9

Definition at line 32 of file vc1.h.

#define IS_MARKER (   x)    (((x) & ~0xFF) == VC1_CODE_RES0)

Definition at line 47 of file vc1.h.

Referenced by find_next_marker().

Typedef Documentation

typedef struct VC1Context VC1Context

The VC1 Context.

Todo:
Change size wherever another size is more efficient Many members are only used for Advanced Profile

Enumeration Type Documentation

enum BMVTypes
Enumerator
BMV_TYPE_BACKWARD 
BMV_TYPE_FORWARD 
BMV_TYPE_INTERPOLATED 
BMV_TYPE_DIRECT 

Definition at line 125 of file vc1.h.

enum CodingSet
Enumerator
CS_HIGH_MOT_INTRA 
CS_HIGH_MOT_INTER 
CS_LOW_MOT_INTRA 
CS_LOW_MOT_INTER 
CS_MID_RATE_INTRA 
CS_MID_RATE_INTER 
CS_HIGH_RATE_INTRA 
CS_HIGH_RATE_INTER 

Definition at line 147 of file vc1.h.

enum COTypes
Enumerator
CONDOVER_NONE 
CONDOVER_ALL 
CONDOVER_SELECT 

Definition at line 160 of file vc1.h.

Which pair of edges is quantized with ALTPQUANT.

Enumerator
DQDOUBLE_BEDGE_TOPLEFT 
DQDOUBLE_BEDGE_TOPRIGHT 
DQDOUBLE_BEDGE_BOTTOMRIGHT 
DQDOUBLE_BEDGE_BOTTOMLEFT 

Definition at line 92 of file vc1.h.

enum DQProfile

Where quant can be changed.

Enumerator
DQPROFILE_FOUR_EDGES 
DQPROFILE_DOUBLE_EDGES 
DQPROFILE_SINGLE_EDGE 
DQPROFILE_ALL_MBS 

Definition at line 71 of file vc1.h.

Enumerator
DQSINGLE_BEDGE_LEFT 
DQSINGLE_BEDGE_TOP 
DQSINGLE_BEDGE_RIGHT 
DQSINGLE_BEDGE_BOTTOM 

Definition at line 82 of file vc1.h.

FCM Frame Coding Mode.

Note
some content might be marked interlaced but have fcm set to 0 as well (e.g. HD-DVD)
Enumerator
PROGRESSIVE 

in the bitstream is reported as 00b

ILACE_FRAME 

in the bitstream is reported as 10b

ILACE_FIELD 

in the bitstream is reported as 11b

Definition at line 172 of file vc1.h.

MBMODE for interlaced frame P-picture.

Enumerator
MV_PMODE_INTFR_1MV 
MV_PMODE_INTFR_2MV_FIELD 
MV_PMODE_INTFR_2MV 
MV_PMODE_INTFR_4MV_FIELD 
MV_PMODE_INTFR_4MV 
MV_PMODE_INTFR_INTRA 

Definition at line 113 of file vc1.h.

enum MVModes

MV modes for P frames.

Enumerator
MV_PMODE_1MV_HPEL_BILIN 
MV_PMODE_1MV 
MV_PMODE_1MV_HPEL 
MV_PMODE_MIXED_MV 
MV_PMODE_INTENSITY_COMP 

Definition at line 102 of file vc1.h.

enum Profile

Available Profiles.

Enumerator
PROFILE_SIMPLE 
PROFILE_MAIN 
PROFILE_COMPLEX 

TODO: WMV9 specific.

PROFILE_ADVANCED 

Definition at line 51 of file vc1.h.

enum QuantMode

Sequence quantizer mode.

Enumerator
QUANT_FRAME_IMPLICIT 

Implicitly specified at frame level.

QUANT_FRAME_EXPLICIT 

Explicitly specified at frame level.

QUANT_NON_UNIFORM 

Non-uniform quant used for all frames.

QUANT_UNIFORM 

Uniform quant used for all frames.

Definition at line 61 of file vc1.h.

Enumerator
TT_8X8 
TT_8X4_BOTTOM 
TT_8X4_TOP 
TT_8X4 
TT_4X8_RIGHT 
TT_4X8_LEFT 
TT_4X8 
TT_4X4 

Definition at line 135 of file vc1.h.

enum VC1Code

Markers used in VC-1 AP frame data.

Enumerator
VC1_CODE_RES0 
VC1_CODE_ENDOFSEQ 
VC1_CODE_SLICE 
VC1_CODE_FIELD 
VC1_CODE_FRAME 
VC1_CODE_ENTRYPOINT 
VC1_CODE_SEQHDR 

Definition at line 36 of file vc1.h.

Function Documentation

void ff_vc1_decode_blocks ( VC1Context v)

Definition at line 5124 of file vc1dec.c.

Referenced by decode_wmv9(), vc1_decode_frame(), and vc1_unescape_buffer().

int ff_vc1_decode_end ( AVCodecContext avctx)

Close a VC1/WMV3 decoder.

Warning
Initial try at using MpegEncContext stuff

Definition at line 5663 of file vc1dec.c.

Referenced by mss2_decode_end(), vc1_decode_frame(), vc1_decode_init(), and vc1_unescape_buffer().

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

Definition at line 524 of file vc1.c.

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

int ff_vc1_decode_init_alloc_tables ( VC1Context v)

Definition at line 5433 of file vc1dec.c.

Referenced by vc1_decode_frame(), vc1_decode_init(), vc1_unescape_buffer(), and wmv9_init().

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

Decode Simple/Main Profiles sequence header.

See also
Figure 7-8, p16-17
Parameters
avctxCodec context
gbGetBit context initialized from Codec context extra_data
Returns
Status

Definition at line 293 of file vc1.c.

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

int ff_vc1_init_common ( VC1Context v)

Init VC-1 specific tables and VC1Context members.

Parameters
vThe VC1Context to initialize
Returns
Status

Definition at line 1544 of file vc1.c.

Referenced by vc1_decode_init(), vc1_parse_init(), vc1_unescape_buffer(), and wmv9_init().

void ff_vc1_init_transposed_scantables ( VC1Context v)

Definition at line 5499 of file vc1dec.c.

Referenced by vc1_decode_init(), vc1_unescape_buffer(), and wmv9_init().

int ff_vc1_parse_frame_header ( VC1Context v,
GetBitContext gb 
)

Definition at line 579 of file vc1.c.

Referenced by decode_wmv9(), vc1_decode_frame(), vc1_extract_headers(), and vc1_unescape_buffer().

int ff_vc1_parse_frame_header_adv ( VC1Context v,
GetBitContext gb 
)

Definition at line 830 of file vc1.c.

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

static av_always_inline const uint8_t* find_next_marker ( const uint8_t src,
const uint8_t end 
)
static

Find VC-1 marker in buffer.

Returns
position where next marker starts or end of buffer if no marker found

Definition at line 408 of file vc1.h.

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

static av_always_inline int vc1_unescape_buffer ( const uint8_t src,
int  size,
uint8_t dst 
)
static