vc1dec.c File Reference

VC-1 and WMV3 decoder. More...

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

Go to the source code of this file.

Macros

#define MB_INTRA_VLC_BITS   9
#define DC_VLC_BITS   9
#define AC_VLC_BITS   9
#define inc_blk_idx(idx)
#define transpose(x)   ((x >> 3) | ((x & 7) << 3))

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

int ff_vc1_init_common (VC1Context *v)
 Init VC-1 specific tables and VC1Context members.
static void vc1_put_signed_blocks_clamped (VC1Context *v)
static void vc1_loop_filter_iblk (VC1Context *v, int pq)
static void vc1_loop_filter_iblk_delayed (VC1Context *v, int pq)
static void vc1_smooth_overlap_filter_iblk (VC1Context *v)
static void vc1_mc_1mv (VC1Context *v, int dir)
 Do motion compensation over 1 macroblock Mostly adapted hpel_motion and qpel_motion from mpegvideo.c.
static int median4 (int a, int b, int c, int d)
static void vc1_mc_4mv_luma (VC1Context *v, int n, int dir)
 Do motion compensation for 4-MV macroblock - luminance block.
static av_always_inline int get_chroma_mv (int *mvx, int *mvy, int *a, int flag, int *tx, int *ty)
static void vc1_mc_4mv_chroma (VC1Context *v, int dir)
 Do motion compensation for 4-MV macroblock - both chroma blocks.
static void vc1_mc_4mv_chroma4 (VC1Context *v)
 Do motion compensation for 4-MV field chroma macroblock (both U and V)
static av_always_inline void vc1_apply_p_v_loop_filter (VC1Context *v, int block_num)
static av_always_inline void vc1_apply_p_h_loop_filter (VC1Context *v, int block_num)
static void vc1_apply_p_loop_filter (VC1Context *v)
static int vc1_decode_p_mb (VC1Context *v)
 Decode one P-frame MB.
static int vc1_decode_p_mb_intfr (VC1Context *v)
static int vc1_decode_p_mb_intfi (VC1Context *v)
static void vc1_decode_b_mb (VC1Context *v)
 Decode one B-frame MB (in Main profile)
static void vc1_decode_b_mb_intfi (VC1Context *v)
 Decode one B-frame MB (in interlaced field B picture)
static void vc1_decode_i_blocks (VC1Context *v)
 Decode blocks of I-frame.
static void vc1_decode_i_blocks_adv (VC1Context *v)
 Decode blocks of I-frame for advanced profile.
static void vc1_decode_p_blocks (VC1Context *v)
static void vc1_decode_b_blocks (VC1Context *v)
static void vc1_decode_skip_blocks (VC1Context *v)
static void vc1_decode_blocks (VC1Context *v)
static av_cold int vc1_decode_init_alloc_tables (VC1Context *v)
static av_cold int vc1_decode_init (AVCodecContext *avctx)
 Initialize a VC1/WMV3 decoder.
static av_cold int vc1_decode_end (AVCodecContext *avctx)
 Close a VC1/WMV3 decoder.
