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
a2efbecc
Commit
a2efbecc
authored
Sep 24, 2014
by
Martin Storsjö
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
libavformat: Move avc mp4 startcode parsing to a shared file
Signed-off-by:
Martin Storsjö
<
martin@martin.st
>
parent
c463dfc7
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
22 additions
and
17 deletions
+22
-17
avc.c
libavformat/avc.c
+17
-0
avc.h
libavformat/avc.h
+3
-0
rtpenc_h264.c
libavformat/rtpenc_h264.c
+2
-17
No files found.
libavformat/avc.c
View file @
a2efbecc
...
@@ -191,3 +191,20 @@ int ff_avc_write_annexb_extradata(const uint8_t *in, uint8_t **buf, int *size)
...
@@ -191,3 +191,20 @@ int ff_avc_write_annexb_extradata(const uint8_t *in, uint8_t **buf, int *size)
*
size
=
out_size
;
*
size
=
out_size
;
return
0
;
return
0
;
}
}
const
uint8_t
*
ff_avc_mp4_find_startcode
(
const
uint8_t
*
start
,
const
uint8_t
*
end
,
int
nal_length_size
)
{
unsigned
int
res
=
0
;
if
(
end
-
start
<
nal_length_size
)
return
NULL
;
while
(
nal_length_size
--
)
res
=
(
res
<<
8
)
|
*
start
++
;
if
(
res
>
end
-
start
)
return
NULL
;
return
start
+
res
;
}
libavformat/avc.h
View file @
a2efbecc
...
@@ -30,5 +30,8 @@ int ff_avc_parse_nal_units_buf(const uint8_t *buf_in, uint8_t **buf, int *size);
...
@@ -30,5 +30,8 @@ int ff_avc_parse_nal_units_buf(const uint8_t *buf_in, uint8_t **buf, int *size);
int
ff_isom_write_avcc
(
AVIOContext
*
pb
,
const
uint8_t
*
data
,
int
len
);
int
ff_isom_write_avcc
(
AVIOContext
*
pb
,
const
uint8_t
*
data
,
int
len
);
const
uint8_t
*
ff_avc_find_startcode
(
const
uint8_t
*
p
,
const
uint8_t
*
end
);
const
uint8_t
*
ff_avc_find_startcode
(
const
uint8_t
*
p
,
const
uint8_t
*
end
);
int
ff_avc_write_annexb_extradata
(
const
uint8_t
*
in
,
uint8_t
**
buf
,
int
*
size
);
int
ff_avc_write_annexb_extradata
(
const
uint8_t
*
in
,
uint8_t
**
buf
,
int
*
size
);
const
uint8_t
*
ff_avc_mp4_find_startcode
(
const
uint8_t
*
start
,
const
uint8_t
*
end
,
int
nal_length_size
);
#endif
/* AVFORMAT_AVC_H */
#endif
/* AVFORMAT_AVC_H */
libavformat/rtpenc_h264.c
View file @
a2efbecc
...
@@ -29,21 +29,6 @@
...
@@ -29,21 +29,6 @@
#include "avc.h"
#include "avc.h"
#include "rtpenc.h"
#include "rtpenc.h"
static
const
uint8_t
*
avc_mp4_find_startcode
(
const
uint8_t
*
start
,
const
uint8_t
*
end
,
int
nal_length_size
)
{
unsigned
int
res
=
0
;
if
(
end
-
start
<
nal_length_size
)
return
NULL
;
while
(
nal_length_size
--
)
res
=
(
res
<<
8
)
|
*
start
++
;
if
(
res
>
end
-
start
)
return
NULL
;
return
start
+
res
;
}
static
void
nal_send
(
AVFormatContext
*
s1
,
const
uint8_t
*
buf
,
int
size
,
int
last
)
static
void
nal_send
(
AVFormatContext
*
s1
,
const
uint8_t
*
buf
,
int
size
,
int
last
)
{
{
RTPMuxContext
*
s
=
s1
->
priv_data
;
RTPMuxContext
*
s
=
s1
->
priv_data
;
...
@@ -88,14 +73,14 @@ void ff_rtp_send_h264(AVFormatContext *s1, const uint8_t *buf1, int size)
...
@@ -88,14 +73,14 @@ void ff_rtp_send_h264(AVFormatContext *s1, const uint8_t *buf1, int size)
s
->
timestamp
=
s
->
cur_timestamp
;
s
->
timestamp
=
s
->
cur_timestamp
;
if
(
s
->
nal_length_size
)
if
(
s
->
nal_length_size
)
r
=
avc_mp4_find_startcode
(
buf1
,
end
,
s
->
nal_length_size
)
?
buf1
:
end
;
r
=
ff_
avc_mp4_find_startcode
(
buf1
,
end
,
s
->
nal_length_size
)
?
buf1
:
end
;
else
else
r
=
ff_avc_find_startcode
(
buf1
,
end
);
r
=
ff_avc_find_startcode
(
buf1
,
end
);
while
(
r
<
end
)
{
while
(
r
<
end
)
{
const
uint8_t
*
r1
;
const
uint8_t
*
r1
;
if
(
s
->
nal_length_size
)
{
if
(
s
->
nal_length_size
)
{
r1
=
avc_mp4_find_startcode
(
r
,
end
,
s
->
nal_length_size
);
r1
=
ff_
avc_mp4_find_startcode
(
r
,
end
,
s
->
nal_length_size
);
if
(
!
r1
)
if
(
!
r1
)
r1
=
end
;
r1
=
end
;
r
+=
s
->
nal_length_size
;
r
+=
s
->
nal_length_size
;
...
...
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