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
3d69dd65
Commit
3d69dd65
authored
Apr 25, 2017
by
Alexandra Hájková
Committed by
Martin Storsjö
Apr 25, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
hevc: Add support for bitdepth 10 for IDCT DC
Signed-off-by:
Martin Storsjö
<
martin@martin.st
>
parent
358adef0
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
37 additions
and
12 deletions
+37
-12
hevc_idct.S
libavcodec/arm/hevc_idct.S
+28
-12
hevcdsp_init_arm.c
libavcodec/arm/hevcdsp_init_arm.c
+9
-0
No files found.
libavcodec/arm/hevc_idct.S
View file @
3d69dd65
...
...
@@ -30,26 +30,29 @@ const trans, align=4
.short 57, 43, 25, 9
endconst
function ff_hevc_idct_4x4_dc_8_neon, export=1
.macro idct_4x4_dc bitdepth
function ff_hevc_idct_4x4_dc_\bitdepth\()_neon, export=1
ldrsh r1, [r0]
ldr r2, =
0x20
ldr r2, =
(1 << (13 - \bitdepth))
add r1, #1
asr r1, #1
add r1, r2
asr r1, #
6
asr r1, #
(14 - \bitdepth)
vdup.16 q0, r1
vdup.16 q1, r1
vst1.16 {q0, q1}, [r0, :128]
bx lr
endfunc
.endm
function ff_hevc_idct_8x8_dc_8_neon, export=1
.macro idct_8x8_dc bitdepth
function ff_hevc_idct_8x8_dc_\bitdepth\()_neon, export=1
ldrsh r1, [r0]
ldr r2, =
0x20
ldr r2, =
(1 << (13 - \bitdepth))
add r1, #1
asr r1, #1
add r1, r2
asr r1, #
6
asr r1, #
(14 - \bitdepth)
vdup.16 q8, r1
vdup.16 q9, r1
vmov.16 q10, q8
...
...
@@ -61,14 +64,16 @@ function ff_hevc_idct_8x8_dc_8_neon, export=1
vstm r0, {q8-q15}
bx lr
endfunc
.endm
function ff_hevc_idct_16x16_dc_8_neon, export=1
.macro idct_16x16_dc bitdepth
function ff_hevc_idct_16x16_dc_\bitdepth\()_neon, export=1
ldrsh r1, [r0]
ldr r2, =
0x20
ldr r2, =
(1 << (13 - \bitdepth))
add r1, #1
asr r1, #1
add r1, r2
asr r1, #
6
asr r1, #
(14 - \bitdepth)
vdup.16 q8, r1
vdup.16 q9, r1
vmov.16 q10, q8
...
...
@@ -83,14 +88,16 @@ function ff_hevc_idct_16x16_dc_8_neon, export=1
vstm r0, {q8-q15}
bx lr
endfunc
.endm
function ff_hevc_idct_32x32_dc_8_neon, export=1
.macro idct_32x32_dc bitdepth
function ff_hevc_idct_32x32_dc_\bitdepth\()_neon, export=1
ldrsh r1, [r0]
ldr r2, =
0x20
ldr r2, =
(1 << (13 - \bitdepth))
add r1, #1
asr r1, #1
add r1, r2
asr r1, #
6
asr r1, #
(14 - \bitdepth)
mov r3, #16
vdup.16 q8, r1
vdup.16 q9, r1
...
...
@@ -105,6 +112,7 @@ function ff_hevc_idct_32x32_dc_8_neon, export=1
bne 1b
bx lr
endfunc
.endm
.macro sum_sub out, in, c, op
.ifc \op, +
...
...
@@ -496,8 +504,16 @@ tr_16x4 secondpass_10, 20 - 10
.ltorg
idct_4x4 8
idct_4x4_dc 8
idct_4x4 10
idct_4x4_dc 10
idct_8x8 8
idct_8x8_dc 8
idct_8x8 10
idct_8x8_dc 10
idct_16x16 8
idct_16x16_dc 8
idct_16x16 10
idct_16x16_dc 10
idct_32x32_dc 8
idct_32x32_dc 10
libavcodec/arm/hevcdsp_init_arm.c
View file @
3d69dd65
...
...
@@ -29,6 +29,10 @@ void ff_hevc_idct_4x4_dc_8_neon(int16_t *coeffs);
void
ff_hevc_idct_8x8_dc_8_neon
(
int16_t
*
coeffs
);
void
ff_hevc_idct_16x16_dc_8_neon
(
int16_t
*
coeffs
);
void
ff_hevc_idct_32x32_dc_8_neon
(
int16_t
*
coeffs
);
void
ff_hevc_idct_4x4_dc_10_neon
(
int16_t
*
coeffs
);
void
ff_hevc_idct_8x8_dc_10_neon
(
int16_t
*
coeffs
);
void
ff_hevc_idct_16x16_dc_10_neon
(
int16_t
*
coeffs
);
void
ff_hevc_idct_32x32_dc_10_neon
(
int16_t
*
coeffs
);
void
ff_hevc_idct_4x4_8_neon
(
int16_t
*
coeffs
,
int
col_limit
);
void
ff_hevc_idct_8x8_8_neon
(
int16_t
*
coeffs
,
int
col_limit
);
...
...
@@ -53,6 +57,11 @@ av_cold void ff_hevc_dsp_init_arm(HEVCDSPContext *c, int bit_depth)
c
->
idct
[
2
]
=
ff_hevc_idct_16x16_8_neon
;
}
if
(
bit_depth
==
10
)
{
c
->
idct_dc
[
0
]
=
ff_hevc_idct_4x4_dc_10_neon
;
c
->
idct_dc
[
1
]
=
ff_hevc_idct_8x8_dc_10_neon
;
c
->
idct_dc
[
2
]
=
ff_hevc_idct_16x16_dc_10_neon
;
c
->
idct_dc
[
3
]
=
ff_hevc_idct_32x32_dc_10_neon
;
c
->
idct
[
0
]
=
ff_hevc_idct_4x4_10_neon
;
c
->
idct
[
1
]
=
ff_hevc_idct_8x8_10_neon
;
c
->
idct
[
2
]
=
ff_hevc_idct_16x16_10_neon
;
...
...
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