static int vc1_decode_frame (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
 Decode a VC1/WMV3 frame.
VC1 Macroblock-level functions in Simple/Main Profiles
See also:
7.1.4, p91 and 8.1.1.7, p(1)04
static int vc1_coded_block_pred (MpegEncContext *s, int n, uint8_t **coded_block_ptr)
static void vc1_decode_ac_coeff (VC1Context *v, int *last, int *skip, int *value, int codingset)
 Decode one AC coefficient.
static int vc1_decode_i_block (VC1Context *v, DCTELEM block[64], int n, int coded, int codingset)
 Decode intra block in intra frames - should be faster than decode_intra_block.
static int vc1_decode_i_block_adv (VC1Context *v, DCTELEM block[64], int n, int coded, int codingset, int mquant)
 Decode intra block in intra frames - should be faster than decode_intra_block.
static int vc1_decode_intra_block (VC1Context *v, DCTELEM block[64], int n, int coded, int mquant, int codingset)
 Decode intra block in inter frames - more generic version than vc1_decode_i_block.
static int vc1_decode_p_block (VC1Context *v, DCTELEM block[64], int n, int mquant, int ttmb, int first_block, uint8_t *dst, int linesize, int skip_block, int *ttmb_out)
 Decode P block.

Variables

static const uint16_t vlc_offs []
static const int offset_table1 [9] = { 0, 1, 2, 4, 8, 16, 32, 64, 128 }
static const int offset_table2 [9] = { 0, 1, 3, 7, 15, 31, 63, 127, 255 }
static const int size_table [6] = { 0, 2, 3, 4, 5, 8 }
static const int offset_table [6] = { 0, 1, 3, 7, 15, 31 }
static const AVProfile profiles []
AVCodec ff_vc1_decoder

VC-1 Block-level functions

See also:
7.1.4, p91 and 8.1.1.7, p(1)04
#define GET_MQUANT()
 Get macroblock-level quantizer scale.
#define GET_MVDATA(_dmv_x, _dmv_y)
 Get MV differentials.
static av_always_inline void get_mvdata_interlaced (VC1Context *v, int *dmv_x, int *dmv_y, int *pred_flag)
static av_always_inline int scaleforsame_x (VC1Context *v, int n, int dir)
static av_always_inline int scaleforsame_y (VC1Context *v, int i, int n, int dir)
static av_always_inline int scaleforopp_x (VC1Context *v, int n)
static av_always_inline int scaleforopp_y (VC1Context *v, int n, int dir)
static av_always_inline int scaleforsame (VC1Context *v, int i, int n, int dim, int dir)
static av_always_inline int scaleforopp (VC1Context *v, int n, int dim, int dir)
static void vc1_pred_mv (VC1Context *v, int n, int dmv_x, int dmv_y, int mv1, int r_x, int r_y, uint8_t *is_intra, int pred_flag, int dir)
 Predict and set motion vector.
static void vc1_pred_mv_intfr (VC1Context *v, int n, int dmv_x, int dmv_y, int mvn, int r_x, int r_y, uint8_t *is_intra)
 Predict and set motion vector for interlaced frame picture MBs.
static void vc1_interp_mc (VC1Context *v)
 Motion compensation for direct or interpolated blocks in B-frames.
static av_always_inline int scale_mv (int value, int bfrac, int inv, int qs)
static av_always_inline int scale_mv_intfi (int value, int bfrac, int inv, int qs, int qs_last)
static void vc1_b_mc (VC1Context *v, int dmv_x[2], int dmv_y[2], int direct, int mode)
 Reconstruct motion vector for B-frame and do motion compensation.
static void vc1_pred_b_mv (VC1Context *v, int dmv_x[2], int dmv_y[2], int direct, int mvtype)
static void vc1_pred_b_mv_intfi (VC1Context *v, int n, int *dmv_x, int *dmv_y, int mv1, int *pred_flag)
static int vc1_i_pred_dc (MpegEncContext *s, int overlap, int pq, int n, int16_t **dc_val_ptr, int *dir_ptr)
 Get predicted DC value for I-frames only prediction dir: left=0, top=1.
static int vc1_pred_dc (MpegEncContext *s, int overlap, int pq, int n, int a_avail, int c_avail, int16_t **dc_val_ptr, int *dir_ptr)
 Get predicted DC value prediction dir: left=0, top=1.

Detailed Description

VC-1 and WMV3 decoder.

Definition in file vc1dec.c.


Macro Definition Documentation

#define AC_VLC_BITS   9

Definition at line 48 of file vc1dec.c.

Referenced by ff_vc1_init_common(), and vc1_decode_ac_coeff().

#define DC_VLC_BITS   9

Definition at line 47 of file vc1dec.c.

Referenced by vc1_decode_i_block(), vc1_decode_i_block_adv(), and vc1_decode_intra_block().

#define GET_MQUANT ( )
Value:
if (v->dquantfrm) { \
int edges = 0; \
if (v->dqprofile == DQPROFILE_ALL_MBS) { \
if (v->dqbilevel) { \
mquant = (get_bits1(gb)) ? v->altpq : v->pq; \
} else { \
mqdiff = get_bits(gb, 3); \
if (mqdiff != 7) \
mquant = v->pq + mqdiff; \
else \
mquant = get_bits(gb, 5); \
} \
} \
if (v->dqprofile == DQPROFILE_SINGLE_EDGE) \
edges = 1 << v->dqsbedge; \
else if (v->dqprofile == DQPROFILE_DOUBLE_EDGES) \
edges = (3 << v->dqsbedge) % 15; \
else if (v->dqprofile == DQPROFILE_FOUR_EDGES) \
edges = 15; \
if ((edges&1) && !s->mb_x) \
mquant = v->altpq; \
if ((edges&2) && s->first_slice_line) \
mquant = v->altpq; \
if ((edges&4) && s->mb_x == (s->mb_width - 1)) \
mquant = v->altpq; \
if ((edges&8) && s->mb_y == (s->mb_height - 1)) \
mquant = v->altpq; \
}

Get macroblock-level quantizer scale.

Definition at line 1165 of file vc1dec.c.

Referenced by vc1_decode_b_mb(), vc1_decode_b_mb_intfi(), vc1_decode_i_blocks_adv(), vc1_decode_p_mb(), vc1_decode_p_mb_intfi(), and vc1_decode_p_mb_intfr().

#define GET_MVDATA (   _dmv_x,
  _dmv_y 
)

