Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
f56d8d8d
Commit
f56d8d8d
authored
Jul 12, 2015
by
Janne Grunau
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
h264: aarch64: intra prediction optimisations
parent
40cf1bba
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
465 additions
and
2 deletions
+465
-2
Makefile
libavcodec/aarch64/Makefile
+2
-0
h264pred_init.c
libavcodec/aarch64/h264pred_init.c
+93
-0
h264pred_neon.S
libavcodec/aarch64/h264pred_neon.S
+361
-0
h264pred.c
libavcodec/h264pred.c
+6
-2
h264pred.h
libavcodec/h264pred.h
+3
-0
No files found.
libavcodec/aarch64/Makefile
View file @
f56d8d8d
OBJS-$(CONFIG_FFT)
+=
aarch64/fft_init_aarch64.o
OBJS-$(CONFIG_H264CHROMA)
+=
aarch64/h264chroma_init_aarch64.o
OBJS-$(CONFIG_H264DSP)
+=
aarch64/h264dsp_init_aarch64.o
OBJS-$(CONFIG_H264PRED)
+=
aarch64/h264pred_init.o
OBJS-$(CONFIG_H264QPEL)
+=
aarch64/h264qpel_init_aarch64.o
OBJS-$(CONFIG_HPELDSP)
+=
aarch64/hpeldsp_init_aarch64.o
OBJS-$(CONFIG_IMDCT15)
+=
aarch64/imdct15_init.o
...
...
@@ -18,6 +19,7 @@ NEON-OBJS-$(CONFIG_FFT) += aarch64/fft_neon.o
NEON-OBJS-$(CONFIG_H264CHROMA)
+=
aarch64/h264cmc_neon.o
NEON-OBJS-$(CONFIG_H264DSP)
+=
aarch64/h264dsp_neon.o
\
aarch64/h264idct_neon.o
NEON-OBJS-$(CONFIG_H264PRED)
+=
aarch64/h264pred_neon.o
NEON-OBJS-$(CONFIG_H264QPEL)
+=
aarch64/h264qpel_neon.o
\
aarch64/hpeldsp_neon.o
NEON-OBJS-$(CONFIG_HPELDSP)
+=
aarch64/hpeldsp_neon.o
...
...
libavcodec/aarch64/h264pred_init.c
0 → 100644
View file @
f56d8d8d
/*
* Copyright (c) 2009 Mans Rullgard <mans@mansr.com>
*
* This file is part of Libav.
*
* Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <stdint.h>
#include "libavutil/attributes.h"
#include "libavutil/aarch64/cpu.h"
#include "libavcodec/avcodec.h"
#include "libavcodec/h264pred.h"
void
ff_pred16x16_vert_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred16x16_hor_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred16x16_plane_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred16x16_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred16x16_128_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred16x16_left_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred16x16_top_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred8x8_vert_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred8x8_hor_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred8x8_plane_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred8x8_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred8x8_128_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred8x8_left_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred8x8_top_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred8x8_l0t_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred8x8_0lt_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred8x8_l00_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_pred8x8_0l0_dc_neon
(
uint8_t
*
src
,
ptrdiff_t
stride
);
static
av_cold
void
h264_pred_init_neon
(
H264PredContext
*
h
,
int
codec_id
,
const
int
bit_depth
,
const
int
chroma_format_idc
)
{
const
int
high_depth
=
bit_depth
>
8
;
if
(
high_depth
)
return
;
if
(
chroma_format_idc
<=
1
)
{
h
->
pred8x8
[
VERT_PRED8x8
]
=
ff_pred8x8_vert_neon
;
h
->
pred8x8
[
HOR_PRED8x8
]
=
ff_pred8x8_hor_neon
;
if
(
codec_id
!=
AV_CODEC_ID_VP7
&&
codec_id
!=
AV_CODEC_ID_VP8
)
h
->
pred8x8
[
PLANE_PRED8x8
]
=
ff_pred8x8_plane_neon
;
h
->
pred8x8
[
DC_128_PRED8x8
]
=
ff_pred8x8_128_dc_neon
;
if
(
codec_id
!=
AV_CODEC_ID_RV40
&&
codec_id
!=
AV_CODEC_ID_VP7
&&
codec_id
!=
AV_CODEC_ID_VP8
)
{
h
->
pred8x8
[
DC_PRED8x8
]
=
ff_pred8x8_dc_neon
;
h
->
pred8x8
[
LEFT_DC_PRED8x8
]
=
ff_pred8x8_left_dc_neon
;
h
->
pred8x8
[
TOP_DC_PRED8x8
]
=
ff_pred8x8_top_dc_neon
;
h
->
pred8x8
[
ALZHEIMER_DC_L0T_PRED8x8
]
=
ff_pred8x8_l0t_dc_neon
;
h
->
pred8x8
[
ALZHEIMER_DC_0LT_PRED8x8
]
=
ff_pred8x8_0lt_dc_neon
;
h
->
pred8x8
[
ALZHEIMER_DC_L00_PRED8x8
]
=
ff_pred8x8_l00_dc_neon
;
h
->
pred8x8
[
ALZHEIMER_DC_0L0_PRED8x8
]
=
ff_pred8x8_0l0_dc_neon
;
}
}
h
->
pred16x16
[
DC_PRED8x8
]
=
ff_pred16x16_dc_neon
;
h
->
pred16x16
[
VERT_PRED8x8
]
=
ff_pred16x16_vert_neon
;
h
->
pred16x16
[
HOR_PRED8x8
]
=
ff_pred16x16_hor_neon
;
h
->
pred16x16
[
LEFT_DC_PRED8x8
]
=
ff_pred16x16_left_dc_neon
;
h
->
pred16x16
[
TOP_DC_PRED8x8
]
=
ff_pred16x16_top_dc_neon
;
h
->
pred16x16
[
DC_128_PRED8x8
]
=
ff_pred16x16_128_dc_neon
;
if
(
codec_id
!=
AV_CODEC_ID_SVQ3
&&
codec_id
!=
AV_CODEC_ID_RV40
&&
codec_id
!=
AV_CODEC_ID_VP7
&&
codec_id
!=
AV_CODEC_ID_VP8
)
h
->
pred16x16
[
PLANE_PRED8x8
]
=
ff_pred16x16_plane_neon
;
}
av_cold
void
ff_h264_pred_init_aarch64
(
H264PredContext
*
h
,
int
codec_id
,
int
bit_depth
,
const
int
chroma_format_idc
)
{
int
cpu_flags
=
av_get_cpu_flags
();
if
(
have_neon
(
cpu_flags
))
h264_pred_init_neon
(
h
,
codec_id
,
bit_depth
,
chroma_format_idc
);
}
libavcodec/aarch64/h264pred_neon.S
0 → 100644
View file @
f56d8d8d
This diff is collapsed.
Click to expand it.
libavcodec/h264pred.c
View file @
f56d8d8d
...
...
@@ -574,6 +574,10 @@ av_cold void ff_h264_pred_init(H264PredContext *h, int codec_id,
break
;
}
if
(
ARCH_ARM
)
ff_h264_pred_init_arm
(
h
,
codec_id
,
bit_depth
,
chroma_format_idc
);
if
(
ARCH_X86
)
ff_h264_pred_init_x86
(
h
,
codec_id
,
bit_depth
,
chroma_format_idc
);
if
(
ARCH_AARCH64
)
ff_h264_pred_init_aarch64
(
h
,
codec_id
,
bit_depth
,
chroma_format_idc
);
if
(
ARCH_ARM
)
ff_h264_pred_init_arm
(
h
,
codec_id
,
bit_depth
,
chroma_format_idc
);
if
(
ARCH_X86
)
ff_h264_pred_init_x86
(
h
,
codec_id
,
bit_depth
,
chroma_format_idc
);
}
libavcodec/h264pred.h
View file @
f56d8d8d
...
...
@@ -111,6 +111,9 @@ typedef struct H264PredContext {
void
ff_h264_pred_init
(
H264PredContext
*
h
,
int
codec_id
,
const
int
bit_depth
,
const
int
chroma_format_idc
);
void
ff_h264_pred_init_aarch64
(
H264PredContext
*
h
,
int
codec_id
,
const
int
bit_depth
,
const
int
chroma_format_idc
);
void
ff_h264_pred_init_arm
(
H264PredContext
*
h
,
int
codec_id
,
const
int
bit_depth
,
const
int
chroma_format_idc
);
void
ff_h264_pred_init_x86
(
H264PredContext
*
h
,
int
codec_id
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment