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 | |
| 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 | |
| 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 | |
| |
| #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. | |
VC-1 and WMV3 decoder.
Definition in file vc1dec.c.
| #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 | ( | ) |
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.
| _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 | ) |
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)) |
Referenced by avfilter_register_all(), and vc1_decode_init().
| enum Imode |
| 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.
| 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 |
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.
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] |
| 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.
| 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.
| 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] |
| 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.
| 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] |
Decode P block.
Definition at line 3129 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 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.
| 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.
| 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] |
| 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().
{
.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)
}
{
.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)
}
{
.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
}
{
.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)
}
{
.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)
}
{
.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
}
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().
{
{ FF_PROFILE_VC1_SIMPLE, "Simple" },
{ FF_PROFILE_VC1_MAIN, "Main" },
{ FF_PROFILE_VC1_COMPLEX, "Complex" },
{ FF_PROFILE_VC1_ADVANCED, "Advanced" },
{ FF_PROFILE_UNKNOWN },
}
const int size_table[6] = { 0, 2, 3, 4, 5, 8 } [static] |