Get MV differentials.

See also:
MVDATA decoding from 8.3.5.2, p(1)20
Parameters:
_dmv_xHorizontal differential for decoded MV
_dmv_yVertical differential for decoded MV

Definition at line 1202 of file vc1dec.c.

Referenced by vc1_decode_b_mb(), and vc1_decode_p_mb().

#define inc_blk_idx (   idx)
Value:
do { \
idx++; \
if (idx >= v->n_allocated_blks) \
idx = 0; \
} while (0)

Referenced by vc1_put_signed_blocks_clamped().

#define MB_INTRA_VLC_BITS   9

Definition at line 46 of file vc1dec.c.

Referenced by vc1_decode_i_blocks(), and vc1_decode_i_blocks_adv().

#define transpose (   x)    ((x >> 3) | ((x & 7) << 3))

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 207 of file vc1dec.c.


Function Documentation

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 70 of file vc1dec.c.

Referenced by vc1_decode_init(), and vc1_parse_init().

static av_always_inline int get_chroma_mv ( int *  mvx,
int *  mvy,
int *  a,
int  flag,
int *  tx,
int *  ty 
)
static

Definition at line 857 of file vc1dec.c.

Referenced by vc1_mc_4mv_chroma().

static av_always_inline void get_mvdata_interlaced ( VC1Context v,
int *  dmv_x,
int *  dmv_y,
int *  pred_flag 
)
static

Definition at line 1240 of file vc1dec.c.

Referenced by vc1_decode_b_mb_intfi(), vc1_decode_p_mb_intfi(), and vc1_decode_p_mb_intfr().

static int median4 ( int  a,
int  b,
int  c,
int  d 
)
inlinestatic

Definition at line 673 of file vc1dec.c.

Referenced by get_chroma_mv(), and vc1_mc_4mv_luma().

static av_always_inline int scale_mv ( int  value,
int  bfrac,
int  inv,
int  qs 
)
static

Definition at line 2099 of file vc1dec.c.

Referenced by vc1_pred_b_mv().

static av_always_inline int scale_mv_intfi ( int  value,
int  bfrac,
int  inv,
int  qs,
int  qs_last 
)
static

