diff mbox series

[FFmpeg-devel,07/12] avformat/av1, avc, hevc: Remove av_freep()

Message ID 20200124224833.17579-1-andreas.rheinhardt@gmail.com
State Accepted
Headers show
Series [FFmpeg-devel,1/6] avformat/matroskaenc: Check for reformatting errors
Related show

Checks

Context Check Description
andriy/ffmpeg-patchwork pending
andriy/ffmpeg-patchwork success Applied patch
andriy/ffmpeg-patchwork success Configure finished
andriy/ffmpeg-patchwork success Make finished
andriy/ffmpeg-patchwork success Make fate finished

Commit Message

Andreas Rheinhardt Jan. 24, 2020, 10:48 p.m. UTC
ff_av1_filter_obus_buf() and ff_avc_parse_nal_units_buf() both have a
pointer-to-pointer parameter which they use to pass a newly allocated
buffer to the caller. And both functions freed what this pointer points to
before overwriting it. But no caller of these functions used this feature,
but some had to initialize the pointer just because of this. So remove
it and update the documentation of ff_av1_filter_obus_buf() wrt this fact.

ff_hevc_annexb2mp4_buf in contrast did not free the pointer. This has been
documented, too.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
---
 libavformat/av1.c  | 1 -
 libavformat/av1.h  | 1 +
 libavformat/avc.c  | 3 +--
 libavformat/hevc.h | 1 +
 4 files changed, 3 insertions(+), 3 deletions(-)

Comments

James Almer Jan. 26, 2020, 3:53 p.m. UTC | #1
On 1/24/2020 7:48 PM, Andreas Rheinhardt wrote:
> ff_av1_filter_obus_buf() and ff_avc_parse_nal_units_buf() both have a
> pointer-to-pointer parameter which they use to pass a newly allocated
> buffer to the caller. And both functions freed what this pointer points to
> before overwriting it. But no caller of these functions used this feature,
> but some had to initialize the pointer just because of this. So remove
> it and update the documentation of ff_av1_filter_obus_buf() wrt this fact.
> 
> ff_hevc_annexb2mp4_buf in contrast did not free the pointer. This has been
> documented, too.

Pushed patches 1 to 7. Thanks.
diff mbox series

Patch

diff --git a/libavformat/av1.c b/libavformat/av1.c
index 80c049f62f..07b399efcc 100644
--- a/libavformat/av1.c
+++ b/libavformat/av1.c
@@ -82,7 +82,6 @@  int ff_av1_filter_obus_buf(const uint8_t *in, uint8_t **out, int *size)
 
     memset(buf + len, 0, AV_INPUT_BUFFER_PADDING_SIZE);
 
-    av_freep(out);
     *out  = buf;
     *size = len;
 
diff --git a/libavformat/av1.h b/libavformat/av1.h
index acba12612c..52d0814e86 100644
--- a/libavformat/av1.h
+++ b/libavformat/av1.h
@@ -68,6 +68,7 @@  int ff_av1_filter_obus(AVIOContext *pb, const uint8_t *buf, int size);
  *
  * @return 0 in case of success, a negative AVERROR code in case of failure.
  *         On failure, out and size are unchanged
+ * @note *out will be treated as unintialized on input and will not be freed.
  */
 int ff_av1_filter_obus_buf(const uint8_t *in, uint8_t **out, int *size);
 
diff --git a/libavformat/avc.c b/libavformat/avc.c
index e4e82e1864..cd15ac3cdb 100644
--- a/libavformat/avc.c
+++ b/libavformat/avc.c
@@ -101,7 +101,6 @@  int ff_avc_parse_nal_units_buf(const uint8_t *buf_in, uint8_t **buf, int *size)
 
     ff_avc_parse_nal_units(pb, buf_in, *size);
 
-    av_freep(buf);
     *size = avio_close_dyn_buf(pb, buf);
     return 0;
 }
@@ -109,7 +108,7 @@  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)
 {
     AVIOContext *sps_pb = NULL, *pps_pb = NULL, *sps_ext_pb = NULL;
-    uint8_t *buf = NULL, *end, *start = NULL;
+    uint8_t *buf, *end, *start;
     uint8_t *sps, *pps, *sps_ext;
     uint32_t sps_size = 0, pps_size = 0, sps_ext_size = 0;
     int ret, nb_sps = 0, nb_pps = 0, nb_sps_ext = 0;
diff --git a/libavformat/hevc.h b/libavformat/hevc.h
index bb144397c0..0f56325c1c 100644
--- a/libavformat/hevc.h
+++ b/libavformat/hevc.h
@@ -73,6 +73,7 @@  int ff_hevc_annexb2mp4(AVIOContext *pb, const uint8_t *buf_in,
  *        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
+ * @note *buf_out will be treated as uninitialized on input and won't be freed.
  */
 int ff_hevc_annexb2mp4_buf(const uint8_t *buf_in, uint8_t **buf_out,
                            int *size, int filter_ps, int *ps_count);