FFmpeg
Macros | Functions
vc1dsp.c File Reference

VC-1 and WMV3 decoder. More...

#include "libavutil/avassert.h"
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
#include "h264chroma.h"
#include "qpeldsp.h"
#include "rnd_avg.h"
#include "vc1dsp.h"
#include "startcode.h"

Macros

#define VC1_MSPEL_FILTER_16B(DIR, TYPE)
 
#define VC1_MSPEL_MC(OP, OP4, OPNAME)
 
#define op_put(a, b)   (a) = av_clip_uint8(b)
 
#define op_avg(a, b)   (a) = ((a) + av_clip_uint8(b) + 1) >> 1
 
#define op4_avg(a, b)   (a) = rnd_avg32(a, b)
 
#define op4_put(a, b)   (a) = (b)
 
#define PUT_VC1_MSPEL(a, b)
 
#define chroma_mc(a)
 
#define avg2(a, b)   (((a) + (b) + 1) >> 1)
 
#define FN_ASSIGN(X, Y)
 

Functions

av_cold void ff_vc1dsp_init (VC1DSPContext *dsp)
 

Detailed Description

VC-1 and WMV3 decoder.

Macro Definition Documentation

§ chroma_mc

#define chroma_mc (   a)
Value:
((A * src[a] + B * src[a + 1] + \
C * src[stride + a] + D * src[stride + a + 1] + 32 - 4) >> 6)

§ FN_ASSIGN

#define FN_ASSIGN (   X,
 
)
Value:
dsp->put_vc1_mspel_pixels_tab[1][X+4*Y] = put_vc1_mspel_mc##X##Y##_c; \
dsp->put_vc1_mspel_pixels_tab[0][X+4*Y] = put_vc1_mspel_mc##X##Y##_16_c; \
dsp->avg_vc1_mspel_pixels_tab[1][X+4*Y] = avg_vc1_mspel_mc##X##Y##_c; \
dsp->avg_vc1_mspel_pixels_tab[0][X+4*Y] = avg_vc1_mspel_mc##X##Y##_16_c

§ PUT_VC1_MSPEL

#define PUT_VC1_MSPEL (   a,
 
)
Value:
static void put_vc1_mspel_mc ## a ## b ## _c(uint8_t *dst, \
const uint8_t *src, \
ptrdiff_t stride, int rnd) \
{ \
put_vc1_mspel_mc(dst, src, stride, a, b, rnd); \
} \
static void avg_vc1_mspel_mc ## a ## b ## _c(uint8_t *dst, \
const uint8_t *src, \
ptrdiff_t stride, int rnd) \
{ \
avg_vc1_mspel_mc(dst, src, stride, a, b, rnd); \
} \
static void put_vc1_mspel_mc ## a ## b ## _16_c(uint8_t *dst, \
const uint8_t *src, \
ptrdiff_t stride, int rnd) \
{ \
put_vc1_mspel_mc_16(dst, src, stride, a, b, rnd); \
} \
static void avg_vc1_mspel_mc ## a ## b ## _16_c(uint8_t *dst, \
const uint8_t *src, \
ptrdiff_t stride, int rnd) \
{ \
avg_vc1_mspel_mc_16(dst, src, stride, a, b, rnd); \
}

§ VC1_MSPEL_FILTER_16B

#define VC1_MSPEL_FILTER_16B (   DIR,
  TYPE 
)
Value:
static av_always_inline int vc1_mspel_ ## DIR ## _filter_16bits(const TYPE *src, \
int stride, \
int mode) \
{ \
switch(mode) { \
case 0: /* no shift - should not occur */ \
return 0; \
case 1: /* 1/4 shift */ \
return -4 * src[-stride] + 53 * src[0] + \
18 * src[stride] - 3 * src[stride * 2]; \
case 2: /* 1/2 shift */ \
return -1 * src[-stride] + 9 * src[0] + \
9 * src[stride] - 1 * src[stride * 2]; \
case 3: /* 3/4 shift */ \
return -3 * src[-stride] + 18 * src[0] + \
53 * src[stride] - 4 * src[stride * 2]; \
} \
return 0; /* should not occur */ \
}
mode
Use these values in ebur128_init (or'ed).
Definition: ebur128.h:83