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
c97d30f0
Commit
c97d30f0
authored
May 07, 2015
by
Ronald S. Bultje
Committed by
Michael Niedermayer
May 08, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vp9: de-duplicate some functions that are identical between 10/12 bpp.
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
ba1f56ae
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
98 additions
and
14 deletions
+98
-14
vp9dsp_template.c
libavcodec/vp9dsp_template.c
+98
-14
No files found.
libavcodec/vp9dsp_template.c
View file @
c97d30f0
...
...
@@ -25,6 +25,8 @@
#include "bit_depth_template.c"
#include "vp9dsp.h"
#if BIT_DEPTH != 12
// FIXME see whether we can merge parts of this (perhaps at least 4x4 and 8x8)
// back with h264pred.[ch]
...
...
@@ -181,6 +183,8 @@ static void hor_32x32_c(uint8_t *_dst, ptrdiff_t stride,
}
}
#endif
/* BIT_DEPTH != 12 */
static
void
tm_4x4_c
(
uint8_t
*
_dst
,
ptrdiff_t
stride
,
const
uint8_t
*
_left
,
const
uint8_t
*
_top
)
{
...
...
@@ -305,6 +309,8 @@ static void tm_32x32_c(uint8_t *_dst, ptrdiff_t stride,
}
}
#if BIT_DEPTH != 12
static
void
dc_4x4_c
(
uint8_t
*
_dst
,
ptrdiff_t
stride
,
const
uint8_t
*
_left
,
const
uint8_t
*
_top
)
{
...
...
@@ -560,6 +566,8 @@ static void dc_top_32x32_c(uint8_t *_dst, ptrdiff_t stride,
}
}
#endif
/* BIT_DEPTH != 12 */
static
void
dc_128_4x4_c
(
uint8_t
*
_dst
,
ptrdiff_t
stride
,
const
uint8_t
*
left
,
const
uint8_t
*
top
)
{
...
...
@@ -757,6 +765,8 @@ static void dc_129_32x32_c(uint8_t *_dst, ptrdiff_t stride,
}
}
#if BIT_DEPTH != 12
#if BIT_DEPTH == 8
#define memset_bpc memset
#else
...
...
@@ -1065,9 +1075,28 @@ def_hor_up(32)
#undef DST
static
av_cold
void
vp9dsp_intrapred_init
(
VP9DSPContext
*
dsp
)
#endif
/* BIT_DEPTH != 12 */
#if BIT_DEPTH != 8
void
vp9dsp_intrapred_init_10
(
VP9DSPContext
*
dsp
);
#endif
#if BIT_DEPTH != 10
static
#endif
av_cold
void
FUNC
(
vp9dsp_intrapred_init
)(
VP9DSPContext
*
dsp
)
{
#define init_intra_pred_bd_aware(tx, sz) \
dsp->intra_pred[tx][TM_VP8_PRED] = tm_##sz##_c; \
dsp->intra_pred[tx][DC_128_PRED] = dc_128_##sz##_c; \
dsp->intra_pred[tx][DC_127_PRED] = dc_127_##sz##_c; \
dsp->intra_pred[tx][DC_129_PRED] = dc_129_##sz##_c
#if BIT_DEPTH == 12
vp9dsp_intrapred_init_10
(
dsp
);
#define init_intra_pred(tx, sz) \
init_intra_pred_bd_aware(tx, sz)
#else
#define init_intra_pred(tx, sz) \
dsp->intra_pred[tx][VERT_PRED] = vert_##sz##_c; \
dsp->intra_pred[tx][HOR_PRED] = hor_##sz##_c; \
dsp->intra_pred[tx][DC_PRED] = dc_##sz##_c; \
...
...
@@ -1077,12 +1106,10 @@ static av_cold void vp9dsp_intrapred_init(VP9DSPContext *dsp)
dsp->intra_pred[tx][HOR_DOWN_PRED] = hor_down_##sz##_c; \
dsp->intra_pred[tx][VERT_LEFT_PRED] = vert_left_##sz##_c; \
dsp->intra_pred[tx][HOR_UP_PRED] = hor_up_##sz##_c; \
dsp->intra_pred[tx][TM_VP8_PRED] = tm_##sz##_c; \
dsp->intra_pred[tx][LEFT_DC_PRED] = dc_left_##sz##_c; \
dsp->intra_pred[tx][TOP_DC_PRED] = dc_top_##sz##_c; \
dsp->intra_pred[tx][DC_128_PRED] = dc_128_##sz##_c; \
dsp->intra_pred[tx][DC_127_PRED] = dc_127_##sz##_c; \
dsp->intra_pred[tx][DC_129_PRED] = dc_129_##sz##_c
init_intra_pred_bd_aware(tx, sz)
#endif
init_intra_pred
(
TX_4X4
,
4
x4
);
init_intra_pred
(
TX_8X8
,
8
x8
);
...
...
@@ -1090,6 +1117,7 @@ static av_cold void vp9dsp_intrapred_init(VP9DSPContext *dsp)
init_intra_pred
(
TX_32X32
,
32
x32
);
#undef init_intra_pred
#undef init_intra_pred_bd_aware
}
#define itxfm_wrapper(type_a, type_b, sz, bits, has_dconly) \
...
...
@@ -1906,6 +1934,8 @@ static av_cold void vp9dsp_loopfilter_init(VP9DSPContext *dsp)
dsp
->
loop_filter_mix2
[
1
][
1
][
1
]
=
loop_filter_v_88_16_c
;
}
#if BIT_DEPTH != 12
static
av_always_inline
void
copy_c
(
uint8_t
*
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
src
,
ptrdiff_t
src_stride
,
int
w
,
int
h
)
...
...
@@ -1959,6 +1989,8 @@ copy_avg_fn(4)
#undef fpel_fn
#undef copy_avg_fn
#endif
/* BIT_DEPTH != 12 */
static
const
int16_t
vp9_subpel_filters
[
3
][
16
][
8
]
=
{
[
FILTER_8TAP_REGULAR
]
=
{
{
0
,
0
,
0
,
128
,
0
,
0
,
0
,
0
},
...
...
@@ -2136,6 +2168,8 @@ static void avg##_8tap_##type##_##sz##hv_c(uint8_t *dst, ptrdiff_t dst_stride, \
vp9_subpel_filters[type_idx][my]); \
}
#if BIT_DEPTH != 12
#define FILTER_BILIN(src, x, mxy, stride) \
(src[x] + ((mxy * (src[x + stride] - src[x]) + 8) >> 4))
...
...
@@ -2244,6 +2278,13 @@ static void avg##_bilin_##sz##hv_c(uint8_t *dst, ptrdiff_t dst_stride, \
avg##_bilin_2d_hv_c(dst, dst_stride, src, src_stride, sz, h, mx, my); \
}
#else
#define bilinf_fn_1d(a, b, c, d)
#define bilinf_fn_2d(a, b)
#endif
#define filter_fn(sz, avg) \
filter_fn_1d(sz, h, mx, regular, FILTER_8TAP_REGULAR, avg) \
filter_fn_1d(sz, v, my, regular, FILTER_8TAP_REGULAR, avg) \
...
...
@@ -2275,8 +2316,18 @@ filter_fn_set(avg)
#undef bilinf_fn_1d
#undef bilinf_fn_2d
static
av_cold
void
vp9dsp_mc_init
(
VP9DSPContext
*
dsp
)
#if BIT_DEPTH != 8
void
vp9dsp_mc_init_10
(
VP9DSPContext
*
dsp
);
#endif
#if BIT_DEPTH != 10
static
#endif
av_cold
void
FUNC
(
vp9dsp_mc_init
)(
VP9DSPContext
*
dsp
)
{
#if BIT_DEPTH == 12
vp9dsp_mc_init_10
(
dsp
);
#else
/* BIT_DEPTH == 12 */
#define init_fpel(idx1, idx2, sz, type) \
dsp->mc[idx1][FILTER_8TAP_SMOOTH ][idx2][0][0] = type##sz##_c; \
dsp->mc[idx1][FILTER_8TAP_REGULAR][idx2][0][0] = type##sz##_c; \
...
...
@@ -2296,11 +2347,20 @@ static av_cold void vp9dsp_mc_init(VP9DSPContext *dsp)
#undef init_copy_avg
#undef init_fpel
#define init_subpel1(idx1, idx2, idxh, idxv, sz, dir, type) \
#endif
/* BIT_DEPTH == 12 */
#define init_subpel1_bd_aware(idx1, idx2, idxh, idxv, sz, dir, type) \
dsp->mc[idx1][FILTER_8TAP_SMOOTH ][idx2][idxh][idxv] = type##_8tap_smooth_##sz##dir##_c; \
dsp->mc[idx1][FILTER_8TAP_REGULAR][idx2][idxh][idxv] = type##_8tap_regular_##sz##dir##_c; \
dsp->mc[idx1][FILTER_8TAP_SHARP ][idx2][idxh][idxv] = type##_8tap_sharp_##sz##dir##_c; \
dsp->mc[idx1][FILTER_8TAP_SHARP ][idx2][idxh][idxv] = type##_8tap_sharp_##sz##dir##_c
#if BIT_DEPTH == 12
#define init_subpel1 init_subpel1_bd_aware
#else
#define init_subpel1(idx1, idx2, idxh, idxv, sz, dir, type) \
init_subpel1_bd_aware(idx1, idx2, idxh, idxv, sz, dir, type); \
dsp->mc[idx1][FILTER_BILINEAR ][idx2][idxh][idxv] = type##_bilin_##sz##dir##_c
#endif
#define init_subpel2(idx, idxh, idxv, dir, type) \
init_subpel1(0, idx, idxh, idxv, 64, dir, type); \
...
...
@@ -2320,6 +2380,7 @@ static av_cold void vp9dsp_mc_init(VP9DSPContext *dsp)
#undef init_subpel1
#undef init_subpel2
#undef init_subpel3
#undef init_subpel1_bd_aware
}
static
av_always_inline
void
do_scaled_8tap_c
(
uint8_t
*
_dst
,
ptrdiff_t
dst_stride
,
...
...
@@ -2396,6 +2457,8 @@ static void avg##_scaled_##type##_##sz##_c(uint8_t *dst, ptrdiff_t dst_stride, \
vp9_subpel_filters[type_idx]); \
}
#if BIT_DEPTH != 12
static
av_always_inline
void
do_scaled_bilin_c
(
uint8_t
*
_dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
_src
,
ptrdiff_t
src_stride
,
int
w
,
int
h
,
int
mx
,
int
my
,
...
...
@@ -2464,6 +2527,12 @@ static void avg##_scaled_bilin_##sz##_c(uint8_t *dst, ptrdiff_t dst_stride, \
avg##_scaled_bilin_c(dst, dst_stride, src, src_stride, sz, h, mx, my, dx, dy); \
}
#else
#define scaled_bilinf_fn(a, b)
#endif
#define scaled_filter_fns(sz, avg) \
scaled_filter_fn(sz, regular, FILTER_8TAP_REGULAR, avg) \
scaled_filter_fn(sz, smooth, FILTER_8TAP_SMOOTH, avg) \
...
...
@@ -2485,13 +2554,27 @@ scaled_filter_fn_set(avg)
#undef scaled_filter_fn
#undef scaled_bilinf_fn
static
av_cold
void
vp9dsp_scaled_mc_init
(
VP9DSPContext
*
dsp
)
#if BIT_DEPTH != 8
void
vp9dsp_scaled_mc_init_10
(
VP9DSPContext
*
dsp
);
#endif
#if BIT_DEPTH != 10
static
#endif
av_cold
void
FUNC
(
vp9dsp_scaled_mc_init
)(
VP9DSPContext
*
dsp
)
{
#define init_scaled(idx1, idx2, sz, type) \
#define init_scaled
_bd_aware
(idx1, idx2, sz, type) \
dsp->smc[idx1][FILTER_8TAP_SMOOTH ][idx2] = type##_scaled_smooth_##sz##_c; \
dsp->smc[idx1][FILTER_8TAP_REGULAR][idx2] = type##_scaled_regular_##sz##_c; \
dsp->smc[idx1][FILTER_8TAP_SHARP ][idx2] = type##_scaled_sharp_##sz##_c; \
dsp->smc[idx1][FILTER_8TAP_SHARP ][idx2] = type##_scaled_sharp_##sz##_c
#if BIT_DEPTH == 12
vp9dsp_scaled_mc_init_10
(
dsp
);
#define init_scaled(a,b,c,d) init_scaled_bd_aware(a,b,c,d)
#else
#define init_scaled(idx1, idx2, sz, type) \
init_scaled_bd_aware(idx1, idx2, sz, type); \
dsp->smc[idx1][FILTER_BILINEAR ][idx2] = type##_scaled_bilin_##sz##_c
#endif
#define init_scaled_put_avg(idx, sz) \
init_scaled(idx, 0, sz, put); \
...
...
@@ -2505,13 +2588,14 @@ static av_cold void vp9dsp_scaled_mc_init(VP9DSPContext *dsp)
#undef init_scaled_put_avg
#undef init_scaled
#undef init_scaled_bd_aware
}
av_cold
void
FUNC
(
ff_vp9dsp_init
)(
VP9DSPContext
*
dsp
)
{
vp9dsp_intrapred_init
(
dsp
);
FUNC
(
vp9dsp_intrapred_init
)
(
dsp
);
vp9dsp_itxfm_init
(
dsp
);
vp9dsp_loopfilter_init
(
dsp
);
vp9dsp_mc_init
(
dsp
);
vp9dsp_scaled_mc_init
(
dsp
);
FUNC
(
vp9dsp_mc_init
)
(
dsp
);
FUNC
(
vp9dsp_scaled_mc_init
)
(
dsp
);
}
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