FFmpeg
Macros | Functions
vc1.c File Reference

VC-1 and WMV3 decoder common code. More...

#include "libavutil/attributes.h"
#include "internal.h"
#include "avcodec.h"
#include "mpegvideo.h"
#include "vc1.h"
#include "vc1data.h"
#include "wmv2data.h"
#include "unary.h"
#include "simple_idct.h"

Macros

#define INIT_LUT(lumscale, lumshift, luty, lutuv, chain)
 
#define ROTATE(DEF, L, N, C, A)
 

Functions

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)
 
av_cold int ff_vc1_init_common (VC1Context *v)
 Init VC-1 specific tables and VC1Context members. More...
 
VC-1 Bitplane decoding
See also
8.7, p56

Detailed Description

VC-1 and WMV3 decoder common code.

Macro Definition Documentation

§ INIT_LUT

#define INIT_LUT (   lumscale,
  lumshift,
  luty,
  lutuv,
  chain 
)
Value:
do { \
int scale, shift, i; \
if (!lumscale) { \
scale = -64; \
shift = (255 - lumshift * 2) * 64; \
if (lumshift > 31) \
shift += 128 << 6; \
} else { \
scale = lumscale + 32; \
if (lumshift > 31) \
shift = (lumshift - 64) * 64; \
else \
shift = lumshift << 6; \
} \
for (i = 0; i < 256; i++) { \
int iy = chain ? luty[i] : i; \
int iu = chain ? lutuv[i] : i; \
luty[i] = av_clip_uint8((scale * iy + shift + 32) >> 6); \
lutuv[i] = av_clip_uint8((scale * (iu - 128) + 128*64 + 32) >> 6);\
} \
} while(0)

§ ROTATE

#define ROTATE (   DEF,
  L,
  N,
  C,
 
)
Value:
do { \
if (v->s.pict_type == AV_PICTURE_TYPE_BI || v->s.pict_type == AV_PICTURE_TYPE_B) { \
C = A; \
} else { \
DEF; \
memcpy(&tmp, L , sizeof(tmp)); \
memcpy(L , N , sizeof(tmp)); \
memcpy(N , &tmp, sizeof(tmp)); \
C = N; \
} \
} while(0)
BI type.
Definition: avutil.h:280
Bi-dir predicted.
Definition: avutil.h:276

Function Documentation

§ ff_vc1_decode_sequence_header()

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

§ ff_vc1_init_common()

av_cold int ff_vc1_init_common ( VC1Context v)

Init VC-1 specific tables and VC1Context members.

Parameters
vThe VC1Context to initialize
Returns
Status