libavcodec/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.

Data Structures

struct  SpriteData

Defines

#define MB_INTRA_VLC_BITS   9
#define DC_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

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 int get_fp_val (GetBitContext *gb)
static void vc1_sprite_parse_transform (GetBitContext *gb, int c[7])
static void vc1_parse_sprites (VC1Context *v, GetBitContext *gb, SpriteData *sd)
static void vc1_draw_sprites (VC1Context *v, SpriteData *sd)
static int vc1_decode_sprites (VC1Context *v, GetBitContext *gb)
static void vc1_sprite_flush (AVCodecContext *avctx)
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 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
AVCodec ff_wmv3_decoder
AVCodec ff_wmv3_vdpau_decoder
AVCodec ff_vc1_vdpau_decoder
AVCodec ff_wmv3image_decoder
AVCodec ff_vc1image_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.


Define Documentation

#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 1023 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_x Horizontal differential for decoded MV
_dmv_y Vertical differential for decoded MV

Definition at line 1060 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 65 of file vc1dec.c.


Function Documentation

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

Definition at line 715 of file vc1dec.c.

Referenced by vc1_mc_4mv_chroma().

static int get_fp_val ( GetBitContext gb  )  [inline, static]

Definition at line 4802 of file vc1dec.c.

Referenced by vc1_parse_sprites(), and vc1_sprite_parse_transform().

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

Definition at line 1098 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 
) [inline, static]

Definition at line 531 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 1957 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 1976 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 1312 of file vc1dec.c.

Referenced by vc1_pred_mv().

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

Definition at line 1233 of file vc1dec.c.

Referenced by scaleforopp().

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

Definition at line 1260 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 1291 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 1163 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 1196 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 3355 of file vc1dec.c.

Referenced by vc1_apply_p_loop_filter().

static void vc1_apply_p_loop_filter ( VC1Context v  )  [static]

Definition at line 3415 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 3291 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 
) [inline, static]

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

Definition at line 1992 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 
) [inline, static]

Definition at line 2442 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:
v The VC1 context
last Last coefficient
skip How much zero coefficients to skip
value Decoded AC coefficient value
codingset set of VLC to decode data
See also:
8.1.3.4

Definition at line 2478 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 4664 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 4011 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 4163 of file vc1dec.c.

Referenced by vc1_decode_b_blocks().

static void vc1_decode_blocks ( VC1Context v  )  [static]

Definition at line 4744 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 5267 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 5304 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:
v VC1Context
block block to decode
[in] n subblock index
coded are AC coeffs present or not
codingset set of VLC to decode data

Definition at line 2544 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:
v VC1Context
block block to decode
[in] n subblock number
coded are AC coeffs present or not
codingset set of VLC to decode data
mquant quantizer value for this macroblock

Definition at line 2707 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 4319 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 4456 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 5124 of file vc1dec.c.

static av_cold int vc1_decode_init_alloc_tables ( VC1Context v  )  [static]

Definition at line 5054 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:
v VC1Context
block block to decode
[in] n subblock index
coded are AC coeffs present or not
mquant block quantizer
codingset set of VLC to decode data

Definition at line 2919 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 4589 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 3442 of file vc1dec.c.

Referenced by vc1_decode_p_blocks().

static int vc1_decode_p_mb_intfi ( VC1Context v  )  [static]

Definition at line 3889 of file vc1dec.c.

Referenced by vc1_decode_p_blocks().

static int vc1_decode_p_mb_intfr ( VC1Context v  )  [static]

Definition at line 3681 of file vc1dec.c.

Referenced by vc1_decode_p_blocks().

static void vc1_decode_skip_blocks ( VC1Context v  )  [static]

Definition at line 4725 of file vc1dec.c.

Referenced by vc1_decode_blocks().

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

Definition at line 5001 of file vc1dec.c.

Referenced by vc1_decode_frame().

static void vc1_draw_sprites ( VC1Context v,
SpriteData sd 
) [static]

Definition at line 4908 of file vc1dec.c.

Referenced by vc1_decode_sprites().

static int vc1_i_pred_dc ( MpegEncContext s,
int  overlap,
int  pq,
int  n,
int16_t **  dc_val_ptr,
int *  dir_ptr 
) [inline, static]

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

Parameters:
s MpegEncContext
overlap flag indicating that overlap filtering is used
pq integer part of picture quantizer
[in] n block index in the current MB
dc_val_ptr Pointer to DC predictor
dir_ptr Prediction direction for use in AC prediction

Definition at line 2300 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 1816 of file vc1dec.c.

Referenced by vc1_b_mc().

static void vc1_loop_filter_iblk ( VC1Context v,
int  pq 
) [static]

Definition at line 156 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 183 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 331 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 770 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 928 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 544 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_parse_sprites ( VC1Context v,
GetBitContext gb,
SpriteData sd 
) [static]

Definition at line 4841 of file vc1dec.c.

Referenced by vc1_decode_sprites().

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

Definition at line 2021 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 
) [inline, static]

Definition at line 2234 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 
) [inline, static]

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

Parameters:
s MpegEncContext
overlap flag indicating that overlap filtering is used
pq integer part of picture quantizer
[in] n block index in the current MB
a_avail flag indicating top block availability
c_avail flag indicating left block availability
dc_val_ptr Pointer to DC predictor
dir_ptr Prediction direction for use in AC prediction

Definition at line 2365 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 
) [inline, static]

Predict and set motion vector.

