VC-1 and WMV3 decoder. More...
#include "vc1dsp.h"Go to the source code of this file.
Defines | |
| #define | VC1_MSPEL_FILTER_16B(DIR, TYPE) |
| Filter in case of 2 filters. | |
| #define | VC1_MSPEL_MC(OP, OPNAME) |
| Function used to do motion compensation with bicubic interpolation. | |
| #define | op_put(a, b) a = av_clip_uint8(b) |
| #define | op_avg(a, b) a = (a + av_clip_uint8(b) + 1) >> 1 |
| #define | PUT_VC1_MSPEL(a, b) |
| #define | avg2(a, b) ((a+b+1)>>1) |
Functions | |
| static void | vc1_v_overlap_c (uint8_t *src, int stride) |
| Apply overlap transform to horizontal edge. | |
| static void | vc1_h_overlap_c (uint8_t *src, int stride) |
| Apply overlap transform to vertical edge. | |
| static void | vc1_v_s_overlap_c (DCTELEM *top, DCTELEM *bottom) |
| static void | vc1_h_s_overlap_c (DCTELEM *left, DCTELEM *right) |
| static av_always_inline int | vc1_filter_line (uint8_t *src, int stride, int pq) |
| VC-1 in-loop deblocking filter for one line. | |
| static void | vc1_loop_filter (uint8_t *src, int step, int stride, int len, int pq) |
| VC-1 in-loop deblocking filter. | |
| static void | vc1_v_loop_filter4_c (uint8_t *src, int stride, int pq) |
| static void | vc1_h_loop_filter4_c (uint8_t *src, int stride, int pq) |
| static void | vc1_v_loop_filter8_c (uint8_t *src, int stride, int pq) |
| static void | vc1_h_loop_filter8_c (uint8_t *src, int stride, int pq) |
| static void | vc1_v_loop_filter16_c (uint8_t *src, int stride, int pq) |
| static void | vc1_h_loop_filter16_c (uint8_t *src, int stride, int pq) |
| static void | vc1_inv_trans_8x8_dc_c (uint8_t *dest, int linesize, DCTELEM *block) |
| Do inverse transform on 8x8 block. | |
| static void | vc1_inv_trans_8x8_c (DCTELEM block[64]) |
| static void | vc1_inv_trans_8x4_dc_c (uint8_t *dest, int linesize, DCTELEM *block) |
| Do inverse transform on 8x4 part of block. | |
| static void | vc1_inv_trans_8x4_c (uint8_t *dest, int linesize, DCTELEM *block) |
| static void | vc1_inv_trans_4x8_dc_c (uint8_t *dest, int linesize, DCTELEM *block) |
| Do inverse transform on 4x8 parts of block. | |
| static void | vc1_inv_trans_4x8_c (uint8_t *dest, int linesize, DCTELEM *block) |
| static void | vc1_inv_trans_4x4_dc_c (uint8_t *dest, int linesize, DCTELEM *block) |
| Do inverse transform on 4x4 part of block. | |
| static void | vc1_inv_trans_4x4_c (uint8_t *dest, int linesize, DCTELEM *block) |
| static av_always_inline int | vc1_mspel_filter (const uint8_t *src, int stride, int mode, int r) |
| Filter used to interpolate fractional pel values. | |
| static void | put_no_rnd_vc1_chroma_mc8_c (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y) |
| static void | put_no_rnd_vc1_chroma_mc4_c (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y) |
| static void | avg_no_rnd_vc1_chroma_mc8_c (uint8_t *dst, uint8_t *src, int stride, int h, int x, int y) |
| static void | sprite_h_c (uint8_t *dst, const uint8_t *src, int offset, int advance, int count) |
| static av_always_inline void | sprite_v_template (uint8_t *dst, const uint8_t *src1a, const uint8_t *src1b, int offset1, int two_sprites, const uint8_t *src2a, const uint8_t *src2b, int offset2, int alpha, int scaled, int width) |
| static void | sprite_v_single_c (uint8_t *dst, const uint8_t *src1a, const uint8_t *src1b, int offset, int width) |
| static void | sprite_v_double_noscale_c (uint8_t *dst, const uint8_t *src1a, const uint8_t *src2a, int alpha, int width) |
| static void | sprite_v_double_onescale_c (uint8_t *dst, const uint8_t *src1a, const uint8_t *src1b, int offset1, const uint8_t *src2a, int alpha, int width) |
| static void | sprite_v_double_twoscale_c (uint8_t *dst, const uint8_t *src1a, const uint8_t *src1b, int offset1, const uint8_t *src2a, const uint8_t *src2b, int offset2, int alpha, int width) |
| av_cold void | ff_vc1dsp_init (VC1DSPContext *dsp) |
VC-1 and WMV3 decoder.
Definition in file vc1dsp.c.
| #define avg2 | ( | a, | ||
| b | ||||
| ) | ((a+b+1)>>1) |
Definition at line 698 of file vc1dsp.c.
Referenced by avg_no_rnd_vc1_chroma_mc8_c().
| #define op_avg | ( | a, | ||
| b | ||||
| ) | a = (a + av_clip_uint8(b) + 1) >> 1 |
| #define PUT_VC1_MSPEL | ( | a, | ||
| b | ||||
| ) |
static void put_vc1_mspel_mc ## a ## b ##_c(uint8_t *dst, const uint8_t *src, int 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, int stride, int rnd) { \ avg_vc1_mspel_mc(dst, src, stride, a, b, rnd); \ }
| #define VC1_MSPEL_FILTER_16B | ( | DIR, | ||
| TYPE | ||||
| ) |
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 -src[-stride] + 9*src[0] + 9*src[stride] - 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 */ \ }
Filter in case of 2 filters.
| #define VC1_MSPEL_MC | ( | OP, | ||
| OPNAME | ||||
| ) |
Function used to do motion compensation with bicubic interpolation.
Definition at line 563 of file vc1dsp.c.
Referenced by VC1_HOR_16b_SHIFT2().
| static void avg_no_rnd_vc1_chroma_mc8_c | ( | uint8_t * | dst, | |
| uint8_t * | src, | |||
| int | stride, | |||
| int | h, | |||
| int | x, | |||
| int | y | |||
| ) | [static] |
| av_cold void ff_vc1dsp_init | ( | VC1DSPContext * | dsp | ) |
Definition at line 783 of file vc1dsp.c.
Referenced by vc1_decode_init().
| static void put_no_rnd_vc1_chroma_mc4_c | ( | uint8_t * | dst, | |
| uint8_t * | src, | |||
| int | stride, | |||
| int | h, | |||
| int | x, | |||
| int | y | |||
| ) | [static] |
| static void put_no_rnd_vc1_chroma_mc8_c | ( | uint8_t * | dst, | |
| uint8_t * | src, | |||
| int | stride, | |||
| int | h, | |||
| int | x, | |||
| int | y | |||
| ) | [static] |
| static void sprite_h_c | ( | uint8_t * | dst, | |
| const uint8_t * | src, | |||
| int | offset, | |||
| int | advance, | |||
| int | count | |||
| ) | [static] |
| static void sprite_v_double_noscale_c | ( | uint8_t * | dst, | |
| const uint8_t * | src1a, | |||
| const uint8_t * | src2a, | |||
| int | alpha, | |||
| int | width | |||
| ) | [static] |
| static void sprite_v_double_onescale_c | ( | uint8_t * | dst, | |
| const uint8_t * | src1a, | |||
| const uint8_t * | src1b, | |||
| int | offset1, | |||
| const uint8_t * | src2a, | |||
| int | alpha, | |||
| int | width | |||
| ) | [static] |
| static void sprite_v_double_twoscale_c | ( | uint8_t * | dst, | |
| const uint8_t * | src1a, | |||
| const uint8_t * | src1b, | |||
| int | offset1, | |||
| const uint8_t * | src2a, | |||
| const uint8_t * | src2b, | |||
| int | offset2, | |||
| int | alpha, | |||
| int | width | |||
| ) | [static] |
| static void sprite_v_single_c | ( | uint8_t * | dst, | |
| const uint8_t * | src1a, | |||
| const uint8_t * | src1b, | |||
| int | offset, | |||
| int | width | |||
| ) | [static] |
| static av_always_inline void sprite_v_template | ( | uint8_t * | dst, | |
| const uint8_t * | src1a, | |||
| const uint8_t * | src1b, | |||
| int | offset1, | |||
| int | two_sprites, | |||
| const uint8_t * | src2a, | |||
| const uint8_t * | src2b, | |||
| int | offset2, | |||
| int | alpha, | |||
| int | scaled, | |||
| int | width | |||
| ) | [static] |
Definition at line 735 of file vc1dsp.c.
Referenced by sprite_v_double_noscale_c(), sprite_v_double_onescale_c(), sprite_v_double_twoscale_c(), and sprite_v_single_c().
| static av_always_inline int vc1_filter_line | ( | uint8_t * | src, | |
| int | stride, | |||
| int | pq | |||
| ) | [static] |
VC-1 in-loop deblocking filter for one line.
| src | source block type | |
| stride | block stride | |
| pq | block quantizer |
Definition at line 141 of file vc1dsp.c.
Referenced by vc1_loop_filter().
| static void vc1_h_loop_filter16_c | ( | uint8_t * | src, | |
| int | stride, | |||
| int | pq | |||
| ) | [static] |
| static void vc1_h_loop_filter4_c | ( | uint8_t * | src, | |
| int | stride, | |||
| int | pq | |||
| ) | [static] |
| static void vc1_h_loop_filter8_c | ( | uint8_t * | src, | |
| int | stride, | |||
| int | pq | |||
| ) | [static] |
| static void vc1_h_overlap_c | ( | uint8_t * | src, | |
| int | stride | |||
| ) | [static] |
| static void vc1_inv_trans_4x4_c | ( | uint8_t * | dest, | |
| int | linesize, | |||
| DCTELEM * | block | |||
| ) | [static] |
| static void vc1_inv_trans_4x4_dc_c | ( | uint8_t * | dest, | |
| int | linesize, | |||
| DCTELEM * | block | |||
| ) | [static] |
| static void vc1_inv_trans_4x8_c | ( | uint8_t * | dest, | |
| int | linesize, | |||
| DCTELEM * | block | |||
| ) | [static] |
| static void vc1_inv_trans_4x8_dc_c | ( | uint8_t * | dest, | |
| int | linesize, | |||
| DCTELEM * | block | |||
| ) | [static] |
| static void vc1_inv_trans_8x4_c | ( | uint8_t * | dest, | |
| int | linesize, | |||
| DCTELEM * | block | |||
| ) | [static] |
| static void vc1_inv_trans_8x4_dc_c | ( | uint8_t * | dest, | |
| int | linesize, | |||
| DCTELEM * | block | |||
| ) | [static] |
| static void vc1_inv_trans_8x8_c | ( | DCTELEM | block[64] | ) | [static] |
| static void vc1_inv_trans_8x8_dc_c | ( | uint8_t * | dest, | |
| int | linesize, | |||
| DCTELEM * | block | |||
| ) | [static] |
| static void vc1_loop_filter | ( | uint8_t * | src, | |
| int | step, | |||
| int | stride, | |||
| int | len, | |||
| int | pq | |||
| ) | [inline, static] |
VC-1 in-loop deblocking filter.
| src | source block type | |
| step | distance between horizontally adjacent elements | |
| stride | distance between vertically adjacent elements | |
| len | edge length to filter (4 or 8 pixels) | |
| pq | block quantizer |
Definition at line 183 of file vc1dsp.c.
Referenced by vc1_h_loop_filter16_c(), vc1_h_loop_filter4_c(), vc1_h_loop_filter8_c(), vc1_v_loop_filter16_c(), vc1_v_loop_filter4_c(), and vc1_v_loop_filter8_c().
| static av_always_inline int vc1_mspel_filter | ( | const uint8_t * | src, | |
| int | stride, | |||
| int | mode, | |||
| int | r | |||
| ) | [static] |
| static void vc1_v_loop_filter16_c | ( | uint8_t * | src, | |
| int | stride, | |||
| int | pq | |||
| ) | [static] |
| static void vc1_v_loop_filter4_c | ( | uint8_t * | src, | |
| int | stride, | |||
| int | pq | |||
| ) | [static] |
| static void vc1_v_loop_filter8_c | ( | uint8_t * | src, | |
| int | stride, | |||
| int | pq | |||
| ) | [static] |
| static void vc1_v_overlap_c | ( | uint8_t * | src, | |
| int | stride | |||
| ) | [static] |