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
h264dsp.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2003-2010 Michael Niedermayer <michaelni@gmx.at>
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
/**
22
* @file
23
* H.264 DSP functions.
24
* @author Michael Niedermayer <michaelni@gmx.at>
25
*/
26
27
#ifndef AVCODEC_H264DSP_H
28
#define AVCODEC_H264DSP_H
29
30
#include <stdint.h>
31
32
#include "
dsputil.h
"
33
34
typedef
void
(*
h264_weight_func
)(
uint8_t
*
block
,
int
stride
,
int
height
,
35
int
log2_denom,
int
weight
,
int
offset
);
36
typedef
void
(*
h264_biweight_func
)(
uint8_t
*
dst
,
uint8_t
*src,
37
int
stride
,
int
height
,
int
log2_denom,
38
int
weightd,
int
weights,
int
offset
);
39
40
/**
41
* Context for storing H.264 DSP functions
42
*/
43
typedef
struct
H264DSPContext
{
44
/* weighted MC */
45
h264_weight_func
weight_h264_pixels_tab
[4];
46
h264_biweight_func
biweight_h264_pixels_tab
[4];
47
48
/* loop filter */
49
void
(*
h264_v_loop_filter_luma
)(
uint8_t
*pix
/*align 16*/
,
int
stride
,
50
int
alpha,
int
beta, int8_t *tc0);
51
void
(*
h264_h_loop_filter_luma
)(
uint8_t
*pix
/*align 4 */
,
int
stride
,
52
int
alpha,
int
beta, int8_t *tc0);
53
void
(*
h264_h_loop_filter_luma_mbaff
)(
uint8_t
*pix
/*align 16*/
,
int
stride
,
54
int
alpha,
int
beta, int8_t *tc0);
55
/* v/h_loop_filter_luma_intra: align 16 */
56
void
(*
h264_v_loop_filter_luma_intra
)(
uint8_t
*pix,
int
stride
,
57
int
alpha,
int
beta);
58
void
(*
h264_h_loop_filter_luma_intra
)(
uint8_t
*pix,
int
stride
,
59
int
alpha,
int
beta);
60
void
(*
h264_h_loop_filter_luma_mbaff_intra
)(
uint8_t
*pix
/*align 16*/
,
61
int
stride
,
int
alpha,
int
beta);
62
void
(*
h264_v_loop_filter_chroma
)(
uint8_t
*pix
/*align 8*/
,
int
stride
,
63
int
alpha,
int
beta, int8_t *tc0);
64
void
(*
h264_h_loop_filter_chroma
)(
uint8_t
*pix
/*align 4*/
,
int
stride
,
65
int
alpha,
int
beta, int8_t *tc0);
66
void
(*
h264_h_loop_filter_chroma_mbaff
)(
uint8_t
*pix
/*align 8*/
,
67
int
stride
,
int
alpha,
int
beta,
68
int8_t *tc0);
69
void
(*
h264_v_loop_filter_chroma_intra
)(
uint8_t
*pix
/*align 8*/
,
70
int
stride
,
int
alpha,
int
beta);
71
void
(*
h264_h_loop_filter_chroma_intra
)(
uint8_t
*pix
/*align 8*/
,
72
int
stride
,
int
alpha,
int
beta);
73
void
(*
h264_h_loop_filter_chroma_mbaff_intra
)(
uint8_t
*pix
/*align 8*/
,
74
int
stride
,
int
alpha,
int
beta);
75
// h264_loop_filter_strength: simd only. the C version is inlined in h264.c
76
void
(*
h264_loop_filter_strength
)(int16_t bS[2][4][4],
uint8_t
nnz[40],
77
int8_t ref[2][40], int16_t
mv
[2][40][2],
78
int
bidir,
int
edges,
int
step,
79
int
mask_mv0,
int
mask_mv1,
int
field);
80
81
/* IDCT */
82
void
(*
h264_idct_add
)(
uint8_t
*
dst
/*align 4*/
,
83
DCTELEM
*
block
/*align 16*/
,
int
stride
);
84
void
(*
h264_idct8_add
)(
uint8_t
*
dst
/*align 8*/
,
85
DCTELEM
*
block
/*align 16*/
,
int
stride
);
86
void
(*
h264_idct_dc_add
)(
uint8_t
*
dst
/*align 4*/
,
87
DCTELEM
*
block
/*align 16*/
,
int
stride
);
88
void
(*
h264_idct8_dc_add
)(
uint8_t
*
dst
/*align 8*/
,
89
DCTELEM
*
block
/*align 16*/
,
int
stride
);
90
91
void
(*
h264_idct_add16
)(
uint8_t
*
dst
/*align 16*/
,
const
int
*blockoffset,
92
DCTELEM
*
block
/*align 16*/
,
int
stride
,
93
const
uint8_t
nnzc[15 * 8]);
94
void
(*
h264_idct8_add4
)(
uint8_t
*
dst
/*align 16*/
,
const
int
*blockoffset,
95
DCTELEM
*
block
/*align 16*/
,
int
stride
,
96
const
uint8_t
nnzc[15 * 8]);
97
void
(*
h264_idct_add8
)(
uint8_t
**
dst
/*align 16*/
,
const
int
*blockoffset,
98
DCTELEM
*
block
/*align 16*/
,
int
stride
,
99
const
uint8_t
nnzc[15 * 8]);
100
void
(*
h264_idct_add16intra
)(
uint8_t
*
dst
/*align 16*/
,
const
int
*blockoffset,
101
DCTELEM
*
block
/*align 16*/
,
102
int
stride
,
const
uint8_t
nnzc[15 * 8]);
103
void
(*
h264_luma_dc_dequant_idct
)(
DCTELEM
*output,
104
DCTELEM
*input
/*align 16*/
,
int
qmul);
105
void
(*
h264_chroma_dc_dequant_idct
)(
DCTELEM
*
block
,
int
qmul);
106
}
H264DSPContext
;
107
108
void
ff_h264dsp_init
(
H264DSPContext
*
c
,
const
int
bit_depth,
109
const
int
chroma_format_idc);
110
void
ff_h264dsp_init_arm
(
H264DSPContext
*
c
,
const
int
bit_depth,
111
const
int
chroma_format_idc);
112
void
ff_h264dsp_init_ppc
(
H264DSPContext
*
c
,
const
int
bit_depth,
113
const
int
chroma_format_idc);
114
void
ff_h264dsp_init_x86
(
H264DSPContext
*
c
,
const
int
bit_depth,
115
const
int
chroma_format_idc);
116
117
#endif
/* AVCODEC_H264DSP_H */
Generated on Sat May 25 2013 03:58:35 for FFmpeg by
1.8.2