Definition at line 1338 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 
) [inline, static]

Predict and set motion vector for interlaced frame picture MBs.

Definition at line 1590 of file vc1dec.c.

Referenced by vc1_decode_p_mb_intfr().

static void vc1_put_signed_blocks_clamped ( VC1Context v  )  [static]

Definition at line 79 of file vc1dec.c.

Referenced by vc1_decode_i_blocks_adv().

static void vc1_smooth_overlap_filter_iblk ( VC1Context v  )  [static]

Definition at line 251 of file vc1dec.c.

Referenced by vc1_decode_i_blocks_adv().

static void vc1_sprite_flush ( AVCodecContext avctx  )  [static]

Definition at line 5034 of file vc1dec.c.

static void vc1_sprite_parse_transform ( GetBitContext gb,
int  c[7] 
) [static]

Definition at line 4807 of file vc1dec.c.

Referenced by vc1_parse_sprites().


Variable Documentation

Initial value:
 {
    .name           = "vc1",
    .type           = AVMEDIA_TYPE_VIDEO,
    .id             = CODEC_ID_VC1,
    .priv_data_size = sizeof(VC1Context),
    .init           = vc1_decode_init,
    .close          = vc1_decode_end,
    .decode         = vc1_decode_frame,
    .flush          = ff_mpeg_flush,
    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_DELAY,
    .long_name      = NULL_IF_CONFIG_SMALL("SMPTE VC-1"),
    .pix_fmts       = ff_hwaccel_pixfmt_list_420,
    .profiles       = NULL_IF_CONFIG_SMALL(profiles)
}

Definition at line 5671 of file vc1dec.c.

Initial value:
 {
    .name           = "vc1_vdpau",
    .type           = AVMEDIA_TYPE_VIDEO,
    .id             = CODEC_ID_VC1,
    .priv_data_size = sizeof(VC1Context),
    .init           = vc1_decode_init,
    .close          = vc1_decode_end,
    .decode         = vc1_decode_frame,
    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_DELAY | CODEC_CAP_HWACCEL_VDPAU,
    .long_name      = NULL_IF_CONFIG_SMALL("SMPTE VC-1 VDPAU"),
    .pix_fmts       = (const enum PixelFormat[]){PIX_FMT_VDPAU_VC1, PIX_FMT_NONE},
    .profiles       = NULL_IF_CONFIG_SMALL(profiles)
}

Definition at line 5720 of file vc1dec.c.

Initial value:
 {
    .name           = "vc1image",
    .type           = AVMEDIA_TYPE_VIDEO,
    .id             = CODEC_ID_VC1IMAGE,
    .priv_data_size = sizeof(VC1Context),
    .init           = vc1_decode_init,
    .close          = vc1_decode_end,
    .decode         = vc1_decode_frame,
    .capabilities   = CODEC_CAP_DR1,
    .flush          = vc1_sprite_flush,
    .long_name      = NULL_IF_CONFIG_SMALL("Windows Media Video 9 Image v2"),
    .pix_fmts       = ff_pixfmt_list_420
}

Definition at line 5752 of file vc1dec.c.

Initial value:
 {
    .name           = "wmv3",
    .type           = AVMEDIA_TYPE_VIDEO,
    .id             = CODEC_ID_WMV3,
    .priv_data_size = sizeof(VC1Context),
    .init           = vc1_decode_init,
    .close          = vc1_decode_end,
    .decode         = vc1_decode_frame,
    .flush          = ff_mpeg_flush,
    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_DELAY,
    .long_name      = NULL_IF_CONFIG_SMALL("Windows Media Video 9"),
    .pix_fmts       = ff_hwaccel_pixfmt_list_420,
    .profiles       = NULL_IF_CONFIG_SMALL(profiles)
}

Definition at line 5687 of file vc1dec.c.

Initial value:
 {
    .name           = "wmv3_vdpau",
    .type           = AVMEDIA_TYPE_VIDEO,
    .id             = CODEC_ID_WMV3,
    .priv_data_size = sizeof(VC1Context),
    .init           = vc1_decode_init,
    .close          = vc1_decode_end,
    .decode         = vc1_decode_frame,
    .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_DELAY | CODEC_CAP_HWACCEL_VDPAU,
    .long_name      = NULL_IF_CONFIG_SMALL("Windows Media Video 9 VDPAU"),
    .pix_fmts       = (const enum PixelFormat[]){PIX_FMT_VDPAU_WMV3, PIX_FMT_NONE},
    .profiles       = NULL_IF_CONFIG_SMALL(profiles)
}

Definition at line 5704 of file vc1dec.c.

Initial value:
 {
    .name           = "wmv3image",
    .type           = AVMEDIA_TYPE_VIDEO,
    .id             = CODEC_ID_WMV3IMAGE,
    .priv_data_size = sizeof(VC1Context),
    .init           = vc1_decode_init,
    .close          = vc1_decode_end,
    .decode         = vc1_decode_frame,
    .capabilities   = CODEC_CAP_DR1,
    .flush          = vc1_sprite_flush,
    .long_name      = NULL_IF_CONFIG_SMALL("Windows Media Video 9 Image"),
    .pix_fmts       = ff_pixfmt_list_420
}

Definition at line 5736 of file vc1dec.c.

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

Definition at line 3289 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 51 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 52 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" },
    { FF_PROFILE_UNKNOWN },
}

Definition at line 5663 of file vc1dec.c.

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

Definition at line 3288 of file vc1dec.c.