Definition at line 2118 of file vc1dec.c.

Referenced by vc1_pred_b_mv_intfi().

static av_always_inline int scaleforopp ( VC1Context v,
int  n,
int  dim,
int  dir 
)
static

Definition at line 1454 of file vc1dec.c.

Referenced by vc1_pred_mv().

static av_always_inline int scaleforopp_x ( VC1Context v,
int  n 
)
static

Definition at line 1375 of file vc1dec.c.

Referenced by scaleforopp().

static av_always_inline int scaleforopp_y ( VC1Context v,
int  n,
int  dir 
)
static

Definition at line 1402 of file vc1dec.c.

Referenced by scaleforopp().

static av_always_inline int scaleforsame ( VC1Context v,
int  i,
int  n,
int  dim,
int  dir 
)
static

Definition at line 1433 of file vc1dec.c.

Referenced by vc1_pred_mv().

static av_always_inline int scaleforsame_x ( VC1Context v,
int  n,
int  dir 
)
static

Definition at line 1305 of file vc1dec.c.

Referenced by scaleforsame().

static av_always_inline int scaleforsame_y ( VC1Context v,
int  i,
int  n,
int  dir 
)
static

Definition at line 1338 of file vc1dec.c.

Referenced by scaleforsame().

static av_always_inline void vc1_apply_p_h_loop_filter ( VC1Context v,
int  block_num 
)
static

Definition at line 3497 of file vc1dec.c.

Referenced by vc1_apply_p_loop_filter().

static void vc1_apply_p_loop_filter ( VC1Context v)
static

Definition at line 3557 of file vc1dec.c.

Referenced by vc1_decode_p_blocks().

static av_always_inline void vc1_apply_p_v_loop_filter ( VC1Context v,
int  block_num 
)
static

Definition at line 3433 of file vc1dec.c.

Referenced by vc1_apply_p_loop_filter().

static void vc1_b_mc ( VC1Context v,
int  dmv_x[2],
int  dmv_y[2],
int  direct,
int  mode 
)
inlinestatic

Reconstruct motion vector for B-frame and do motion compensation.

Definition at line 2134 of file vc1dec.c.

Referenced by vc1_decode_b_mb(), and vc1_decode_b_mb_intfi().

static int vc1_coded_block_pred ( MpegEncContext s,
int  n,
uint8_t **  coded_block_ptr 
)
inlinestatic

Definition at line 2584 of file vc1dec.c.

Referenced by vc1_decode_i_blocks(), and vc1_decode_i_blocks_adv().

static void vc1_decode_ac_coeff ( VC1Context v,
int *  last,
int *  skip,
int *  value,
int  codingset 
)
static

Decode one AC coefficient.

Parameters:
vThe VC1 context
lastLast coefficient
skipHow much zero coefficients to skip
valueDecoded AC coefficient value
codingsetset of VLC to decode data
See also:
8.1.3.4

Definition at line 2620 of file vc1dec.c.

Referenced by vc1_decode_i_block(), vc1_decode_i_block_adv(), vc1_decode_intra_block(), and vc1_decode_p_block().

static void vc1_decode_b_blocks ( VC1Context v)
static

Definition at line 4806 of file vc1dec.c.

Referenced by vc1_decode_blocks().

static void vc1_decode_b_mb ( VC1Context v)
static

Decode one B-frame MB (in Main profile)

Definition at line 4153 of file vc1dec.c.

Referenced by vc1_decode_b_blocks().

static void vc1_decode_b_mb_intfi ( VC1Context v)
static

Decode one B-frame MB (in interlaced field B picture)

Definition at line 4305 of file vc1dec.c.

Referenced by vc1_decode_b_blocks().

static void vc1_decode_blocks ( VC1Context v)
static

Definition at line 4886 of file vc1dec.c.

Referenced by vc1_decode_frame().

static av_cold int vc1_decode_end ( AVCodecContext avctx)
static

Close a VC1/WMV3 decoder.

