]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/rtpdec_mpegts.c
Merge commit '9c9b0218e85fcd969308632f75af48a4ce229541'
[ffmpeg] / libavformat / rtpdec_mpegts.c
index 0c2b71745e74b0a25c45dc4ae101f5db95f73e73..5bf0f186dbd0776f0fce93203fe45c6a47e5ee34 100644 (file)
@@ -30,18 +30,12 @@ struct PayloadContext {
     uint8_t buf[RTP_MAX_PACKET_LENGTH];
 };
 
-static PayloadContext *mpegts_new_context(void)
-{
-    return av_mallocz(sizeof(PayloadContext));
-}
-
-static void mpegts_free_context(PayloadContext *data)
+static void mpegts_close_context(PayloadContext *data)
 {
     if (!data)
         return;
     if (data->ts)
         avpriv_mpegts_parse_close(data->ts);
-    av_free(data);
 }
 
 static av_cold int mpegts_init(AVFormatContext *ctx, int st_index,
@@ -66,9 +60,6 @@ static int mpegts_handle_packet(AVFormatContext *ctx, PayloadContext *data,
     // different ranges.
     *timestamp = RTP_NOTS_VALUE;
 
-    if (!data->ts)
-        return AVERROR(EINVAL);
-
     if (!buf) {
         if (data->read_buf_index >= data->read_buf_size)
             return AVERROR(EAGAIN);
@@ -100,9 +91,9 @@ static int mpegts_handle_packet(AVFormatContext *ctx, PayloadContext *data,
 
 RTPDynamicProtocolHandler ff_mpegts_dynamic_handler = {
     .codec_type        = AVMEDIA_TYPE_DATA,
+    .priv_data_size    = sizeof(PayloadContext),
     .parse_packet      = mpegts_handle_packet,
-    .alloc             = mpegts_new_context,
     .init              = mpegts_init,
-    .free              = mpegts_free_context,
+    .close             = mpegts_close_context,
     .static_payload_id = 33,
 };