|
FFmpeg
|
VC-1 and WMV3 block decoding routines. More...
#include "avcodec.h"#include "mpegutils.h"#include "mpegvideo.h"#include "msmpeg4data.h"#include "unary.h"#include "vc1.h"#include "vc1_pred.h"#include "vc1acdata.h"#include "vc1data.h"Go to the source code of this file.
Macros | |
| #define | MB_INTRA_VLC_BITS 9 |
| #define | DC_VLC_BITS 9 |
| #define | inc_blk_idx(idx) |
Functions | |
| static void | vc1_put_signed_blocks_clamped (VC1Context *v) |
| static int | vc1_decode_p_mb (VC1Context *v) |
| Decode one P-frame MB. More... | |
| 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) More... | |
| static void | vc1_decode_b_mb_intfi (VC1Context *v) |
| Decode one B-frame MB (in interlaced field B picture) More... | |
| static int | vc1_decode_b_mb_intfr (VC1Context *v) |
| Decode one B-frame MB (in interlaced frame B picture) More... | |
| static void | vc1_decode_i_blocks (VC1Context *v) |
| Decode blocks of I-frame. More... | |
| static void | vc1_decode_i_blocks_adv (VC1Context *v) |
| Decode blocks of I-frame for advanced profile. More... | |
| static void | vc1_decode_p_blocks (VC1Context *v) |
| static void | vc1_decode_b_blocks (VC1Context *v) |
| static void | vc1_decode_skip_blocks (VC1Context *v) |
| void | ff_vc1_decode_blocks (VC1Context *v) |
VC-1 Bitplane decoding | |
| |
| static void | init_block_index (VC1Context *v) |
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. More... | |
| static int | vc1_decode_i_block (VC1Context *v, int16_t block[64], int n, int coded, int codingset) |
| Decode intra block in intra frames - should be faster than decode_intra_block. More... | |
| static int | vc1_decode_i_block_adv (VC1Context *v, int16_t block[64], int n, int coded, int codingset, int mquant) |
| Decode intra block in intra frames - should be faster than decode_intra_block. More... | |
| static int | vc1_decode_intra_block (VC1Context *v, int16_t block[64], int n, int coded, int mquant, int codingset) |
| Decode intra block in inter frames - more generic version than vc1_decode_i_block. More... | |
| static int | vc1_decode_p_block (VC1Context *v, int16_t 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. More... | |
Variables | |
| static const uint8_t | offset_table [2][9] |
| static const uint8_t | size_table [6] = { 0, 2, 3, 4, 5, 8 } |
VC-1 Block-level functions | |
| |
| #define | GET_MQUANT() |
| Get macroblock-level quantizer scale. More... | |
| #define | GET_MVDATA(_dmv_x, _dmv_y) |
| Get MV differentials. More... | |
| static av_always_inline void | get_mvdata_interlaced (VC1Context *v, int *dmv_x, int *dmv_y, int *pred_flag) |
| 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. More... | |
| 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. More... | |
| static int | ff_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. More... | |
VC-1 and WMV3 block decoding routines.
Definition in file vc1_block.c.
| #define MB_INTRA_VLC_BITS 9 |
Definition at line 39 of file vc1_block.c.
Referenced by vc1_decode_i_blocks(), and vc1_decode_i_blocks_adv().
| #define DC_VLC_BITS 9 |
Definition at line 40 of file vc1_block.c.
Referenced by vc1_decode_i_block(), vc1_decode_i_block_adv(), and vc1_decode_intra_block().
| #define inc_blk_idx | ( | idx | ) |
Referenced by vc1_put_signed_blocks_clamped().
| #define GET_MQUANT | ( | ) |
Get macroblock-level quantizer scale.
Definition at line 163 of file vc1_block.c.
Referenced by vc1_decode_b_mb(), vc1_decode_b_mb_intfi(), vc1_decode_b_mb_intfr(), 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 205 of file vc1_block.c.
Referenced by vc1_decode_b_mb(), and vc1_decode_p_mb().
|
inlinestatic |
Definition at line 56 of file vc1_block.c.
Referenced by vc1_decode_b_blocks(), vc1_decode_i_blocks(), vc1_decode_i_blocks_adv(), vc1_decode_p_blocks(), and vc1_decode_skip_blocks().
|
static |
Definition at line 69 of file vc1_block.c.
Referenced by vc1_decode_i_blocks_adv().
|
static |
Definition at line 243 of file vc1_block.c.
Referenced by vc1_decode_b_mb_intfi(), vc1_decode_b_mb_intfr(), vc1_decode_p_mb_intfi(), and vc1_decode_p_mb_intfr().
|
inlinestatic |
Reconstruct motion vector for B-frame and do motion compensation.
Definition at line 294 of file vc1_block.c.
Referenced by vc1_decode_b_mb(), and vc1_decode_b_mb_intfi().
|
inlinestatic |
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 320 of file vc1_block.c.
Referenced by vc1_decode_i_block().
|
inlinestatic |
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 385 of file vc1_block.c.
Referenced by vc1_decode_i_block_adv(), and vc1_decode_intra_block().
|
inlinestatic |
Definition at line 456 of file vc1_block.c.
Referenced by vc1_decode_i_blocks(), and vc1_decode_i_blocks_adv().
|
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 492 of file vc1_block.c.
Referenced by vc1_decode_i_block(), vc1_decode_i_block_adv(), vc1_decode_intra_block(), and vc1_decode_p_block().
|
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 553 of file vc1_block.c.
Referenced by vc1_decode_i_blocks().
|
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 693 of file vc1_block.c.
Referenced by vc1_decode_i_blocks_adv().
|
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 883 of file vc1_block.c.
Referenced by vc1_decode_b_mb(), vc1_decode_b_mb_intfi(), vc1_decode_b_mb_intfr(), vc1_decode_p_mb(), vc1_decode_p_mb_intfi(), and vc1_decode_p_mb_intfr().
|
static |
Decode P block.
Definition at line 1089 of file vc1_block.c.
Referenced by vc1_decode_b_mb(), vc1_decode_b_mb_intfi(), vc1_decode_b_mb_intfr(), vc1_decode_p_mb(), vc1_decode_p_mb_intfi(), and vc1_decode_p_mb_intfr().
|
static |
Decode one P-frame MB.
Definition at line 1252 of file vc1_block.c.
Referenced by vc1_decode_p_blocks().
|
static |
Definition at line 1496 of file vc1_block.c.
Referenced by vc1_decode_p_blocks().
|
static |
Definition at line 1704 of file vc1_block.c.
Referenced by vc1_decode_p_blocks().
|
static |
Decode one B-frame MB (in Main profile)
Definition at line 1825 of file vc1_block.c.
Referenced by vc1_decode_b_blocks().
|
static |
Decode one B-frame MB (in interlaced field B picture)
Definition at line 1980 of file vc1_block.c.
Referenced by vc1_decode_b_blocks().
|
static |
Decode one B-frame MB (in interlaced frame B picture)
Definition at line 2140 of file vc1_block.c.
Referenced by vc1_decode_b_blocks().
|
static |
Decode blocks of I-frame.
Definition at line 2487 of file vc1_block.c.
Referenced by ff_vc1_decode_blocks().
|
static |
Decode blocks of I-frame for advanced profile.
Definition at line 2632 of file vc1_block.c.
Referenced by ff_vc1_decode_blocks().
|
static |
Definition at line 2766 of file vc1_block.c.
Referenced by ff_vc1_decode_blocks().
|
static |
Definition at line 2843 of file vc1_block.c.
Referenced by ff_vc1_decode_blocks().
|
static |
Definition at line 2907 of file vc1_block.c.
Referenced by ff_vc1_decode_blocks().
| void ff_vc1_decode_blocks | ( | VC1Context * | v | ) |
Definition at line 2929 of file vc1_block.c.
Referenced by decode_wmv9(), and vc1_decode_frame().
|
static |
Definition at line 43 of file vc1_block.c.
Referenced by get_mvdata_interlaced().
|
static |
Definition at line 1248 of file vc1_block.c.
1.8.6