Warning:
Initial try at using MpegEncContext stuff

Definition at line 5409 of file vc1dec.c.

Referenced by vc1_decode_frame().

static int vc1_decode_frame ( AVCodecContext avctx,
void data,
int *  data_size,
AVPacket avpkt 
)
static

Decode a VC1/WMV3 frame.

Todo:
TODO: Handle VC-1 IDUs (Transport level?)

Definition at line 5446 of file vc1dec.c.

static int vc1_decode_i_block ( VC1Context v,
DCTELEM  block[64],
int  n,
int  coded,
int  codingset 
)
static

Decode intra block in intra frames - should be faster than decode_intra_block.

Parameters:
vVC1Context
blockblock to decode
[in]nsubblock index
codedare AC coeffs present or not
codingsetset of VLC to decode data

Definition at line 2686 of file vc1dec.c.

Referenced by vc1_decode_i_blocks().

static int vc1_decode_i_block_adv ( VC1Context v,
DCTELEM  block[64],
int  n,
int  coded,
int  codingset,
int  mquant 
)
static

Decode intra block in intra frames - should be faster than decode_intra_block.

Parameters:
vVC1Context
blockblock to decode
[in]nsubblock number
codedare AC coeffs present or not
codingsetset of VLC to decode data
mquantquantizer value for this macroblock

Definition at line 2849 of file vc1dec.c.

Referenced by vc1_decode_i_blocks_adv().

static void vc1_decode_i_blocks ( VC1Context v)
static

Decode blocks of I-frame.

Definition at line 4461 of file vc1dec.c.

Referenced by vc1_decode_blocks().

static void vc1_decode_i_blocks_adv ( VC1Context v)
static

Decode blocks of I-frame for advanced profile.

Definition at line 4598 of file vc1dec.c.

Referenced by vc1_decode_blocks().

static av_cold int vc1_decode_init ( AVCodecContext avctx)
static

Initialize a VC1/WMV3 decoder.

Todo:

TODO: Handle VC-1 IDUs (Transport level?)

TODO: Decypher remaining bits in extra_data

Definition at line 5266 of file vc1dec.c.

static av_cold int vc1_decode_init_alloc_tables ( VC1Context v)
static

Definition at line 5196 of file vc1dec.c.

Referenced by vc1_decode_frame().

static int vc1_decode_intra_block ( VC1Context v,
DCTELEM  block[64],
int  n,
int  coded,
int  mquant,
int  codingset 
)
static

Decode intra block in inter frames - more generic version than vc1_decode_i_block.

Parameters:
vVC1Context
blockblock to decode
[in]nsubblock index
codedare AC coeffs present or not
mquantblock quantizer
codingsetset of VLC to decode data

Definition at line 3061 of file vc1dec.c.

Referenced by vc1_decode_b_mb(), vc1_decode_b_mb_intfi(), vc1_decode_p_mb(), vc1_decode_p_mb_intfi(), and vc1_decode_p_mb_intfr().

static int vc1_decode_p_block ( VC1Context v,
DCTELEM  block[64],
int  n,
int  mquant,
int  ttmb,
int  first_block,
uint8_t *  dst,
int  linesize,
int  skip_block,
int *  ttmb_out 
)
static
static void vc1_decode_p_blocks ( VC1Context v)
static

Definition at line 4731 of file vc1dec.c.

Referenced by vc1_decode_blocks().

static int vc1_decode_p_mb ( VC1Context v)
static

Decode one P-frame MB.

Definition at line 3584 of file vc1dec.c.

Referenced by vc1_decode_p_blocks().

static int vc1_decode_p_mb_intfi ( VC1Context v)
static

Definition at line 4031 of file vc1dec.c.

Referenced by vc1_decode_p_blocks().

static int vc1_decode_p_mb_intfr ( VC1Context v)
static

Definition at line 3823 of file vc1dec.c.

Referenced by vc1_decode_p_blocks().

