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
7ab5d577
Commit
7ab5d577
authored
Apr 16, 2016
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
h264: move initializing the slice start out of h264_slice_header_parse()
parent
4cec43a9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
17 additions
and
17 deletions
+17
-17
h264.h
libavcodec/h264.h
+1
-0
h264_slice.c
libavcodec/h264_slice.c
+16
-17
No files found.
libavcodec/h264.h
View file @
7ab5d577
...
...
@@ -355,6 +355,7 @@ typedef struct H264SliceContext {
int
mb_xy
;
int
resync_mb_x
;
int
resync_mb_y
;
unsigned
int
first_mb_addr
;
// index of the first MB of the next slice
int
next_slice_idx
;
int
mb_skip_run
;
...
...
libavcodec/h264_slice.c
View file @
7ab5d577
...
...
@@ -905,7 +905,6 @@ static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl)
{
const
SPS
*
sps
;
const
PPS
*
pps
;
unsigned
int
first_mb_in_slice
;
unsigned
int
pps_id
;
int
ret
;
unsigned
int
slice_type
,
tmp
,
i
;
...
...
@@ -915,9 +914,9 @@ static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl)
int
frame_num
,
droppable
,
picture_structure
;
int
mb_aff_frame
=
0
;
first_mb_in_slice
=
get_ue_golomb
(
&
sl
->
gb
);
sl
->
first_mb_addr
=
get_ue_golomb
(
&
sl
->
gb
);
if
(
first_mb_in_slice
==
0
)
{
// FIXME better field boundary detection
if
(
sl
->
first_mb_addr
==
0
)
{
// FIXME better field boundary detection
if
(
h
->
current_slice
&&
h
->
cur_pic_ptr
&&
FIELD_PICTURE
(
h
))
{
ff_h264_field_end
(
h
,
sl
,
1
);
}
...
...
@@ -936,7 +935,7 @@ static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl)
if
(
slice_type
>
9
)
{
av_log
(
h
->
avctx
,
AV_LOG_ERROR
,
"slice type %d too large at %d
\n
"
,
slice_type
,
first_mb_in_slice
);
slice_type
,
sl
->
first_mb_addr
);
return
AVERROR_INVALIDDATA
;
}
if
(
slice_type
>
4
)
{
...
...
@@ -1274,19 +1273,6 @@ static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl)
}
}
assert
(
h
->
mb_num
==
h
->
mb_width
*
h
->
mb_height
);
if
(
first_mb_in_slice
<<
FIELD_OR_MBAFF_PICTURE
(
h
)
>=
h
->
mb_num
||
first_mb_in_slice
>=
h
->
mb_num
)
{
av_log
(
h
->
avctx
,
AV_LOG_ERROR
,
"first_mb_in_slice overflow
\n
"
);
return
AVERROR_INVALIDDATA
;
}
sl
->
resync_mb_x
=
sl
->
mb_x
=
first_mb_in_slice
%
h
->
mb_width
;
sl
->
resync_mb_y
=
sl
->
mb_y
=
(
first_mb_in_slice
/
h
->
mb_width
)
<<
FIELD_OR_MBAFF_PICTURE
(
h
);
if
(
h
->
picture_structure
==
PICT_BOTTOM_FIELD
)
sl
->
resync_mb_y
=
sl
->
mb_y
=
sl
->
mb_y
+
1
;
assert
(
sl
->
mb_y
<
h
->
mb_height
);
if
(
h
->
picture_structure
==
PICT_FRAME
)
{
h
->
curr_pic_num
=
h
->
poc
.
frame_num
;
h
->
max_pic_num
=
1
<<
sps
->
log2_max_frame_num
;
...
...
@@ -1442,6 +1428,19 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl)
if
(
ret
<
0
)
return
ret
;
assert
(
h
->
mb_num
==
h
->
mb_width
*
h
->
mb_height
);
if
(
sl
->
first_mb_addr
<<
FIELD_OR_MBAFF_PICTURE
(
h
)
>=
h
->
mb_num
||
sl
->
first_mb_addr
>=
h
->
mb_num
)
{
av_log
(
h
->
avctx
,
AV_LOG_ERROR
,
"first_mb_in_slice overflow
\n
"
);
return
AVERROR_INVALIDDATA
;
}
sl
->
resync_mb_x
=
sl
->
mb_x
=
sl
->
first_mb_addr
%
h
->
mb_width
;
sl
->
resync_mb_y
=
sl
->
mb_y
=
(
sl
->
first_mb_addr
/
h
->
mb_width
)
<<
FIELD_OR_MBAFF_PICTURE
(
h
);
if
(
h
->
picture_structure
==
PICT_BOTTOM_FIELD
)
sl
->
resync_mb_y
=
sl
->
mb_y
=
sl
->
mb_y
+
1
;
assert
(
sl
->
mb_y
<
h
->
mb_height
);
if
(
!
h
->
setup_finished
)
ff_h264_init_poc
(
h
->
cur_pic_ptr
->
field_poc
,
&
h
->
cur_pic_ptr
->
poc
,
h
->
ps
.
sps
,
&
h
->
poc
,
h
->
picture_structure
,
h
->
nal_ref_idc
);
...
...
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