webrtc lib: Make the transceiver struct private
authorOlivier CrĂȘte <olivier.crete@collabora.com>
Wed, 21 Apr 2021 20:00:34 +0000 (16:00 -0400)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Mon, 21 Jun 2021 20:53:09 +0000 (20:53 +0000)
This will prevent any unsafe access.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241>

ext/webrtc/webrtctransceiver.h
gst-libs/gst/webrtc/rtptransceiver.c
gst-libs/gst/webrtc/rtptransceiver.h
gst-libs/gst/webrtc/webrtc-priv.h [new file with mode: 0644]

index 3a2115f..2e2abaf 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "fwd.h"
 #include <gst/webrtc/rtptransceiver.h>
+#include "gst/webrtc/webrtc-priv.h"
 #include "transportstream.h"
 
 G_BEGIN_DECLS
index 04f778e..8990206 100644 (file)
@@ -32,6 +32,8 @@
 
 #include "rtptransceiver.h"
 
+#include "webrtc-priv.h"
+
 #define GST_CAT_DEFAULT gst_webrtc_rtp_transceiver_debug
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
index a14dc4a..569a39a 100644 (file)
@@ -22,8 +22,6 @@
 
 #include <gst/gst.h>
 #include <gst/webrtc/webrtc_fwd.h>
-#include <gst/webrtc/rtpsender.h>
-#include <gst/webrtc/rtpreceiver.h>
 
 G_BEGIN_DECLS
 
@@ -36,65 +34,6 @@ GType gst_webrtc_rtp_transceiver_get_type(void);
 #define GST_IS_WEBRTC_RTP_TRANSCEIVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_WEBRTC_RTP_TRANSCEIVER))
 #define GST_WEBRTC_RTP_TRANSCEIVER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_WEBRTC_RTP_TRANSCEIVER,GstWebRTCRTPTransceiverClass))
 
-/**
- * GstWebRTCRTPTransceiver:
- * @mline: the mline number this transceiver corresponds to
- * @mid: The media ID of the m-line associated with this
- * transceiver. This association is established, when possible,
- * whenever either a local or remote description is applied. This
- * field is NULL if neither a local or remote description has been
- * applied, or if its associated m-line is rejected by either a remote
- * offer or any answer.
- * @stopped: Indicates whether or not sending and receiving using the paired
- * #GstWebRTCRTPSender and #GstWebRTCRTPReceiver has been permanently disabled,
- * either due to SDP offer/answer
- * @sender: The #GstWebRTCRTPSender object responsible sending  data to the
- * remote peer
- * @receiver: The #GstWebRTCRTPReceiver object responsible for receiver data from
- * the remote peer.
- * @direction: The transceiver's desired direction.
- * @current_direction: The transceiver's current direction (read-only)
- * @codec_preferences: A caps representing the codec preferences (read-only)
- * @kind: Type of media (Since: 1.20)
- *
- * Mostly matches the WebRTC RTCRtpTransceiver interface.
- *
- * Since: 1.16
- */
-/**
- * GstWebRTCRTPTransceiver.kind:
- *
- * Type of media
- *
- * Since: 1.20
- */
-struct _GstWebRTCRTPTransceiver
-{
-  GstObject                         parent;
-  guint                             mline;
-  gchar                            *mid;
-  gboolean                          stopped;
-
-  GstWebRTCRTPSender               *sender;
-  GstWebRTCRTPReceiver             *receiver;
-
-  GstWebRTCRTPTransceiverDirection  direction;
-  GstWebRTCRTPTransceiverDirection  current_direction;
-
-  GstCaps                          *codec_preferences;
-  GstWebRTCKind                     kind;
-
-  gpointer                          _padding[GST_PADDING];
-};
-
-struct _GstWebRTCRTPTransceiverClass
-{
-  GstObjectClass        parent_class;
-
-  /* FIXME; reset */
-  gpointer              _padding[GST_PADDING];
-};
-
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstWebRTCRTPTransceiver, gst_object_unref)
 
 G_END_DECLS
diff --git a/gst-libs/gst/webrtc/webrtc-priv.h b/gst-libs/gst/webrtc/webrtc-priv.h
new file mode 100644 (file)
index 0000000..6f2d3ea
--- /dev/null
@@ -0,0 +1,91 @@
+/* GStreamer
+ * Copyright (C) 2017 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_WEBRTC_PRIV_H__
+#define __GST_WEBRTC_PRIV_H__
+
+#include <gst/gst.h>
+#include <gst/webrtc/webrtc_fwd.h>
+#include <gst/webrtc/rtpsender.h>
+#include <gst/webrtc/rtpreceiver.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GstWebRTCRTPTransceiver:
+ * @mline: the mline number this transceiver corresponds to
+ * @mid: The media ID of the m-line associated with this
+ * transceiver. This association is established, when possible,
+ * whenever either a local or remote description is applied. This
+ * field is NULL if neither a local or remote description has been
+ * applied, or if its associated m-line is rejected by either a remote
+ * offer or any answer.
+ * @stopped: Indicates whether or not sending and receiving using the paired
+ * #GstWebRTCRTPSender and #GstWebRTCRTPReceiver has been permanently disabled,
+ * either due to SDP offer/answer
+ * @sender: The #GstWebRTCRTPSender object responsible sending  data to the
+ * remote peer
+ * @receiver: The #GstWebRTCRTPReceiver object responsible for receiver data from
+ * the remote peer.
+ * @direction: The transceiver's desired direction.
+ * @current_direction: The transceiver's current direction (read-only)
+ * @codec_preferences: A caps representing the codec preferences (read-only)
+ * @kind: Type of media (Since: 1.20)
+ *
+ * Mostly matches the WebRTC RTCRtpTransceiver interface.
+ *
+ * Since: 1.16
+ */
+/**
+ * GstWebRTCRTPTransceiver.kind:
+ *
+ * Type of media
+ *
+ * Since: 1.20
+ */
+struct _GstWebRTCRTPTransceiver
+{
+  GstObject                         parent;
+  guint                             mline;
+  gchar                            *mid;
+  gboolean                          stopped;
+
+  GstWebRTCRTPSender               *sender;
+  GstWebRTCRTPReceiver             *receiver;
+
+  GstWebRTCRTPTransceiverDirection  direction;
+  GstWebRTCRTPTransceiverDirection  current_direction;
+
+  GstCaps                          *codec_preferences;
+  GstWebRTCKind                     kind;
+
+  gpointer                          _padding[GST_PADDING];
+};
+
+struct _GstWebRTCRTPTransceiverClass
+{
+  GstObjectClass        parent_class;
+
+  /* FIXME; reset */
+  gpointer              _padding[GST_PADDING];
+};
+
+G_END_DECLS
+
+#endif /* __GST_WEBRTC_PRIV_H__ */