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
ffb61814
Commit
ffb61814
authored
Apr 07, 2011
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix deblocking with thread_slices
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
f6d71b39
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
4 deletions
+10
-4
h264.c
libavcodec/h264.c
+10
-4
No files found.
libavcodec/h264.c
View file @
ffb61814
...
...
@@ -2910,9 +2910,11 @@ static void loop_filter(H264Context *h){
int
linesize
,
uvlinesize
,
mb_x
,
mb_y
;
const
int
end_mb_y
=
s
->
mb_y
+
FRAME_MBAFF
;
const
int
old_slice_type
=
h
->
slice_type
;
const
int
end_mb_x
=
s
->
mb_x
;
if
(
h
->
deblocking_filter
)
{
for
(
mb_x
=
0
;
mb_x
<
s
->
mb_width
;
mb_x
++
){
int
start_x
=
s
->
resync_mb_y
==
s
->
mb_y
?
s
->
resync_mb_x
:
0
;
for
(
mb_x
=
start_x
;
mb_x
<
end_mb_x
;
mb_x
++
){
for
(
mb_y
=
end_mb_y
-
FRAME_MBAFF
;
mb_y
<=
end_mb_y
;
mb_y
++
){
int
mb_xy
,
mb_type
;
mb_xy
=
h
->
mb_xy
=
mb_x
+
mb_y
*
s
->
mb_stride
;
...
...
@@ -2957,7 +2959,7 @@ static void loop_filter(H264Context *h){
}
}
h
->
slice_type
=
old_slice_type
;
s
->
mb_x
=
0
;
s
->
mb_x
=
end_mb_x
;
s
->
mb_y
=
end_mb_y
-
FRAME_MBAFF
;
h
->
chroma_qp
[
0
]
=
get_chroma_qp
(
h
,
0
,
s
->
qscale
);
h
->
chroma_qp
[
1
]
=
get_chroma_qp
(
h
,
1
,
s
->
qscale
);
...
...
@@ -3059,8 +3061,8 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg){
}
if
(
++
s
->
mb_x
>=
s
->
mb_width
)
{
s
->
mb_x
=
0
;
loop_filter
(
h
);
s
->
mb_x
=
0
;
decode_finish_row
(
h
);
++
s
->
mb_y
;
if
(
FIELD_OR_MBAFF_PICTURE
)
{
...
...
@@ -3071,6 +3073,8 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg){
}
if
(
eos
||
s
->
mb_y
>=
s
->
mb_height
)
{
if
(
s
->
mb_x
)
loop_filter
(
h
);
tprintf
(
s
->
avctx
,
"slice end %d %d
\n
"
,
get_bits_count
(
&
s
->
gb
),
s
->
gb
.
size_in_bits
);
ff_er_add_slice
(
s
,
s
->
resync_mb_x
,
s
->
resync_mb_y
,
s
->
mb_x
-
1
,
s
->
mb_y
,
(
AC_END
|
DC_END
|
MV_END
)
&
part_mask
);
return
0
;
...
...
@@ -3099,8 +3103,8 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg){
}
if
(
++
s
->
mb_x
>=
s
->
mb_width
){
s
->
mb_x
=
0
;
loop_filter
(
h
);
s
->
mb_x
=
0
;
decode_finish_row
(
h
);
++
s
->
mb_y
;
if
(
FIELD_OR_MBAFF_PICTURE
)
{
...
...
@@ -3127,6 +3131,8 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg){
if
(
get_bits_count
(
&
s
->
gb
)
>=
s
->
gb
.
size_in_bits
&&
s
->
mb_skip_run
<=
0
){
tprintf
(
s
->
avctx
,
"slice end %d %d
\n
"
,
get_bits_count
(
&
s
->
gb
),
s
->
gb
.
size_in_bits
);
if
(
get_bits_count
(
&
s
->
gb
)
==
s
->
gb
.
size_in_bits
){
if
(
s
->
mb_x
)
loop_filter
(
h
);
ff_er_add_slice
(
s
,
s
->
resync_mb_x
,
s
->
resync_mb_y
,
s
->
mb_x
-
1
,
s
->
mb_y
,
(
AC_END
|
DC_END
|
MV_END
)
&
part_mask
);
return
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