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
1bf371b2
Commit
1bf371b2
authored
Jul 23, 2014
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avcodec/h264: factor is_extra() out
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
54256482
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
20 deletions
+24
-20
h264.c
libavcodec/h264.c
+24
-20
No files found.
libavcodec/h264.c
View file @
1bf371b2
...
...
@@ -1819,6 +1819,28 @@ static int output_frame(H264Context *h, AVFrame *dst, H264Picture *srcp)
return
0
;
}
static
int
is_extra
(
const
uint8_t
*
buf
,
int
buf_size
)
{
int
cnt
=
buf
[
5
]
&
0x1f
;
const
uint8_t
*
p
=
buf
+
6
;
while
(
cnt
--
){
int
nalsize
=
AV_RB16
(
p
)
+
2
;
if
(
nalsize
>
buf_size
-
(
p
-
buf
)
||
p
[
2
]
!=
0x67
)
return
0
;
p
+=
nalsize
;
}
cnt
=
*
(
p
++
);
if
(
!
cnt
)
return
0
;
while
(
cnt
--
){
int
nalsize
=
AV_RB16
(
p
)
+
2
;
if
(
nalsize
>
buf_size
-
(
p
-
buf
)
||
p
[
2
]
!=
0x68
)
return
0
;
p
+=
nalsize
;
}
return
1
;
}
static
int
h264_decode_frame
(
AVCodecContext
*
avctx
,
void
*
data
,
int
*
got_frame
,
AVPacket
*
avpkt
)
{
...
...
@@ -1870,27 +1892,9 @@ static int h264_decode_frame(AVCodecContext *avctx, void *data,
return
buf_index
;
}
if
(
h
->
is_avc
&&
buf_size
>=
9
&&
buf
[
0
]
==
1
&&
buf
[
2
]
==
0
&&
(
buf
[
4
]
&
0xFC
)
==
0xFC
&&
(
buf
[
5
]
&
0x1F
)
&&
buf
[
8
]
==
0x67
){
int
cnt
=
buf
[
5
]
&
0x1f
;
const
uint8_t
*
p
=
buf
+
6
;
while
(
cnt
--
){
int
nalsize
=
AV_RB16
(
p
)
+
2
;
if
(
nalsize
>
buf_size
-
(
p
-
buf
)
||
p
[
2
]
!=
0x67
)
goto
not_extra
;
p
+=
nalsize
;
}
cnt
=
*
(
p
++
);
if
(
!
cnt
)
goto
not_extra
;
while
(
cnt
--
){
int
nalsize
=
AV_RB16
(
p
)
+
2
;
if
(
nalsize
>
buf_size
-
(
p
-
buf
)
||
p
[
2
]
!=
0x68
)
goto
not_extra
;
p
+=
nalsize
;
}
return
ff_h264_decode_extradata
(
h
,
buf
,
buf_size
);
if
(
is_extra
(
buf
,
buf_size
))
return
ff_h264_decode_extradata
(
h
,
buf
,
buf_size
);
}
not_extra:
buf_index
=
decode_nal_units
(
h
,
buf
,
buf_size
,
0
);
if
(
buf_index
<
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