mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 06:46:38 +00:00
rtsp-client: Make configure_client_transport virtual
This patch makes configure_client_transport virtual. The functionality is needed to handle some weird clients sending multicast transport settings as url options. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702173
This commit is contained in:
parent
b5f8ff8232
commit
7e9df0e112
2 changed files with 11 additions and 3 deletions
|
@ -104,6 +104,8 @@ static void client_session_finalized (GstRTSPClient * client,
|
|||
GstRTSPSession * session);
|
||||
static void unlink_session_transports (GstRTSPClient * client,
|
||||
GstRTSPSession * session, GstRTSPSessionMedia * media);
|
||||
static gboolean default_configure_client_transport (GstRTSPClient * client,
|
||||
GstRTSPClientState * state, GstRTSPTransport * ct);
|
||||
static GstRTSPResult default_params_set (GstRTSPClient * client,
|
||||
GstRTSPClientState * state);
|
||||
static GstRTSPResult default_params_get (GstRTSPClient * client,
|
||||
|
@ -125,6 +127,7 @@ gst_rtsp_client_class_init (GstRTSPClientClass * klass)
|
|||
gobject_class->finalize = gst_rtsp_client_finalize;
|
||||
|
||||
klass->create_sdp = create_sdp;
|
||||
klass->configure_client_transport = default_configure_client_transport;
|
||||
klass->params_set = default_params_set;
|
||||
klass->params_get = default_params_get;
|
||||
|
||||
|
@ -1097,8 +1100,8 @@ handle_blocksize (GstRTSPMedia * media, GstRTSPStream * stream,
|
|||
}
|
||||
|
||||
static gboolean
|
||||
configure_client_transport (GstRTSPClient * client, GstRTSPClientState * state,
|
||||
GstRTSPTransport * ct)
|
||||
default_configure_client_transport (GstRTSPClient * client,
|
||||
GstRTSPClientState * state, GstRTSPTransport * ct)
|
||||
{
|
||||
GstRTSPClientPrivate *priv = client->priv;
|
||||
|
||||
|
@ -1219,6 +1222,7 @@ handle_setup_request (GstRTSPClient * client, GstRTSPClientState * state)
|
|||
GstRTSPMedia *media;
|
||||
GstRTSPStream *stream;
|
||||
GstRTSPState rtspstate;
|
||||
GstRTSPClientClass *klass;
|
||||
|
||||
uri = state->uri;
|
||||
|
||||
|
@ -1307,7 +1311,8 @@ handle_setup_request (GstRTSPClient * client, GstRTSPClientState * state)
|
|||
goto invalid_blocksize;
|
||||
|
||||
/* update the client transport */
|
||||
if (!configure_client_transport (client, state, ct))
|
||||
klass = GST_RTSP_CLIENT_GET_CLASS (client);
|
||||
if (!klass->configure_client_transport (client, state, ct))
|
||||
goto unsupported_client_transport;
|
||||
|
||||
/* set in the session media transport */
|
||||
|
|
|
@ -113,6 +113,9 @@ struct _GstRTSPClientClass {
|
|||
GObjectClass parent_class;
|
||||
|
||||
GstSDPMessage * (*create_sdp) (GstRTSPClient *client, GstRTSPMedia *media);
|
||||
gboolean (*configure_client_transport) (GstRTSPClient * client,
|
||||
GstRTSPClientState * state,
|
||||
GstRTSPTransport * ct);
|
||||
GstRTSPResult (*params_set) (GstRTSPClient *client, GstRTSPClientState *state);
|
||||
GstRTSPResult (*params_get) (GstRTSPClient *client, GstRTSPClientState *state);
|
||||
|
||||
|
|
Loading…
Reference in a new issue