static void vc1_decode_skip_blocks ( VC1Context v)
static

Definition at line 4867 of file vc1dec.c.

Referenced by vc1_decode_blocks().

static int vc1_i_pred_dc ( MpegEncContext s,
int  overlap,
int  pq,
int  n,
int16_t **  dc_val_ptr,
int *  dir_ptr 
)
inlinestatic

Get predicted DC value for I-frames only prediction dir: left=0, top=1.

Parameters:
sMpegEncContext
overlapflag indicating that overlap filtering is used
pqinteger part of picture quantizer
[in]nblock index in the current MB
dc_val_ptrPointer to DC predictor
dir_ptrPrediction direction for use in AC prediction

Definition at line 2442 of file vc1dec.c.

Referenced by vc1_decode_i_block().

static void vc1_interp_mc ( VC1Context v)
static

Motion compensation for direct or interpolated blocks in B-frames.

Definition at line 1958 of file vc1dec.c.

Referenced by vc1_b_mc().

static void vc1_loop_filter_iblk ( VC1Context v,
int  pq 
)
static

Definition at line 298 of file vc1dec.c.

Referenced by vc1_decode_b_blocks(), and vc1_decode_i_blocks().

static void vc1_loop_filter_iblk_delayed ( VC1Context v,
int  pq 
)
static

Definition at line 325 of file vc1dec.c.

Referenced by vc1_decode_i_blocks_adv().

static void vc1_mc_1mv ( VC1Context v,
int  dir 
)
static

Do motion compensation over 1 macroblock Mostly adapted hpel_motion and qpel_motion from mpegvideo.c.

Definition at line 473 of file vc1dec.c.

Referenced by vc1_b_mc(), vc1_decode_p_mb(), vc1_decode_p_mb_intfi(), and vc1_decode_p_mb_intfr().

static void vc1_mc_4mv_chroma ( VC1Context v,
int  dir 
)
static

Do motion compensation for 4-MV macroblock - both chroma blocks.

Definition at line 912 of file vc1dec.c.

Referenced by vc1_decode_b_mb_intfi(), vc1_decode_p_mb(), and vc1_decode_p_mb_intfi().

static void vc1_mc_4mv_chroma4 ( VC1Context v)
static

Do motion compensation for 4-MV field chroma macroblock (both U and V)

Definition at line 1070 of file vc1dec.c.

Referenced by vc1_decode_p_mb_intfr().

static void vc1_mc_4mv_luma ( VC1Context v,
int  n,
int  dir 
)
static

Do motion compensation for 4-MV macroblock - luminance block.

Definition at line 686 of file vc1dec.c.

Referenced by vc1_decode_b_mb_intfi(), vc1_decode_p_mb(), vc1_decode_p_mb_intfi(), and vc1_decode_p_mb_intfr().

static void vc1_pred_b_mv ( VC1Context v,
int  dmv_x[2],
int  dmv_y[2],
int  direct,
int  mvtype 
)
inlinestatic

Definition at line 2163 of file vc1dec.c.

Referenced by vc1_decode_b_mb().

static void vc1_pred_b_mv_intfi ( VC1Context v,
int  n,
int *  dmv_x,
int *  dmv_y,
int  mv1,
int *  pred_flag 
)
inlinestatic

Definition at line 2376 of file vc1dec.c.

Referenced by vc1_decode_b_mb_intfi().

static int vc1_pred_dc ( MpegEncContext s,
int  overlap,
int  pq,
int  n,
int  a_avail,
int  c_avail,
int16_t **  dc_val_ptr,
int *  dir_ptr 
)
inlinestatic

Get predicted DC value prediction dir: left=0, top=1.

Parameters:
sMpegEncContext
overlapflag indicating that overlap filtering is used
pqinteger part of picture quantizer
[in]nblock index in the current MB
a_availflag indicating top block availability
c_availflag indicating left block availability
dc_val_ptrPointer to DC predictor
dir_ptrPrediction direction for use in AC prediction

