]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/rtpdec_mpegts.c
avisynth: Simplify shared library name construction
[ffmpeg] / libavformat / rtpdec_mpegts.c
index e2c8977f7d6d7e05113c2f5fd5686de072ca4abb..0fb0a0d3afdbff0a6ee696efd0f4e393c3fbb6fb 100644 (file)
@@ -19,6 +19,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include "libavutil/attributes.h"
 #include "mpegts.h"
 #include "rtpdec_formats.h"
 
@@ -29,21 +30,16 @@ 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)
         ff_mpegts_parse_close(data->ts);
-    av_free(data);
 }
 
-static int mpegts_init(AVFormatContext *ctx, int st_index, PayloadContext *data)
+static av_cold int mpegts_init(AVFormatContext *ctx, int st_index,
+                               PayloadContext *data)
 {
     data->ts = ff_mpegts_parse_open(ctx);
     if (!data->ts)
@@ -64,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);
@@ -98,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,
 };