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
23ba4538
Commit
23ba4538
authored
May 06, 2015
by
Ronald S. Bultje
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vp9: add inter-frame profile 2/3 suport.
parent
b224b165
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
167 additions
and
87 deletions
+167
-87
vp9.c
libavcodec/vp9.c
+88
-48
vp9_mc_template.c
libavcodec/vp9_mc_template.c
+23
-14
vp9dsp_template.c
libavcodec/vp9dsp_template.c
+56
-25
No files found.
libavcodec/vp9.c
View file @
23ba4538
This diff is collapsed.
Click to expand it.
libavcodec/vp9_mc_template.c
View file @
23ba4538
...
...
@@ -40,6 +40,7 @@ static void FN(inter_pred)(AVCodecContext *ctx)
AVFrame
*
ref1
=
tref1
->
f
,
*
ref2
;
int
w1
=
ref1
->
width
,
h1
=
ref1
->
height
,
w2
,
h2
;
ptrdiff_t
ls_y
=
s
->
y_stride
,
ls_uv
=
s
->
uv_stride
;
int
bytesperpixel
=
BYTES_PER_PIXEL
;
if
(
b
->
comp
)
{
tref2
=
&
s
->
refs
[
s
->
refidx
[
b
->
ref
[
1
]]];
...
...
@@ -138,7 +139,7 @@ static void FN(inter_pred)(AVCodecContext *ctx)
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
s
->
dst
[
0
],
ls_y
,
ref1
->
data
[
0
],
ref1
->
linesize
[
0
],
tref1
,
row
<<
3
,
col
<<
3
,
&
b
->
mv
[
0
][
0
],
4
,
8
,
w1
,
h1
,
0
);
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
s
->
dst
[
0
]
+
4
,
ls_y
,
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
s
->
dst
[
0
]
+
4
*
bytesperpixel
,
ls_y
,
ref1
->
data
[
0
],
ref1
->
linesize
[
0
],
tref1
,
row
<<
3
,
(
col
<<
3
)
+
4
,
&
b
->
mv
[
1
][
0
],
4
,
8
,
w1
,
h1
,
0
);
h1
=
(
h1
+
s
->
ss_v
)
>>
s
->
ss_v
;
...
...
@@ -159,7 +160,8 @@ static void FN(inter_pred)(AVCodecContext *ctx)
row
<<
(
3
-
s
->
ss_v
),
col
<<
3
,
&
b
->
mv
[
0
][
0
],
4
,
8
>>
s
->
ss_v
,
w1
,
h1
,
0
);
mc_chroma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
s
->
dst
[
1
]
+
4
,
s
->
dst
[
2
]
+
4
,
ls_uv
,
s
->
dst
[
1
]
+
4
*
bytesperpixel
,
s
->
dst
[
2
]
+
4
*
bytesperpixel
,
ls_uv
,
ref1
->
data
[
1
],
ref1
->
linesize
[
1
],
ref1
->
data
[
2
],
ref1
->
linesize
[
2
],
tref1
,
row
<<
(
3
-
s
->
ss_v
),
(
col
<<
3
)
+
4
,
...
...
@@ -170,7 +172,7 @@ static void FN(inter_pred)(AVCodecContext *ctx)
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
s
->
dst
[
0
],
ls_y
,
ref2
->
data
[
0
],
ref2
->
linesize
[
0
],
tref2
,
row
<<
3
,
col
<<
3
,
&
b
->
mv
[
0
][
1
],
4
,
8
,
w2
,
h2
,
1
);
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
s
->
dst
[
0
]
+
4
,
ls_y
,
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
s
->
dst
[
0
]
+
4
*
bytesperpixel
,
ls_y
,
ref2
->
data
[
0
],
ref2
->
linesize
[
0
],
tref2
,
row
<<
3
,
(
col
<<
3
)
+
4
,
&
b
->
mv
[
1
][
1
],
4
,
8
,
w2
,
h2
,
1
);
h2
=
(
h2
+
s
->
ss_v
)
>>
s
->
ss_v
;
...
...
@@ -191,7 +193,8 @@ static void FN(inter_pred)(AVCodecContext *ctx)
row
<<
(
3
-
s
->
ss_v
),
col
<<
3
,
&
b
->
mv
[
0
][
1
],
4
,
8
>>
s
->
ss_v
,
w2
,
h2
,
1
);
mc_chroma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
s
->
dst
[
1
]
+
4
,
s
->
dst
[
2
]
+
4
,
ls_uv
,
s
->
dst
[
1
]
+
4
*
bytesperpixel
,
s
->
dst
[
2
]
+
4
*
bytesperpixel
,
ls_uv
,
ref2
->
data
[
1
],
ref2
->
linesize
[
1
],
ref2
->
data
[
2
],
ref2
->
linesize
[
2
],
tref2
,
row
<<
(
3
-
s
->
ss_v
),
(
col
<<
3
)
+
4
,
...
...
@@ -206,7 +209,7 @@ static void FN(inter_pred)(AVCodecContext *ctx)
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
s
->
dst
[
0
],
ls_y
,
ref1
->
data
[
0
],
ref1
->
linesize
[
0
],
tref1
,
row
<<
3
,
col
<<
3
,
&
b
->
mv
[
0
][
0
],
4
,
4
,
w1
,
h1
,
0
);
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
s
->
dst
[
0
]
+
4
,
ls_y
,
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
s
->
dst
[
0
]
+
4
*
bytesperpixel
,
ls_y
,
ref1
->
data
[
0
],
ref1
->
linesize
[
0
],
tref1
,
row
<<
3
,
(
col
<<
3
)
+
4
,
&
b
->
mv
[
1
][
0
],
4
,
4
,
w1
,
h1
,
0
);
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
...
...
@@ -214,7 +217,7 @@ static void FN(inter_pred)(AVCodecContext *ctx)
ref1
->
data
[
0
],
ref1
->
linesize
[
0
],
tref1
,
(
row
<<
3
)
+
4
,
col
<<
3
,
&
b
->
mv
[
2
][
0
],
4
,
4
,
w1
,
h1
,
0
);
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
s
->
dst
[
0
]
+
4
*
ls_y
+
4
,
ls_y
,
s
->
dst
[
0
]
+
4
*
ls_y
+
4
*
bytesperpixel
,
ls_y
,
ref1
->
data
[
0
],
ref1
->
linesize
[
0
],
tref1
,
(
row
<<
3
)
+
4
,
(
col
<<
3
)
+
4
,
&
b
->
mv
[
3
][
0
],
4
,
4
,
w1
,
h1
,
0
);
if
(
s
->
ss_v
)
{
...
...
@@ -239,7 +242,8 @@ static void FN(inter_pred)(AVCodecContext *ctx)
&
uvmv
,
4
,
4
,
w1
,
h1
,
0
);
uvmv
=
ROUNDED_DIV_MVx2
(
b
->
mv
[
1
][
0
],
b
->
mv
[
3
][
0
]);
mc_chroma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
s
->
dst
[
1
]
+
4
,
s
->
dst
[
2
]
+
4
,
ls_uv
,
s
->
dst
[
1
]
+
4
*
bytesperpixel
,
s
->
dst
[
2
]
+
4
*
bytesperpixel
,
ls_uv
,
ref1
->
data
[
1
],
ref1
->
linesize
[
1
],
ref1
->
data
[
2
],
ref1
->
linesize
[
2
],
tref1
,
row
<<
2
,
(
col
<<
3
)
+
4
,
...
...
@@ -273,7 +277,8 @@ static void FN(inter_pred)(AVCodecContext *ctx)
row
<<
3
,
col
<<
3
,
&
b
->
mv
[
0
][
0
],
4
,
4
,
w1
,
h1
,
0
);
mc_chroma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
s
->
dst
[
1
]
+
4
,
s
->
dst
[
2
]
+
4
,
ls_uv
,
s
->
dst
[
1
]
+
4
*
bytesperpixel
,
s
->
dst
[
2
]
+
4
*
bytesperpixel
,
ls_uv
,
ref1
->
data
[
1
],
ref1
->
linesize
[
1
],
ref1
->
data
[
2
],
ref1
->
linesize
[
2
],
tref1
,
row
<<
3
,
(
col
<<
3
)
+
4
,
...
...
@@ -285,7 +290,8 @@ static void FN(inter_pred)(AVCodecContext *ctx)
(
row
<<
3
)
+
4
,
col
<<
3
,
&
b
->
mv
[
2
][
0
],
4
,
4
,
w1
,
h1
,
0
);
mc_chroma_dir
(
s
,
mc
[
4
][
b
->
filter
][
0
],
s
->
dst
[
1
]
+
4
*
ls_uv
+
4
,
s
->
dst
[
2
]
+
4
*
ls_uv
+
4
,
ls_uv
,
s
->
dst
[
1
]
+
4
*
ls_uv
+
4
*
bytesperpixel
,
s
->
dst
[
2
]
+
4
*
ls_uv
+
4
*
bytesperpixel
,
ls_uv
,
ref1
->
data
[
1
],
ref1
->
linesize
[
1
],
ref1
->
data
[
2
],
ref1
->
linesize
[
2
],
tref1
,
(
row
<<
3
)
+
4
,
(
col
<<
3
)
+
4
,
...
...
@@ -297,7 +303,7 @@ static void FN(inter_pred)(AVCodecContext *ctx)
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
s
->
dst
[
0
],
ls_y
,
ref2
->
data
[
0
],
ref2
->
linesize
[
0
],
tref2
,
row
<<
3
,
col
<<
3
,
&
b
->
mv
[
0
][
1
],
4
,
4
,
w2
,
h2
,
1
);
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
s
->
dst
[
0
]
+
4
,
ls_y
,
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
s
->
dst
[
0
]
+
4
*
bytesperpixel
,
ls_y
,
ref2
->
data
[
0
],
ref2
->
linesize
[
0
],
tref2
,
row
<<
3
,
(
col
<<
3
)
+
4
,
&
b
->
mv
[
1
][
1
],
4
,
4
,
w2
,
h2
,
1
);
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
...
...
@@ -305,7 +311,7 @@ static void FN(inter_pred)(AVCodecContext *ctx)
ref2
->
data
[
0
],
ref2
->
linesize
[
0
],
tref2
,
(
row
<<
3
)
+
4
,
col
<<
3
,
&
b
->
mv
[
2
][
1
],
4
,
4
,
w2
,
h2
,
1
);
mc_luma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
s
->
dst
[
0
]
+
4
*
ls_y
+
4
,
ls_y
,
s
->
dst
[
0
]
+
4
*
ls_y
+
4
*
bytesperpixel
,
ls_y
,
ref2
->
data
[
0
],
ref2
->
linesize
[
0
],
tref2
,
(
row
<<
3
)
+
4
,
(
col
<<
3
)
+
4
,
&
b
->
mv
[
3
][
1
],
4
,
4
,
w2
,
h2
,
1
);
if
(
s
->
ss_v
)
{
...
...
@@ -330,7 +336,8 @@ static void FN(inter_pred)(AVCodecContext *ctx)
&
uvmv
,
4
,
4
,
w2
,
h2
,
1
);
uvmv
=
ROUNDED_DIV_MVx2
(
b
->
mv
[
1
][
1
],
b
->
mv
[
3
][
1
]);
mc_chroma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
s
->
dst
[
1
]
+
4
,
s
->
dst
[
2
]
+
4
,
ls_uv
,
s
->
dst
[
1
]
+
4
*
bytesperpixel
,
s
->
dst
[
2
]
+
4
*
bytesperpixel
,
ls_uv
,
ref2
->
data
[
1
],
ref2
->
linesize
[
1
],
ref2
->
data
[
2
],
ref2
->
linesize
[
2
],
tref2
,
row
<<
2
,
(
col
<<
3
)
+
4
,
...
...
@@ -364,7 +371,8 @@ static void FN(inter_pred)(AVCodecContext *ctx)
row
<<
3
,
col
<<
3
,
&
b
->
mv
[
0
][
1
],
4
,
4
,
w2
,
h2
,
1
);
mc_chroma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
s
->
dst
[
1
]
+
4
,
s
->
dst
[
2
]
+
4
,
ls_uv
,
s
->
dst
[
1
]
+
4
*
bytesperpixel
,
s
->
dst
[
2
]
+
4
*
bytesperpixel
,
ls_uv
,
ref2
->
data
[
1
],
ref2
->
linesize
[
1
],
ref2
->
data
[
2
],
ref2
->
linesize
[
2
],
tref2
,
row
<<
3
,
(
col
<<
3
)
+
4
,
...
...
@@ -376,7 +384,8 @@ static void FN(inter_pred)(AVCodecContext *ctx)
(
row
<<
3
)
+
4
,
col
<<
3
,
&
b
->
mv
[
2
][
1
],
4
,
4
,
w2
,
h2
,
1
);
mc_chroma_dir
(
s
,
mc
[
4
][
b
->
filter
][
1
],
s
->
dst
[
1
]
+
4
*
ls_uv
+
4
,
s
->
dst
[
2
]
+
4
*
ls_uv
+
4
,
ls_uv
,
s
->
dst
[
1
]
+
4
*
ls_uv
+
4
*
bytesperpixel
,
s
->
dst
[
2
]
+
4
*
ls_uv
+
4
*
bytesperpixel
,
ls_uv
,
ref2
->
data
[
1
],
ref2
->
linesize
[
1
],
ref2
->
data
[
2
],
ref2
->
linesize
[
2
],
tref2
,
(
row
<<
3
)
+
4
,
(
col
<<
3
)
+
4
,
...
...
libavcodec/vp9dsp_template.c
View file @
23ba4538
...
...
@@ -1911,22 +1911,27 @@ static av_always_inline void copy_c(uint8_t *dst, ptrdiff_t dst_stride,
int
w
,
int
h
)
{
do
{
memcpy
(
dst
,
src
,
w
);
memcpy
(
dst
,
src
,
w
*
sizeof
(
pixel
)
);
dst
+=
dst_stride
;
src
+=
src_stride
;
}
while
(
--
h
);
}
static
av_always_inline
void
avg_c
(
uint8_t
*
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
src
,
ptrdiff_t
src_stride
,
static
av_always_inline
void
avg_c
(
uint8_t
*
_
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
_
src
,
ptrdiff_t
src_stride
,
int
w
,
int
h
)
{
pixel
*
dst
=
(
pixel
*
)
_dst
;
const
pixel
*
src
=
(
const
pixel
*
)
_src
;
dst_stride
/=
sizeof
(
pixel
);
src_stride
/=
sizeof
(
pixel
);
do
{
int
x
;
for
(
x
=
0
;
x
<
w
;
x
+=
4
)
AV_WN
32A
(
&
dst
[
x
],
rnd_avg32
(
AV_RN32A
(
&
dst
[
x
]),
AV_RN32
(
&
src
[
x
])));
AV_WN
4PA
(
&
dst
[
x
],
rnd_avg_pixel4
(
AV_RN4PA
(
&
dst
[
x
]),
AV_RN4P
(
&
src
[
x
])));
dst
+=
dst_stride
;
src
+=
src_stride
;
...
...
@@ -2010,7 +2015,7 @@ static const int16_t vp9_subpel_filters[3][16][8] = {
};
#define FILTER_8TAP(src, x, F, stride) \
av_clip_
uint8
((F[0] * src[x + -3 * stride] + \
av_clip_
pixel
((F[0] * src[x + -3 * stride] + \
F[1] * src[x + -2 * stride] + \
F[2] * src[x + -1 * stride] + \
F[3] * src[x + +0 * stride] + \
...
...
@@ -2019,11 +2024,16 @@ static const int16_t vp9_subpel_filters[3][16][8] = {
F[6] * src[x + +3 * stride] + \
F[7] * src[x + +4 * stride] + 64) >> 7)
static
av_always_inline
void
do_8tap_1d_c
(
uint8_t
*
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
src
,
ptrdiff_t
src_stride
,
static
av_always_inline
void
do_8tap_1d_c
(
uint8_t
*
_
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
_
src
,
ptrdiff_t
src_stride
,
int
w
,
int
h
,
ptrdiff_t
ds
,
const
int16_t
*
filter
,
int
avg
)
{
pixel
*
dst
=
(
pixel
*
)
_dst
;
const
pixel
*
src
=
(
const
pixel
*
)
_src
;
dst_stride
/=
sizeof
(
pixel
);
src_stride
/=
sizeof
(
pixel
);
do
{
int
x
;
...
...
@@ -2047,21 +2057,25 @@ static av_noinline void opn##_8tap_1d_##dir##_c(uint8_t *dst, ptrdiff_t dst_stri
do_8tap_1d_c(dst, dst_stride, src, src_stride, w, h, ds, filter, opa); \
}
filter_8tap_1d_fn
(
put
,
0
,
v
,
src_stride
)
filter_8tap_1d_fn
(
put
,
0
,
v
,
src_stride
/
sizeof
(
pixel
)
)
filter_8tap_1d_fn
(
put
,
0
,
h
,
1
)
filter_8tap_1d_fn
(
avg
,
1
,
v
,
src_stride
)
filter_8tap_1d_fn
(
avg
,
1
,
v
,
src_stride
/
sizeof
(
pixel
)
)
filter_8tap_1d_fn
(
avg
,
1
,
h
,
1
)
#undef filter_8tap_1d_fn
static
av_always_inline
void
do_8tap_2d_c
(
uint8_t
*
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
src
,
ptrdiff_t
src_stride
,
static
av_always_inline
void
do_8tap_2d_c
(
uint8_t
*
_
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
_
src
,
ptrdiff_t
src_stride
,
int
w
,
int
h
,
const
int16_t
*
filterx
,
const
int16_t
*
filtery
,
int
avg
)
{
int
tmp_h
=
h
+
7
;
uint8_t
tmp
[
64
*
71
],
*
tmp_ptr
=
tmp
;
pixel
tmp
[
64
*
71
],
*
tmp_ptr
=
tmp
;
pixel
*
dst
=
(
pixel
*
)
_dst
;
const
pixel
*
src
=
(
const
pixel
*
)
_src
;
dst_stride
/=
sizeof
(
pixel
);
src_stride
/=
sizeof
(
pixel
);
src
-=
src_stride
*
3
;
do
{
int
x
;
...
...
@@ -2125,10 +2139,15 @@ static void avg##_8tap_##type##_##sz##hv_c(uint8_t *dst, ptrdiff_t dst_stride, \
#define FILTER_BILIN(src, x, mxy, stride) \
(src[x] + ((mxy * (src[x + stride] - src[x]) + 8) >> 4))
static
av_always_inline
void
do_bilin_1d_c
(
uint8_t
*
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
src
,
ptrdiff_t
src_stride
,
static
av_always_inline
void
do_bilin_1d_c
(
uint8_t
*
_
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
_
src
,
ptrdiff_t
src_stride
,
int
w
,
int
h
,
ptrdiff_t
ds
,
int
mxy
,
int
avg
)
{
pixel
*
dst
=
(
pixel
*
)
_dst
;
const
pixel
*
src
=
(
const
pixel
*
)
_src
;
dst_stride
/=
sizeof
(
pixel
);
src_stride
/=
sizeof
(
pixel
);
do
{
int
x
;
...
...
@@ -2152,20 +2171,24 @@ static av_noinline void opn##_bilin_1d_##dir##_c(uint8_t *dst, ptrdiff_t dst_str
do_bilin_1d_c(dst, dst_stride, src, src_stride, w, h, ds, mxy, opa); \
}
bilin_1d_fn
(
put
,
0
,
v
,
src_stride
)
bilin_1d_fn
(
put
,
0
,
v
,
src_stride
/
sizeof
(
pixel
)
)
bilin_1d_fn
(
put
,
0
,
h
,
1
)
bilin_1d_fn
(
avg
,
1
,
v
,
src_stride
)
bilin_1d_fn
(
avg
,
1
,
v
,
src_stride
/
sizeof
(
pixel
)
)
bilin_1d_fn
(
avg
,
1
,
h
,
1
)
#undef bilin_1d_fn
static
av_always_inline
void
do_bilin_2d_c
(
uint8_t
*
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
src
,
ptrdiff_t
src_stride
,
static
av_always_inline
void
do_bilin_2d_c
(
uint8_t
*
_
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
_
src
,
ptrdiff_t
src_stride
,
int
w
,
int
h
,
int
mx
,
int
my
,
int
avg
)
{
uint8_t
tmp
[
64
*
65
],
*
tmp_ptr
=
tmp
;
pixel
tmp
[
64
*
65
],
*
tmp_ptr
=
tmp
;
int
tmp_h
=
h
+
1
;
pixel
*
dst
=
(
pixel
*
)
_dst
;
const
pixel
*
src
=
(
const
pixel
*
)
_src
;
dst_stride
/=
sizeof
(
pixel
);
src_stride
/=
sizeof
(
pixel
);
do
{
int
x
;
...
...
@@ -2299,15 +2322,19 @@ static av_cold void vp9dsp_mc_init(VP9DSPContext *dsp)
#undef init_subpel3
}
static
av_always_inline
void
do_scaled_8tap_c
(
uint8_t
*
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
src
,
ptrdiff_t
src_stride
,
static
av_always_inline
void
do_scaled_8tap_c
(
uint8_t
*
_
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
_
src
,
ptrdiff_t
src_stride
,
int
w
,
int
h
,
int
mx
,
int
my
,
int
dx
,
int
dy
,
int
avg
,
const
int16_t
(
*
filters
)[
8
])
{
int
tmp_h
=
(((
h
-
1
)
*
dy
+
my
)
>>
4
)
+
8
;
uint8_t
tmp
[
64
*
135
],
*
tmp_ptr
=
tmp
;
pixel
tmp
[
64
*
135
],
*
tmp_ptr
=
tmp
;
pixel
*
dst
=
(
pixel
*
)
_dst
;
const
pixel
*
src
=
(
const
pixel
*
)
_src
;
dst_stride
/=
sizeof
(
pixel
);
src_stride
/=
sizeof
(
pixel
);
src
-=
src_stride
*
3
;
do
{
int
x
;
...
...
@@ -2369,14 +2396,18 @@ static void avg##_scaled_##type##_##sz##_c(uint8_t *dst, ptrdiff_t dst_stride, \
vp9_subpel_filters[type_idx]); \
}
static
av_always_inline
void
do_scaled_bilin_c
(
uint8_t
*
dst
,
ptrdiff_t
dst_stride
,
const
uint8_t
*
src
,
ptrdiff_t
src_stride
,
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
,
int
dx
,
int
dy
,
int
avg
)
{
uint8_t
tmp
[
64
*
129
],
*
tmp_ptr
=
tmp
;
pixel
tmp
[
64
*
129
],
*
tmp_ptr
=
tmp
;
int
tmp_h
=
(((
h
-
1
)
*
dy
+
my
)
>>
4
)
+
2
;
pixel
*
dst
=
(
pixel
*
)
_dst
;
const
pixel
*
src
=
(
const
pixel
*
)
_src
;
dst_stride
/=
sizeof
(
pixel
);
src_stride
/=
sizeof
(
pixel
);
do
{
int
x
;
int
imx
=
mx
,
ioff
=
0
;
...
...
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