]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/rtpdec_ac3.c
Merge commit '12b3459979f5ea6481660cd2c99a0381e2b5ba37'
[ffmpeg] / libavformat / rtpdec_ac3.c
index b9e6e228fb3ab3d530c4d9fade4f1652eaceee2f..48b2d9cf98b4bb40b6d48454bb631c6ff4e16f61 100644 (file)
@@ -20,6 +20,7 @@
  */
 
 #include "avformat.h"
+#include "avio_internal.h"
 #include "rtpdec_formats.h"
 
 #define RTP_AC3_PAYLOAD_HEADER_SIZE 2
@@ -31,19 +32,9 @@ struct PayloadContext {
     AVIOContext *fragment;
 };
 
-static void free_fragment(PayloadContext *data)
+static void ac3_close_context(PayloadContext *data)
 {
-    if (data->fragment) {
-        uint8_t *p;
-        avio_close_dyn_buf(data->fragment, &p);
-        av_free(p);
-        data->fragment = NULL;
-    }
-}
-
-static void ac3_free_context(PayloadContext *data)
-{
-    free_fragment(data);
+    ffio_free_dyn_buf(&data->fragment);
 }
 
 static int ac3_handle_packet(AVFormatContext *ctx, PayloadContext *data,
@@ -82,7 +73,7 @@ static int ac3_handle_packet(AVFormatContext *ctx, PayloadContext *data,
 
     case 1:
     case 2: /* First fragment */
-        free_fragment(data);
+        ffio_free_dyn_buf(&data->fragment);
 
         data->last_frame = 1;
         data->nr_frames = nr_frames;
@@ -102,7 +93,7 @@ static int ac3_handle_packet(AVFormatContext *ctx, PayloadContext *data,
         }
         if (nr_frames != data->nr_frames ||
             data->timestamp != *timestamp) {
-            free_fragment(data);
+            ffio_free_dyn_buf(&data->fragment);
             av_log(ctx, AV_LOG_ERROR, "Invalid packet received\n");
             return AVERROR_INVALIDDATA;
         }
@@ -115,7 +106,7 @@ static int ac3_handle_packet(AVFormatContext *ctx, PayloadContext *data,
         return AVERROR(EAGAIN);
 
     if (data->last_frame != data->nr_frames) {
-        free_fragment(data);
+        ffio_free_dyn_buf(&data->fragment);
         av_log(ctx, AV_LOG_ERROR, "Missed %d packets\n",
                data->nr_frames - data->last_frame);
         return AVERROR_INVALIDDATA;
@@ -137,6 +128,6 @@ RTPDynamicProtocolHandler ff_ac3_dynamic_handler = {
     .codec_id           = AV_CODEC_ID_AC3,
     .need_parsing       = AVSTREAM_PARSE_FULL,
     .priv_data_size     = sizeof(PayloadContext),
-    .free               = ac3_free_context,
+    .close              = ac3_close_context,
     .parse_packet       = ac3_handle_packet,
 };