diff options
author | Tim Walker <tdskywalker@gmail.com> | 2014-03-10 15:03:13 +0000 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2014-03-10 18:02:36 +0100 |
commit | 34bbc81de8a49fbddb92b76dc733f40890480b2b (patch) | |
tree | 4e464bfddeacd66f8b0718dcb94a44b96b92c170 | |
parent | 4a8562394b685e83ae4a38a93eef43625755a231 (diff) | |
download | ffmpeg-34bbc81de8a49fbddb92b76dc733f40890480b2b.tar.gz |
lavf: simplify ff_hevc_annexb2mp4_buf
Use ff_hevc_annexb2mp4 instead of duplicating
its functionality, and update the documentation
to match the new behavior.
-rw-r--r-- | libavformat/hevc.c | 43 | ||||
-rw-r--r-- | libavformat/hevc.h | 4 |
2 files changed, 5 insertions, 42 deletions
diff --git a/libavformat/hevc.c b/libavformat/hevc.c index dc45fbfe62..e3be20cfb6 100644 --- a/libavformat/hevc.c +++ b/libavformat/hevc.c @@ -1066,52 +1066,15 @@ int ff_hevc_annexb2mp4_buf(const uint8_t *buf_in, uint8_t **buf_out, int *size, int filter_ps, int *ps_count) { AVIOContext *pb; - int num_ps = 0, ret = 0; - uint8_t *buf, *end, *start = NULL; - - if (!filter_ps) { - ret = ff_avc_parse_nal_units_buf(buf_in, buf_out, size); - goto end; - } + int ret; ret = avio_open_dyn_buf(&pb); if (ret < 0) - goto end; - - ret = ff_avc_parse_nal_units_buf(buf_in, &start, size); - if (ret < 0) - goto end; - - buf = start; - end = start + *size; - - while (end - buf > 4) { - uint32_t len = FFMIN(AV_RB32(buf), end - buf - 4); - uint8_t type = (buf[4] >> 1) & 0x3f; - - buf += 4; - - switch (type) { - case NAL_VPS: - case NAL_SPS: - case NAL_PPS: - num_ps++; - break; - default: - avio_wb32(pb, len); - avio_write(pb, buf, len); - break; - } - - buf += len; - } + return ret; + ret = ff_hevc_annexb2mp4(pb, buf_in, *size, filter_ps, ps_count); *size = avio_close_dyn_buf(pb, buf_out); -end: - free(start); - if (ps_count) - *ps_count = num_ps; return ret; } diff --git a/libavformat/hevc.h b/libavformat/hevc.h index f394342028..03c43bd471 100644 --- a/libavformat/hevc.h +++ b/libavformat/hevc.h @@ -71,8 +71,8 @@ int ff_hevc_annexb2mp4(AVIOContext *pb, const uint8_t *buf_in, * or to discard them (non-zero) * @param ps_count address of the variable where the number of discarded * parameter set NAL units shall be written, may be NULL - * @return 0 in case of success, a negative value corresponding to an AVERROR - * code in case of failure + * @return the amount (in bytes) of data written in case of success, a negative + * value corresponding to an AVERROR code in case of failure */ int ff_hevc_annexb2mp4_buf(const uint8_t *buf_in, uint8_t **buf_out, int *size, int filter_ps, int *ps_count); |