tsmux: Fix default new_stream_func
authorJan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>
Tue, 10 Oct 2023 08:22:44 +0000 (10:22 +0200)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 20 Oct 2023 08:53:19 +0000 (08:53 +0000)
`tsmux_stream_new` is missing the `user_data` parameter and shouldn't be
cast to `TsMuxNewStreamFunc`.

Prefer not casting at all to make sure we don't miss such an issue.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5516>

subprojects/gst-plugins-bad/gst/mpegtsmux/gstatscmux.c
subprojects/gst-plugins-bad/gst/mpegtsmux/tsmux/tsmux.c
subprojects/gst-plugins-bad/gst/mpegtsmux/tsmux/tsmux.h

index 88ced1f..da2e4b5 100644 (file)
@@ -61,7 +61,7 @@ static GstStaticPadTemplate gst_atsc_mux_sink_factory =
 
 static void
 gst_atsc_mux_stream_get_es_descrs (TsMuxStream * stream,
-    GstMpegtsPMTStream * pmt_stream, GstBaseTsMux * mpegtsmux)
+    GstMpegtsPMTStream * pmt_stream, gpointer user_data)
 {
   GstMpegtsDescriptor *descriptor;
 
@@ -130,8 +130,8 @@ gst_atsc_mux_stream_get_es_descrs (TsMuxStream * stream,
 }
 
 static TsMuxStream *
-gst_atsc_mux_create_new_stream (guint16 new_pid,
-    TsMuxStreamType stream_type, GstBaseTsMux * mpegtsmux)
+gst_atsc_mux_create_new_stream (guint16 new_pid, TsMuxStreamType stream_type,
+    gpointer user_data)
 {
   TsMuxStream *ret = tsmux_stream_new (new_pid, stream_type);
 
@@ -146,7 +146,7 @@ gst_atsc_mux_create_new_stream (guint16 new_pid,
 
   tsmux_stream_set_get_es_descriptors_func (ret,
       (TsMuxStreamGetESDescriptorsFunc) gst_atsc_mux_stream_get_es_descrs,
-      mpegtsmux);
+      user_data);
 
   return ret;
 }
@@ -174,8 +174,7 @@ gst_atsc_mux_create_ts_mux (GstBaseTsMux * mpegtsmux)
   section = gst_mpegts_section_from_atsc_rrt (rrt);
   tsmux_add_mpegts_si_section (ret, section);
 
-  tsmux_set_new_stream_func (ret,
-      (TsMuxNewStreamFunc) gst_atsc_mux_create_new_stream, mpegtsmux);
+  tsmux_set_new_stream_func (ret, gst_atsc_mux_create_new_stream, mpegtsmux);
 
   return ret;
 }
index 6ab7170..143145c 100644 (file)
@@ -116,6 +116,12 @@ tsmux_section_free (TsMuxSection * section)
   g_slice_free (TsMuxSection, section);
 }
 
+static TsMuxStream *
+tsmux_new_stream_default (guint16 pid, guint stream_type, gpointer user_data)
+{
+  return tsmux_stream_new (pid, stream_type);
+}
+
 /**
  * tsmux_new:
  *
@@ -150,7 +156,7 @@ tsmux_new (void)
   mux->si_sections = g_hash_table_new_full (g_direct_hash, g_direct_equal,
       NULL, (GDestroyNotify) tsmux_section_free);
 
-  mux->new_stream_func = (TsMuxNewStreamFunc) tsmux_stream_new;
+  mux->new_stream_func = tsmux_new_stream_default;
   mux->new_stream_data = NULL;
 
   mux->first_pcr_ts = G_MININT64;
index 18490fc..5f0334a 100644 (file)
@@ -86,7 +86,7 @@ typedef struct TsMux TsMux;
 
 typedef gboolean (*TsMuxWriteFunc) (GstBuffer * buf, void *user_data, gint64 new_pcr);
 typedef void (*TsMuxAllocFunc) (GstBuffer ** buf, void *user_data);
-typedef TsMuxStream * (*TsMuxNewStreamFunc) (guint16 new_pid, guint stream_type, void *user_data);
+typedef TsMuxStream * (*TsMuxNewStreamFunc) (guint16 new_pid, guint stream_type, gpointer user_data);
 
 struct TsMuxSection {
   TsMuxPacketInfo pi;