Definition at line 2507 of file vc1dec.c.

Referenced by vc1_decode_i_block_adv(), and vc1_decode_intra_block().

static void vc1_pred_mv ( VC1Context v,
int  n,
int  dmv_x,
int  dmv_y,
int  mv1,
int  r_x,
int  r_y,
uint8_t *  is_intra,
int  pred_flag,
int  dir 
)
inlinestatic

Predict and set motion vector.

Definition at line 1480 of file vc1dec.c.

Referenced by vc1_decode_p_mb(), vc1_decode_p_mb_intfi(), and vc1_pred_b_mv_intfi().

static void vc1_pred_mv_intfr ( VC1Context v,
int  n,
int  dmv_x,
int  dmv_y,
int  mvn,
int  r_x,
int  r_y,
uint8_t *  is_intra 
)
inlinestatic

Predict and set motion vector for interlaced frame picture MBs.

Definition at line 1732 of file vc1dec.c.

Referenced by vc1_decode_p_mb_intfr().

static void vc1_put_signed_blocks_clamped ( VC1Context v)
static

Definition at line 221 of file vc1dec.c.

Referenced by vc1_decode_i_blocks_adv().

static void vc1_smooth_overlap_filter_iblk ( VC1Context v)
static

Definition at line 393 of file vc1dec.c.

Referenced by vc1_decode_i_blocks_adv().


Variable Documentation

AVCodec ff_vc1_decoder
Initial value:
{
.name = "vc1",
.id = CODEC_ID_VC1,
.priv_data_size = sizeof(VC1Context),
.capabilities = CODEC_CAP_DR1 | CODEC_CAP_DELAY,
.long_name = NULL_IF_CONFIG_SMALL("SMPTE VC-1"),
}

Definition at line 5813 of file vc1dec.c.

const int offset_table[6] = { 0, 1, 3, 7, 15, 31 }
static

Definition at line 3431 of file vc1dec.c.

Referenced by seq_parse_frame_data().

const int offset_table1[9] = { 0, 1, 2, 4, 8, 16, 32, 64, 128 }
static

Definition at line 62 of file vc1dec.c.

Referenced by get_mvdata_interlaced().

const int offset_table2[9] = { 0, 1, 3, 7, 15, 31, 63, 127, 255 }
static

Definition at line 63 of file vc1dec.c.

Referenced by get_mvdata_interlaced().

const AVProfile profiles[]
static
Initial value:
{
{ FF_PROFILE_VC1_SIMPLE, "Simple" },
{ FF_PROFILE_VC1_MAIN, "Main" },
{ FF_PROFILE_VC1_COMPLEX, "Complex" },
{ FF_PROFILE_VC1_ADVANCED, "Advanced" },
}

Definition at line 5805 of file vc1dec.c.

const int size_table[6] = { 0, 2, 3, 4, 5, 8 }
static

Definition at line 3430 of file vc1dec.c.

const uint16_t vlc_offs[]
static
Initial value:
{
0, 520, 552, 616, 1128, 1160, 1224, 1740, 1772, 1836, 1900, 2436,
2986, 3050, 3610, 4154, 4218, 4746, 5326, 5390, 5902, 6554, 7658, 8342,
9304, 9988, 10630, 11234, 12174, 13006, 13560, 14232, 14786, 15432, 16350, 17522,
20372, 21818, 22330, 22394, 23166, 23678, 23742, 24820, 25332, 25396, 26460, 26980,
27048, 27592, 27600, 27608, 27616, 27624, 28224, 28258, 28290, 28802, 28834, 28866,
29378, 29412, 29444, 29960, 29994, 30026, 30538, 30572, 30604, 31120, 31154, 31186,
31714, 31746, 31778, 32306, 32340, 32372
}

Definition at line 51 of file vc1dec.c.

Referenced by ff_vc1_init_common().