FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
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
33
typedef
struct
VC1DSPContext
{
34
/* vc1 functions */
35
void
(*
vc1_inv_trans_8x8
)(
DCTELEM
*
b
);
36
void
(*
vc1_inv_trans_8x4
)(
uint8_t
*dest,
int
line_size,
DCTELEM
*
block
);
37
void
(*
vc1_inv_trans_4x8
)(
uint8_t
*dest,
int
line_size,
DCTELEM
*
block
);
38
void
(*
vc1_inv_trans_4x4
)(
uint8_t
*dest,
int
line_size,
DCTELEM
*
block
);
39
void
(*
vc1_inv_trans_8x8_dc
)(
uint8_t
*dest,
int
line_size,
DCTELEM
*
block
);
40
void
(*
vc1_inv_trans_8x4_dc
)(
uint8_t
*dest,
int
line_size,
DCTELEM
*
block
);
41
void
(*
vc1_inv_trans_4x8_dc
)(
uint8_t
*dest,
int
line_size,
DCTELEM
*
block
);
42
void
(*
vc1_inv_trans_4x4_dc
)(
uint8_t
*dest,
int
line_size,
DCTELEM
*
block
);
43
void
(*
vc1_v_overlap
)(
uint8_t
*src,
int
stride
);
44
void
(*
vc1_h_overlap
)(
uint8_t
*src,
int
stride
);
45
void
(*
vc1_v_s_overlap
)(
DCTELEM
*top,
DCTELEM
*bottom);
46
void
(*
vc1_h_s_overlap
)(
DCTELEM
*left,
DCTELEM
*right);
47
void
(*
vc1_v_loop_filter4
)(
uint8_t
*src,
int
stride
,
int
pq);
48
void
(*
vc1_h_loop_filter4
)(
uint8_t
*src,
int
stride
,
int
pq);
49
void
(*
vc1_v_loop_filter8
)(
uint8_t
*src,
int
stride
,
int
pq);
50
void
(*
vc1_h_loop_filter8
)(
uint8_t
*src,
int
stride
,
int
pq);
51
void
(*
vc1_v_loop_filter16
)(
uint8_t
*src,
int
stride
,
int
pq);
52
void
(*
vc1_h_loop_filter16
)(
uint8_t
*src,
int
stride
,
int
pq);
53
54
/* put 8x8 block with bicubic interpolation and quarterpel precision
55
* last argument is actually round value instead of height
56
*/
57
op_pixels_func
put_vc1_mspel_pixels_tab
[16];
58
op_pixels_func
avg_vc1_mspel_pixels_tab
[16];
59
60
/* This is really one func used in VC-1 decoding */
61
h264_chroma_mc_func
put_no_rnd_vc1_chroma_pixels_tab
[3];
62
h264_chroma_mc_func
avg_no_rnd_vc1_chroma_pixels_tab
[3];
63
64
/* Windows Media Image functions */
65
void
(*
sprite_h
)(
uint8_t
*
dst
,
const
uint8_t
*src,
int
offset
,
int
advance,
int
count);
66
void
(*
sprite_v_single
)(
uint8_t
*
dst
,
const
uint8_t
*src1a,
const
uint8_t
*src1b,
int
offset
,
int
width
);
67
void
(*
sprite_v_double_noscale
)(
uint8_t
*
dst
,
const
uint8_t
*src1a,
const
uint8_t
*src2a,
int
alpha,
int
width
);
68
void
(*
sprite_v_double_onescale
)(
uint8_t
*
dst
,
const
uint8_t
*src1a,
const
uint8_t
*src1b,
int
offset1,
69
const
uint8_t
*src2a,
int
alpha,
int
width
);
70
void
(*
sprite_v_double_twoscale
)(
uint8_t
*
dst
,
const
uint8_t
*src1a,
const
uint8_t
*src1b,
int
offset1,
71
const
uint8_t
*src2a,
const
uint8_t
*src2b,
int
offset2,
72
int
alpha,
int
width
);
73
}
VC1DSPContext
;
74
75
void
ff_vc1dsp_init
(
VC1DSPContext
*
c
);
76
void
ff_vc1dsp_init_altivec
(
VC1DSPContext
*
c
);
77
void
ff_vc1dsp_init_x86
(
VC1DSPContext
* dsp);
78
79
#endif
/* AVCODEC_VC1DSP_H */
Generated on Sat May 25 2013 03:58:42 for FFmpeg by
1.8.2