diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-09-25 00:02:52 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-09-25 00:09:42 +0200 |
commit | b8d3f7fc21b987378bb6042e038d7f598374dba8 (patch) | |
tree | c6df276c639d6484d75b3bc24ff27a6c5101401f | |
parent | ad26e83f9cb8626346164ca5e794e940e63db32c (diff) | |
parent | a2efbecc4ed12d287cf29856418c4da4a7648d95 (diff) | |
download | ffmpeg-b8d3f7fc21b987378bb6042e038d7f598374dba8.tar.gz |
Merge commit 'a2efbecc4ed12d287cf29856418c4da4a7648d95'
* commit 'a2efbecc4ed12d287cf29856418c4da4a7648d95':
libavformat: Move avc mp4 startcode parsing to a shared file
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/avc.c | 17 | ||||
-rw-r--r-- | libavformat/avc.h | 3 | ||||
-rw-r--r-- | libavformat/rtpenc_h264.c | 19 |
3 files changed, 22 insertions, 17 deletions
diff --git a/libavformat/avc.c b/libavformat/avc.c index f5c513bb31..c927b47752 100644 --- a/libavformat/avc.c +++ b/libavformat/avc.c @@ -191,3 +191,20 @@ int ff_avc_write_annexb_extradata(const uint8_t *in, uint8_t **buf, int *size) *size = out_size; 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; +} diff --git a/libavformat/avc.h b/libavformat/avc.h index 972e19b94a..c5e80ff650 100644 --- a/libavformat/avc.h +++ b/libavformat/avc.h @@ -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); 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); +const uint8_t *ff_avc_mp4_find_startcode(const uint8_t *start, + const uint8_t *end, + int nal_length_size); #endif /* AVFORMAT_AVC_H */ diff --git a/libavformat/rtpenc_h264.c b/libavformat/rtpenc_h264.c index b6c16e17d8..d2b2ed81b7 100644 --- a/libavformat/rtpenc_h264.c +++ b/libavformat/rtpenc_h264.c @@ -29,21 +29,6 @@ #include "avc.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) { RTPMuxContext *s = s1->priv_data; @@ -88,14 +73,14 @@ void ff_rtp_send_h264(AVFormatContext *s1, const uint8_t *buf1, int size) s->timestamp = s->cur_timestamp; 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 r = ff_avc_find_startcode(buf1, end); while (r < end) { const uint8_t *r1; 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) r1 = end; r += s->nal_length_size; |