[libav-devel] [PATCH 1/2] lavf: simplify ff_hevc_annexb2mp4_buf

2014-03-10 Thread Tim Walker
Use ff_hevc_annexb2mp4 instead of duplicating
its functionality, and update the documentation
to match the new behavior.
---

Suggested by Janne on IRC.

 libavformat/hevc.c | 43 +++
 libavformat/hevc.h |  4 ++--
 2 files changed, 5 insertions(+), 42 deletions(-)

diff --git a/libavformat/hevc.c b/libavformat/hevc.c
index dc45fbf..e3be20c 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 f394342..03c43bd 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);
-- 
1.8.3.4 (Apple Git-47)

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 1/2] lavf: simplify ff_hevc_annexb2mp4_buf

2014-03-10 Thread Janne Grunau
On 2014-03-10 17:03:13 +0100, Tim Walker wrote:
 Use ff_hevc_annexb2mp4 instead of duplicating
 its functionality, and update the documentation
 to match the new behavior.
 ---
 
 Suggested by Janne on IRC.
 
  libavformat/hevc.c | 43 +++
  libavformat/hevc.h |  4 ++--
  2 files changed, 5 insertions(+), 42 deletions(-)
 
 diff --git a/libavformat/hevc.c b/libavformat/hevc.c
 index dc45fbf..e3be20c 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 f394342..03c43bd 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);
 -- 

ok

Janne
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel