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
dd561441
Commit
dd561441
authored
May 09, 2011
by
Ronald S. Bultje
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
h264: DSP'ize MBAFF loopfilter.
parent
cb48fdf6
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
64 additions
and
140 deletions
+64
-140
h264_loopfilter.c
libavcodec/h264_loopfilter.c
+22
-122
h264dsp.c
libavcodec/h264dsp.c
+38
-18
h264dsp.h
libavcodec/h264dsp.h
+4
-0
No files found.
libavcodec/h264_loopfilter.c
View file @
dd561441
...
...
@@ -135,138 +135,38 @@ static void av_always_inline filter_mb_edgecv( uint8_t *pix, int stride, int16_t
}
}
static
void
filter_mb_mbaff_edgev
(
H264Context
*
h
,
uint8_t
*
pix
,
int
stride
,
int16_t
bS
[
4
],
int
bsi
,
int
qp
)
{
int
i
;
static
void
filter_mb_mbaff_edgev
(
H264Context
*
h
,
uint8_t
*
pix
,
int
stride
,
int16_t
bS
[
7
],
int
bsi
,
int
qp
)
{
int
index_a
=
qp
+
h
->
slice_alpha_c0_offset
;
int
alpha
=
alpha_table
[
index_a
];
int
beta
=
beta_table
[
qp
+
h
->
slice_beta_offset
];
for
(
i
=
0
;
i
<
8
;
i
++
,
pix
+=
stride
)
{
const
int
bS_index
=
(
i
>>
1
)
*
bsi
;
if
(
bS
[
bS_index
]
==
0
)
{
continue
;
}
if
(
bS
[
bS_index
]
<
4
)
{
const
int
tc0
=
tc0_table
[
index_a
][
bS
[
bS_index
]];
const
int
p0
=
pix
[
-
1
];
const
int
p1
=
pix
[
-
2
];
const
int
p2
=
pix
[
-
3
];
const
int
q0
=
pix
[
0
];
const
int
q1
=
pix
[
1
];
const
int
q2
=
pix
[
2
];
if
(
FFABS
(
p0
-
q0
)
<
alpha
&&
FFABS
(
p1
-
p0
)
<
beta
&&
FFABS
(
q1
-
q0
)
<
beta
)
{
int
tc
=
tc0
;
int
i_delta
;
if
(
FFABS
(
p2
-
p0
)
<
beta
)
{
if
(
tc0
)
pix
[
-
2
]
=
p1
+
av_clip
(
(
p2
+
(
(
p0
+
q0
+
1
)
>>
1
)
-
(
p1
<<
1
)
)
>>
1
,
-
tc0
,
tc0
);
tc
++
;
}
if
(
FFABS
(
q2
-
q0
)
<
beta
)
{
if
(
tc0
)
pix
[
1
]
=
q1
+
av_clip
(
(
q2
+
(
(
p0
+
q0
+
1
)
>>
1
)
-
(
q1
<<
1
)
)
>>
1
,
-
tc0
,
tc0
);
tc
++
;
}
i_delta
=
av_clip
(
(((
q0
-
p0
)
<<
2
)
+
(
p1
-
q1
)
+
4
)
>>
3
,
-
tc
,
tc
);
pix
[
-
1
]
=
av_clip_uint8
(
p0
+
i_delta
);
/* p0' */
pix
[
0
]
=
av_clip_uint8
(
q0
-
i_delta
);
/* q0' */
tprintf
(
h
->
s
.
avctx
,
"filter_mb_mbaff_edgev i:%d, qp:%d, indexA:%d, alpha:%d, beta:%d, tc:%d
\n
# bS:%d -> [%02x, %02x, %02x, %02x, %02x, %02x] =>[%02x, %02x, %02x, %02x]
\n
"
,
i
,
qp
[
qp_index
],
index_a
,
alpha
,
beta
,
tc
,
bS
[
bS_index
],
pix
[
-
3
],
p1
,
p0
,
q0
,
q1
,
pix
[
2
],
p1
,
pix
[
-
1
],
pix
[
0
],
q1
);
}
}
else
{
const
int
p0
=
pix
[
-
1
];
const
int
p1
=
pix
[
-
2
];
const
int
p2
=
pix
[
-
3
];
const
int
q0
=
pix
[
0
];
const
int
q1
=
pix
[
1
];
const
int
q2
=
pix
[
2
];
if
(
FFABS
(
p0
-
q0
)
<
alpha
&&
FFABS
(
p1
-
p0
)
<
beta
&&
FFABS
(
q1
-
q0
)
<
beta
)
{
if
(
alpha
==
0
||
beta
==
0
)
return
;
if
(
FFABS
(
p0
-
q0
)
<
((
alpha
>>
2
)
+
2
)){
if
(
FFABS
(
p2
-
p0
)
<
beta
)
{
const
int
p3
=
pix
[
-
4
];
/* p0', p1', p2' */
pix
[
-
1
]
=
(
p2
+
2
*
p1
+
2
*
p0
+
2
*
q0
+
q1
+
4
)
>>
3
;
pix
[
-
2
]
=
(
p2
+
p1
+
p0
+
q0
+
2
)
>>
2
;
pix
[
-
3
]
=
(
2
*
p3
+
3
*
p2
+
p1
+
p0
+
q0
+
4
)
>>
3
;
}
else
{
/* p0' */
pix
[
-
1
]
=
(
2
*
p1
+
p0
+
q1
+
2
)
>>
2
;
}
if
(
FFABS
(
q2
-
q0
)
<
beta
)
{
const
int
q3
=
pix
[
3
];
/* q0', q1', q2' */
pix
[
0
]
=
(
p1
+
2
*
p0
+
2
*
q0
+
2
*
q1
+
q2
+
4
)
>>
3
;
pix
[
1
]
=
(
p0
+
q0
+
q1
+
q2
+
2
)
>>
2
;
pix
[
2
]
=
(
2
*
q3
+
3
*
q2
+
q1
+
q0
+
p0
+
4
)
>>
3
;
}
else
{
/* q0' */
pix
[
0
]
=
(
2
*
q1
+
q0
+
p1
+
2
)
>>
2
;
}
}
else
{
/* p0', q0' */
pix
[
-
1
]
=
(
2
*
p1
+
p0
+
q1
+
2
)
>>
2
;
pix
[
0
]
=
(
2
*
q1
+
q0
+
p1
+
2
)
>>
2
;
}
tprintf
(
h
->
s
.
avctx
,
"filter_mb_mbaff_edgev i:%d, qp:%d, indexA:%d, alpha:%d, beta:%d
\n
# bS:4 -> [%02x, %02x, %02x, %02x, %02x, %02x] =>[%02x, %02x, %02x, %02x, %02x, %02x]
\n
"
,
i
,
qp
[
qp_index
],
index_a
,
alpha
,
beta
,
p2
,
p1
,
p0
,
q0
,
q1
,
q2
,
pix
[
-
3
],
pix
[
-
2
],
pix
[
-
1
],
pix
[
0
],
pix
[
1
],
pix
[
2
]);
}
}
if
(
bS
[
0
]
<
4
)
{
int8_t
tc
[
4
];
tc
[
0
]
=
tc0_table
[
index_a
][
bS
[
0
*
bsi
]];
tc
[
1
]
=
tc0_table
[
index_a
][
bS
[
1
*
bsi
]];
tc
[
2
]
=
tc0_table
[
index_a
][
bS
[
2
*
bsi
]];
tc
[
3
]
=
tc0_table
[
index_a
][
bS
[
3
*
bsi
]];
h
->
h264dsp
.
h264_h_loop_filter_luma_mbaff
(
pix
,
stride
,
alpha
,
beta
,
tc
);
}
else
{
h
->
h264dsp
.
h264_h_loop_filter_luma_mbaff_intra
(
pix
,
stride
,
alpha
,
beta
);
}
}
static
void
filter_mb_mbaff_edgecv
(
H264Context
*
h
,
uint8_t
*
pix
,
int
stride
,
int16_t
bS
[
4
],
int
bsi
,
int
qp
)
{
int
i
;
static
void
filter_mb_mbaff_edgecv
(
H264Context
*
h
,
uint8_t
*
pix
,
int
stride
,
int16_t
bS
[
7
],
int
bsi
,
int
qp
)
{
int
index_a
=
qp
+
h
->
slice_alpha_c0_offset
;
int
alpha
=
alpha_table
[
index_a
];
int
beta
=
beta_table
[
qp
+
h
->
slice_beta_offset
];
for
(
i
=
0
;
i
<
4
;
i
++
,
pix
+=
stride
)
{
const
int
bS_index
=
i
*
bsi
;
if
(
bS
[
bS_index
]
==
0
)
{
continue
;
}
if
(
alpha
==
0
||
beta
==
0
)
return
;
if
(
bS
[
bS_index
]
<
4
)
{
const
int
tc
=
tc0_table
[
index_a
][
bS
[
bS_index
]]
+
1
;
const
int
p0
=
pix
[
-
1
];
const
int
p1
=
pix
[
-
2
];
const
int
q0
=
pix
[
0
];
const
int
q1
=
pix
[
1
];
if
(
FFABS
(
p0
-
q0
)
<
alpha
&&
FFABS
(
p1
-
p0
)
<
beta
&&
FFABS
(
q1
-
q0
)
<
beta
)
{
const
int
i_delta
=
av_clip
(
(((
q0
-
p0
)
<<
2
)
+
(
p1
-
q1
)
+
4
)
>>
3
,
-
tc
,
tc
);
pix
[
-
1
]
=
av_clip_uint8
(
p0
+
i_delta
);
/* p0' */
pix
[
0
]
=
av_clip_uint8
(
q0
-
i_delta
);
/* q0' */
tprintf
(
h
->
s
.
avctx
,
"filter_mb_mbaff_edgecv i:%d, qp:%d, indexA:%d, alpha:%d, beta:%d, tc:%d
\n
# bS:%d -> [%02x, %02x, %02x, %02x, %02x, %02x] =>[%02x, %02x, %02x, %02x]
\n
"
,
i
,
qp
[
qp_index
],
index_a
,
alpha
,
beta
,
tc
,
bS
[
bS_index
],
pix
[
-
3
],
p1
,
p0
,
q0
,
q1
,
pix
[
2
],
p1
,
pix
[
-
1
],
pix
[
0
],
q1
);
}
}
else
{
const
int
p0
=
pix
[
-
1
];
const
int
p1
=
pix
[
-
2
];
const
int
q0
=
pix
[
0
];
const
int
q1
=
pix
[
1
];
if
(
FFABS
(
p0
-
q0
)
<
alpha
&&
FFABS
(
p1
-
p0
)
<
beta
&&
FFABS
(
q1
-
q0
)
<
beta
)
{
pix
[
-
1
]
=
(
2
*
p1
+
p0
+
q1
+
2
)
>>
2
;
/* p0' */
pix
[
0
]
=
(
2
*
q1
+
q0
+
p1
+
2
)
>>
2
;
/* q0' */
tprintf
(
h
->
s
.
avctx
,
"filter_mb_mbaff_edgecv i:%d
\n
# bS:4 -> [%02x, %02x, %02x, %02x, %02x, %02x] =>[%02x, %02x, %02x, %02x, %02x, %02x]
\n
"
,
i
,
pix
[
-
3
],
p1
,
p0
,
q0
,
q1
,
pix
[
2
],
pix
[
-
3
],
pix
[
-
2
],
pix
[
-
1
],
pix
[
0
],
pix
[
1
],
pix
[
2
]);
}
}
if
(
bS
[
0
]
<
4
)
{
int8_t
tc
[
4
];
tc
[
0
]
=
tc0_table
[
index_a
][
bS
[
0
*
bsi
]]
+
1
;
tc
[
1
]
=
tc0_table
[
index_a
][
bS
[
1
*
bsi
]]
+
1
;
tc
[
2
]
=
tc0_table
[
index_a
][
bS
[
2
*
bsi
]]
+
1
;
tc
[
3
]
=
tc0_table
[
index_a
][
bS
[
3
*
bsi
]]
+
1
;
h
->
h264dsp
.
h264_h_loop_filter_chroma_mbaff
(
pix
,
stride
,
alpha
,
beta
,
tc
);
}
else
{
h
->
h264dsp
.
h264_h_loop_filter_chroma_mbaff_intra
(
pix
,
stride
,
alpha
,
beta
);
}
}
...
...
libavcodec/h264dsp.c
View file @
dd561441
...
...
@@ -99,15 +99,15 @@ H264_WEIGHT(2,2)
#undef op_scale2
#undef H264_WEIGHT
static
av_always_inline
av_flatten
void
h264_loop_filter_luma_c
(
uint8_t
*
pix
,
int
xstride
,
int
ystride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
)
static
av_always_inline
av_flatten
void
h264_loop_filter_luma_c
(
uint8_t
*
pix
,
int
xstride
,
int
ystride
,
int
inner_iters
,
int
alpha
,
int
beta
,
int8_t
*
tc0
)
{
int
i
,
d
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
if
(
tc0
[
i
]
<
0
)
{
pix
+=
4
*
ystride
;
pix
+=
inner_iters
*
ystride
;
continue
;
}
for
(
d
=
0
;
d
<
4
;
d
++
)
{
for
(
d
=
0
;
d
<
inner_iters
;
d
++
)
{
const
int
p0
=
pix
[
-
1
*
xstride
];
const
int
p1
=
pix
[
-
2
*
xstride
];
const
int
p2
=
pix
[
-
3
*
xstride
];
...
...
@@ -143,17 +143,21 @@ static av_always_inline av_flatten void h264_loop_filter_luma_c(uint8_t *pix, in
}
static
void
h264_v_loop_filter_luma_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
)
{
h264_loop_filter_luma_c
(
pix
,
stride
,
1
,
alpha
,
beta
,
tc0
);
h264_loop_filter_luma_c
(
pix
,
stride
,
1
,
4
,
alpha
,
beta
,
tc0
);
}
static
void
h264_h_loop_filter_luma_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
)
{
h264_loop_filter_luma_c
(
pix
,
1
,
stride
,
alpha
,
beta
,
tc0
);
h264_loop_filter_luma_c
(
pix
,
1
,
stride
,
4
,
alpha
,
beta
,
tc0
);
}
static
void
h264_h_loop_filter_luma_mbaff_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
)
{
h264_loop_filter_luma_c
(
pix
,
1
,
stride
,
2
,
alpha
,
beta
,
tc0
);
}
static
av_always_inline
av_flatten
void
h264_loop_filter_luma_intra_c
(
uint8_t
*
pix
,
int
xstride
,
int
ystride
,
int
alpha
,
int
beta
)
static
av_always_inline
av_flatten
void
h264_loop_filter_luma_intra_c
(
uint8_t
*
pix
,
int
xstride
,
int
ystride
,
int
inner_iters
,
int
alpha
,
int
beta
)
{
int
d
;
for
(
d
=
0
;
d
<
16
;
d
++
)
{
for
(
d
=
0
;
d
<
4
*
inner_iters
;
d
++
)
{
const
int
p2
=
pix
[
-
3
*
xstride
];
const
int
p1
=
pix
[
-
2
*
xstride
];
const
int
p0
=
pix
[
-
1
*
xstride
];
...
...
@@ -200,23 +204,27 @@ static av_always_inline av_flatten void h264_loop_filter_luma_intra_c(uint8_t *p
}
static
void
h264_v_loop_filter_luma_intra_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
)
{
h264_loop_filter_luma_intra_c
(
pix
,
stride
,
1
,
alpha
,
beta
);
h264_loop_filter_luma_intra_c
(
pix
,
stride
,
1
,
4
,
alpha
,
beta
);
}
static
void
h264_h_loop_filter_luma_intra_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
)
{
h264_loop_filter_luma_intra_c
(
pix
,
1
,
stride
,
alpha
,
beta
);
h264_loop_filter_luma_intra_c
(
pix
,
1
,
stride
,
4
,
alpha
,
beta
);
}
static
void
h264_h_loop_filter_luma_mbaff_intra_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
)
{
h264_loop_filter_luma_intra_c
(
pix
,
1
,
stride
,
2
,
alpha
,
beta
);
}
static
av_always_inline
av_flatten
void
h264_loop_filter_chroma_c
(
uint8_t
*
pix
,
int
xstride
,
int
ystride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
)
static
av_always_inline
av_flatten
void
h264_loop_filter_chroma_c
(
uint8_t
*
pix
,
int
xstride
,
int
ystride
,
int
inner_iters
,
int
alpha
,
int
beta
,
int8_t
*
tc0
)
{
int
i
,
d
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
const
int
tc
=
tc0
[
i
];
if
(
tc
<=
0
)
{
pix
+=
2
*
ystride
;
pix
+=
inner_iters
*
ystride
;
continue
;
}
for
(
d
=
0
;
d
<
2
;
d
++
)
{
for
(
d
=
0
;
d
<
inner_iters
;
d
++
)
{
const
int
p0
=
pix
[
-
1
*
xstride
];
const
int
p1
=
pix
[
-
2
*
xstride
];
const
int
q0
=
pix
[
0
];
...
...
@@ -237,17 +245,21 @@ static av_always_inline av_flatten void h264_loop_filter_chroma_c(uint8_t *pix,
}
static
void
h264_v_loop_filter_chroma_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
)
{
h264_loop_filter_chroma_c
(
pix
,
stride
,
1
,
alpha
,
beta
,
tc0
);
h264_loop_filter_chroma_c
(
pix
,
stride
,
1
,
2
,
alpha
,
beta
,
tc0
);
}
static
void
h264_h_loop_filter_chroma_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
)
{
h264_loop_filter_chroma_c
(
pix
,
1
,
stride
,
alpha
,
beta
,
tc0
);
h264_loop_filter_chroma_c
(
pix
,
1
,
stride
,
2
,
alpha
,
beta
,
tc0
);
}
static
void
h264_h_loop_filter_chroma_mbaff_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
)
{
h264_loop_filter_chroma_c
(
pix
,
1
,
stride
,
1
,
alpha
,
beta
,
tc0
);
}
static
av_always_inline
av_flatten
void
h264_loop_filter_chroma_intra_c
(
uint8_t
*
pix
,
int
xstride
,
int
ystride
,
int
alpha
,
int
beta
)
static
av_always_inline
av_flatten
void
h264_loop_filter_chroma_intra_c
(
uint8_t
*
pix
,
int
xstride
,
int
ystride
,
int
inner_iters
,
int
alpha
,
int
beta
)
{
int
d
;
for
(
d
=
0
;
d
<
8
;
d
++
)
{
for
(
d
=
0
;
d
<
4
*
inner_iters
;
d
++
)
{
const
int
p0
=
pix
[
-
1
*
xstride
];
const
int
p1
=
pix
[
-
2
*
xstride
];
const
int
q0
=
pix
[
0
];
...
...
@@ -265,11 +277,15 @@ static av_always_inline av_flatten void h264_loop_filter_chroma_intra_c(uint8_t
}
static
void
h264_v_loop_filter_chroma_intra_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
)
{
h264_loop_filter_chroma_intra_c
(
pix
,
stride
,
1
,
alpha
,
beta
);
h264_loop_filter_chroma_intra_c
(
pix
,
stride
,
1
,
2
,
alpha
,
beta
);
}
static
void
h264_h_loop_filter_chroma_intra_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
)
{
h264_loop_filter_chroma_intra_c
(
pix
,
1
,
stride
,
alpha
,
beta
);
h264_loop_filter_chroma_intra_c
(
pix
,
1
,
stride
,
2
,
alpha
,
beta
);
}
static
void
h264_h_loop_filter_chroma_mbaff_intra_c
(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
)
{
h264_loop_filter_chroma_intra_c
(
pix
,
1
,
stride
,
1
,
alpha
,
beta
);
}
void
ff_h264dsp_init
(
H264DSPContext
*
c
)
...
...
@@ -307,12 +323,16 @@ void ff_h264dsp_init(H264DSPContext *c)
c
->
h264_v_loop_filter_luma
=
h264_v_loop_filter_luma_c
;
c
->
h264_h_loop_filter_luma
=
h264_h_loop_filter_luma_c
;
c
->
h264_h_loop_filter_luma_mbaff
=
h264_h_loop_filter_luma_mbaff_c
;
c
->
h264_v_loop_filter_luma_intra
=
h264_v_loop_filter_luma_intra_c
;
c
->
h264_h_loop_filter_luma_intra
=
h264_h_loop_filter_luma_intra_c
;
c
->
h264_h_loop_filter_luma_mbaff_intra
=
h264_h_loop_filter_luma_mbaff_intra_c
;
c
->
h264_v_loop_filter_chroma
=
h264_v_loop_filter_chroma_c
;
c
->
h264_h_loop_filter_chroma
=
h264_h_loop_filter_chroma_c
;
c
->
h264_h_loop_filter_chroma_mbaff
=
h264_h_loop_filter_chroma_mbaff_c
;
c
->
h264_v_loop_filter_chroma_intra
=
h264_v_loop_filter_chroma_intra_c
;
c
->
h264_h_loop_filter_chroma_intra
=
h264_h_loop_filter_chroma_intra_c
;
c
->
h264_h_loop_filter_chroma_mbaff_intra
=
h264_h_loop_filter_chroma_mbaff_intra_c
;
c
->
h264_loop_filter_strength
=
NULL
;
if
(
ARCH_ARM
)
ff_h264dsp_init_arm
(
c
);
...
...
libavcodec/h264dsp.h
View file @
dd561441
...
...
@@ -45,13 +45,17 @@ typedef struct H264DSPContext{
/* loop filter */
void
(
*
h264_v_loop_filter_luma
)(
uint8_t
*
pix
/*align 16*/
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
);
void
(
*
h264_h_loop_filter_luma
)(
uint8_t
*
pix
/*align 4 */
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
);
void
(
*
h264_h_loop_filter_luma_mbaff
)(
uint8_t
*
pix
/*align 16*/
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
);
/* v/h_loop_filter_luma_intra: align 16 */
void
(
*
h264_v_loop_filter_luma_intra
)(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
);
void
(
*
h264_h_loop_filter_luma_intra
)(
uint8_t
*
pix
,
int
stride
,
int
alpha
,
int
beta
);
void
(
*
h264_h_loop_filter_luma_mbaff_intra
)(
uint8_t
*
pix
/*align 16*/
,
int
stride
,
int
alpha
,
int
beta
);
void
(
*
h264_v_loop_filter_chroma
)(
uint8_t
*
pix
/*align 8*/
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
);
void
(
*
h264_h_loop_filter_chroma
)(
uint8_t
*
pix
/*align 4*/
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
);
void
(
*
h264_h_loop_filter_chroma_mbaff
)(
uint8_t
*
pix
/*align 8*/
,
int
stride
,
int
alpha
,
int
beta
,
int8_t
*
tc0
);
void
(
*
h264_v_loop_filter_chroma_intra
)(
uint8_t
*
pix
/*align 8*/
,
int
stride
,
int
alpha
,
int
beta
);
void
(
*
h264_h_loop_filter_chroma_intra
)(
uint8_t
*
pix
/*align 8*/
,
int
stride
,
int
alpha
,
int
beta
);
void
(
*
h264_h_loop_filter_chroma_mbaff_intra
)(
uint8_t
*
pix
/*align 8*/
,
int
stride
,
int
alpha
,
int
beta
);
// h264_loop_filter_strength: simd only. the C version is inlined in h264.c
void
(
*
h264_loop_filter_strength
)(
int16_t
bS
[
2
][
4
][
4
],
uint8_t
nnz
[
40
],
int8_t
ref
[
2
][
40
],
int16_t
mv
[
2
][
40
][
2
],
int
bidir
,
int
edges
,
int
step
,
int
mask_mv0
,
int
mask_mv1
,
int
field
);
...
...
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