FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
vc1dsp.h
Go to the documentation of this file.
1
/*
2
* VC-1 and WMV3 decoder - DSP functions
3
* Copyright (c) 2006 Konstantin Shishkov
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
/**
23
* @file
24
* VC-1 and WMV3 decoder
25
*
26
*/
27
28
#ifndef AVCODEC_VC1DSP_H
29
#define AVCODEC_VC1DSP_H
30
31
#include "
dsputil.h
"
32
#include "
hpeldsp.h
"
33
#include "
h264chroma.h
"
34
35
typedef
void
(*
vc1op_pixels_func
)(
uint8_t
*
block
/*align width (8 or 16)*/
,
const
uint8_t
*pixels
/*align 1*/
, ptrdiff_t line_size,
int
h);
36
37
typedef
struct
VC1DSPContext
{
38
/* vc1 functions */
39
void
(*
vc1_inv_trans_8x8
)(int16_t *
b
);
40
void
(*
vc1_inv_trans_8x4
)(
uint8_t
*dest,
int
line_size, int16_t *
block
);
41
void
(*
vc1_inv_trans_4x8
)(
uint8_t
*dest,
int
line_size, int16_t *
block
);
42
void
(*
vc1_inv_trans_4x4
)(
uint8_t
*dest,
int
line_size, int16_t *
block
);
43
void
(*
vc1_inv_trans_8x8_dc
)(
uint8_t
*dest,
int
line_size, int16_t *
block
);
44
void
(*
vc1_inv_trans_8x4_dc
)(
uint8_t
*dest,
int
line_size, int16_t *
block
);
45
void
(*
vc1_inv_trans_4x8_dc
)(
uint8_t
*dest,
int
line_size, int16_t *
block
);
46
void
(*
vc1_inv_trans_4x4_dc
)(
uint8_t
*dest,
int
line_size, int16_t *
block
);
47
void
(*
vc1_v_overlap
)(
uint8_t
*
src
,
int
stride
);
48
void
(*
vc1_h_overlap
)(
uint8_t
*
src
,
int
stride
);
49
void
(*
vc1_v_s_overlap
)(int16_t *top, int16_t *bottom);
50
void
(*
vc1_h_s_overlap
)(int16_t *left, int16_t *right);
51
void
(*
vc1_v_loop_filter4
)(
uint8_t
*
src
,
int
stride
,
int
pq);
52
void
(*
vc1_h_loop_filter4
)(
uint8_t
*
src
,
int
stride
,
int
pq);
53
void
(*
vc1_v_loop_filter8
)(
uint8_t
*
src
,
int
stride
,
int
pq);
54
void
(*
vc1_h_loop_filter8
)(
uint8_t
*
src
,
int
stride
,
int
pq);
55
void
(*
vc1_v_loop_filter16
)(
uint8_t
*
src
,
int
stride
,
int
pq);
56
void
(*
vc1_h_loop_filter16
)(
uint8_t
*
src
,
int
stride
,
int
pq);
57
58
/* put 8x8 block with bicubic interpolation and quarterpel precision
59
* last argument is actually round value instead of height
60
*/
61
vc1op_pixels_func
put_vc1_mspel_pixels_tab
[16];
62
vc1op_pixels_func
avg_vc1_mspel_pixels_tab
[16];
63
64
/* This is really one func used in VC-1 decoding */
65
h264_chroma_mc_func
put_no_rnd_vc1_chroma_pixels_tab
[3];
66
h264_chroma_mc_func
avg_no_rnd_vc1_chroma_pixels_tab
[3];
67
68
/* Windows Media Image functions */
69
void
(*
sprite_h
)(
uint8_t
*dst,
const
uint8_t
*
src
,
int
offset
,
int
advance,
int
count
);
70
void
(*
sprite_v_single
)(
uint8_t
*dst,
const
uint8_t
*src1a,
const
uint8_t
*src1b,
int
offset
,
int
width
);
71
void
(*
sprite_v_double_noscale
)(
uint8_t
*dst,
const
uint8_t
*src1a,
const
uint8_t
*src2a,
int
alpha
,
int
width
);
72
void
(*
sprite_v_double_onescale
)(
uint8_t
*dst,
const
uint8_t
*src1a,
const
uint8_t
*src1b,
int
offset1,
73
const
uint8_t
*src2a,
int
alpha
,
int
width
);
74
void
(*
sprite_v_double_twoscale
)(
uint8_t
*dst,
const
uint8_t
*src1a,
const
uint8_t
*src1b,
int
offset1,
75
const
uint8_t
*src2a,
const
uint8_t
*src2b,
int
offset2,
76
int
alpha
,
int
width
);
77
}
VC1DSPContext
;
78
79
void
ff_vc1dsp_init
(
VC1DSPContext
*
c
);
80
void
ff_vc1dsp_init_aarch64
(
VC1DSPContext
* dsp);
81
void
ff_vc1dsp_init_arm
(
VC1DSPContext
* dsp);
82
void
ff_vc1dsp_init_ppc
(
VC1DSPContext
*
c
);
83
void
ff_vc1dsp_init_x86
(
VC1DSPContext
* dsp);
84
85
#endif
/* AVCODEC_VC1DSP_H */
Generated on Sun Mar 23 2014 23:49:51 for FFmpeg by
1.8.2