Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
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 Libav.
5
*
6
* Libav 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
* Libav 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 Libav; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
27
#ifndef AVCODEC_H264DSP_H
28
#define AVCODEC_H264DSP_H
29
30
#include <stdint.h>
31
#include "
dsputil.h
"
32
33
//typedef void (*h264_chroma_mc_func)(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int srcStride, int h, int x, int y);
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,
int
stride
,
int
height
,
37
int
log2_denom,
int
weightd,
int
weights,
int
offset);
38
42
typedef
struct
H264DSPContext
{
43
/* weighted MC */
44
h264_weight_func
weight_h264_pixels_tab
[4];
45
h264_biweight_func
biweight_h264_pixels_tab
[4];
46
47
/* loop filter */
48
void
(*
h264_v_loop_filter_luma
)(uint8_t *pix
/*align 16*/
,
int
stride
,
int
alpha,
int
beta, int8_t *tc0);
49
void
(*
h264_h_loop_filter_luma
)(uint8_t *pix
/*align 4 */
,
int
stride
,
int
alpha,
int
beta, int8_t *tc0);
50
void
(*
h264_h_loop_filter_luma_mbaff
)(uint8_t *pix
/*align 16*/
,
int
stride
,
int
alpha,
int
beta, int8_t *tc0);
51
/* v/h_loop_filter_luma_intra: align 16 */
52
void
(*
h264_v_loop_filter_luma_intra
)(uint8_t *pix,
int
stride
,
int
alpha,
int
beta);
53
void
(*
h264_h_loop_filter_luma_intra
)(uint8_t *pix,
int
stride
,
int
alpha,
int
beta);
54
void
(*
h264_h_loop_filter_luma_mbaff_intra
)(uint8_t *pix
/*align 16*/
,
int
stride
,
int
alpha,
int
beta);
55
void
(*
h264_v_loop_filter_chroma
)(uint8_t *pix
/*align 8*/
,
int
stride
,
int
alpha,
int
beta, int8_t *tc0);
56
void
(*
h264_h_loop_filter_chroma
)(uint8_t *pix
/*align 4*/
,
int
stride
,
int
alpha,
int
beta, int8_t *tc0);
57
void
(*
h264_h_loop_filter_chroma_mbaff
)(uint8_t *pix
/*align 8*/
,
int
stride
,
int
alpha,
int
beta, int8_t *tc0);
58
void
(*
h264_v_loop_filter_chroma_intra
)(uint8_t *pix
/*align 8*/
,
int
stride
,
int
alpha,
int
beta);
59
void
(*
h264_h_loop_filter_chroma_intra
)(uint8_t *pix
/*align 8*/
,
int
stride
,
int
alpha,
int
beta);
60
void
(*
h264_h_loop_filter_chroma_mbaff_intra
)(uint8_t *pix
/*align 8*/
,
int
stride
,
int
alpha,
int
beta);
61
// h264_loop_filter_strength: simd only. the C version is inlined in h264.c
62
void
(*
h264_loop_filter_strength
)(int16_t bS[2][4][4], uint8_t nnz[40], int8_t ref[2][40], int16_t
mv
[2][40][2],
63
int
bidir,
int
edges,
int
step
,
int
mask_mv0,
int
mask_mv1,
int
field);
64
65
/* IDCT */
66
void
(*
h264_idct_add
)(uint8_t *dst
/*align 4*/
,
DCTELEM
*
block
/*align 16*/
,
int
stride
);
67
void
(*
h264_idct8_add
)(uint8_t *dst
/*align 8*/
,
DCTELEM
*
block
/*align 16*/
,
int
stride
);
68
void
(*
h264_idct_dc_add
)(uint8_t *dst
/*align 4*/
,
DCTELEM
*
block
/*align 16*/
,
int
stride
);
69
void
(*
h264_idct8_dc_add
)(uint8_t *dst
/*align 8*/
,
DCTELEM
*
block
/*align 16*/
,
int
stride
);
70
71
void
(*
h264_idct_add16
)(uint8_t *dst
/*align 16*/
,
const
int
*blockoffset,
DCTELEM
*
block
/*align 16*/
,
int
stride
,
const
uint8_t nnzc[15*8]);
72
void
(*
h264_idct8_add4
)(uint8_t *dst
/*align 16*/
,
const
int
*blockoffset,
DCTELEM
*
block
/*align 16*/
,
int
stride
,
const
uint8_t nnzc[15*8]);
73
void
(*
h264_idct_add8
)(uint8_t **dst
/*align 16*/
,
const
int
*blockoffset,
DCTELEM
*
block
/*align 16*/
,
int
stride
,
const
uint8_t nnzc[15*8]);
74
void
(*
h264_idct_add16intra
)(uint8_t *dst
/*align 16*/
,
const
int
*blockoffset,
DCTELEM
*
block
/*align 16*/
,
int
stride
,
const
uint8_t nnzc[15*8]);
75
void
(*
h264_luma_dc_dequant_idct
)(
DCTELEM
*output,
DCTELEM
*input
/*align 16*/
,
int
qmul);
76
void
(*
h264_chroma_dc_dequant_idct
)(
DCTELEM
*
block
,
int
qmul);
77
}
H264DSPContext
;
78
79
void
ff_h264dsp_init
(
H264DSPContext
*c,
const
int
bit_depth,
const
int
chroma_format_idc);
80
void
ff_h264dsp_init_arm
(
H264DSPContext
*c,
const
int
bit_depth,
const
int
chroma_format_idc);
81
void
ff_h264dsp_init_ppc
(
H264DSPContext
*c,
const
int
bit_depth,
const
int
chroma_format_idc);
82
void
ff_h264dsp_init_x86
(
H264DSPContext
*c,
const
int
bit_depth,
const
int
chroma_format_idc);
83
84
#endif
/* AVCODEC_H264DSP_H */