Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavcodec
arm
h264pred_init_arm.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2009 Mans Rullgard <mans@mansr.com>
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
21
#include <stdint.h>
22
23
#include "
libavcodec/h264pred.h
"
24
25
void
ff_pred16x16_vert_neon
(uint8_t *src,
int
stride
);
26
void
ff_pred16x16_hor_neon
(uint8_t *src,
int
stride
);
27
void
ff_pred16x16_plane_neon
(uint8_t *src,
int
stride
);
28
void
ff_pred16x16_dc_neon
(uint8_t *src,
int
stride
);
29
void
ff_pred16x16_128_dc_neon
(uint8_t *src,
int
stride
);
30
void
ff_pred16x16_left_dc_neon
(uint8_t *src,
int
stride
);
31
void
ff_pred16x16_top_dc_neon
(uint8_t *src,
int
stride
);
32
33
void
ff_pred8x8_vert_neon
(uint8_t *src,
int
stride
);
34
void
ff_pred8x8_hor_neon
(uint8_t *src,
int
stride
);
35
void
ff_pred8x8_plane_neon
(uint8_t *src,
int
stride
);
36
void
ff_pred8x8_dc_neon
(uint8_t *src,
int
stride
);
37
void
ff_pred8x8_128_dc_neon
(uint8_t *src,
int
stride
);
38
void
ff_pred8x8_left_dc_neon
(uint8_t *src,
int
stride
);
39
void
ff_pred8x8_top_dc_neon
(uint8_t *src,
int
stride
);
40
void
ff_pred8x8_l0t_dc_neon
(uint8_t *src,
int
stride
);
41
void
ff_pred8x8_0lt_dc_neon
(uint8_t *src,
int
stride
);
42
void
ff_pred8x8_l00_dc_neon
(uint8_t *src,
int
stride
);
43
void
ff_pred8x8_0l0_dc_neon
(uint8_t *src,
int
stride
);
44
45
static
void
ff_h264_pred_init_neon
(
H264PredContext
*h,
int
codec_id
,
const
int
bit_depth,
const
int
chroma_format_idc)
46
{
47
const
int
high_depth = bit_depth > 8;
48
49
if
(high_depth)
50
return
;
51
52
h->
pred8x8
[
VERT_PRED8x8
] =
ff_pred8x8_vert_neon
;
53
h->
pred8x8
[
HOR_PRED8x8
] =
ff_pred8x8_hor_neon
;
54
if
(codec_id !=
CODEC_ID_VP8
)
55
h->
pred8x8
[
PLANE_PRED8x8
] =
ff_pred8x8_plane_neon
;
56
h->
pred8x8
[
DC_128_PRED8x8
] =
ff_pred8x8_128_dc_neon
;
57
if
(codec_id !=
CODEC_ID_RV40
&& codec_id !=
CODEC_ID_VP8
) {
58
h->
pred8x8
[
DC_PRED8x8
] =
ff_pred8x8_dc_neon
;
59
h->
pred8x8
[
LEFT_DC_PRED8x8
] =
ff_pred8x8_left_dc_neon
;
60
h->
pred8x8
[
TOP_DC_PRED8x8
] =
ff_pred8x8_top_dc_neon
;
61
h->
pred8x8
[
ALZHEIMER_DC_L0T_PRED8x8
] =
ff_pred8x8_l0t_dc_neon
;
62
h->
pred8x8
[
ALZHEIMER_DC_0LT_PRED8x8
] =
ff_pred8x8_0lt_dc_neon
;
63
h->
pred8x8
[
ALZHEIMER_DC_L00_PRED8x8
] =
ff_pred8x8_l00_dc_neon
;
64
h->
pred8x8
[
ALZHEIMER_DC_0L0_PRED8x8
] =
ff_pred8x8_0l0_dc_neon
;
65
}
66
67
h->
pred16x16
[
DC_PRED8x8
] =
ff_pred16x16_dc_neon
;
68
h->
pred16x16
[
VERT_PRED8x8
] =
ff_pred16x16_vert_neon
;
69
h->
pred16x16
[
HOR_PRED8x8
] =
ff_pred16x16_hor_neon
;
70
h->
pred16x16
[
LEFT_DC_PRED8x8
] =
ff_pred16x16_left_dc_neon
;
71
h->
pred16x16
[
TOP_DC_PRED8x8
] =
ff_pred16x16_top_dc_neon
;
72
h->
pred16x16
[
DC_128_PRED8x8
] =
ff_pred16x16_128_dc_neon
;
73
if
(codec_id !=
CODEC_ID_SVQ3
&& codec_id !=
CODEC_ID_RV40
&& codec_id !=
CODEC_ID_VP8
)
74
h->
pred16x16
[
PLANE_PRED8x8
] =
ff_pred16x16_plane_neon
;
75
}
76
77
void
ff_h264_pred_init_arm
(
H264PredContext
*h,
int
codec_id
,
int
bit_depth,
const
int
chroma_format_idc)
78
{
79
if
(
HAVE_NEON
)
ff_h264_pred_init_neon
(h, codec_id, bit_depth, chroma_format_idc);
80
}