mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-20 13:06:23 +00:00
rtsp-client: Make param_set and param_get virtual
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702072
This commit is contained in:
parent
6151072a2e
commit
b5f8ff8232
2 changed files with 39 additions and 2 deletions
|
@ -104,6 +104,10 @@ static void client_session_finalized (GstRTSPClient * client,
|
|||
GstRTSPSession * session);
|
||||
static void unlink_session_transports (GstRTSPClient * client,
|
||||
GstRTSPSession * session, GstRTSPSessionMedia * media);
|
||||
static GstRTSPResult default_params_set (GstRTSPClient * client,
|
||||
GstRTSPClientState * state);
|
||||
static GstRTSPResult default_params_get (GstRTSPClient * client,
|
||||
GstRTSPClientState * state);
|
||||
|
||||
G_DEFINE_TYPE (GstRTSPClient, gst_rtsp_client, G_TYPE_OBJECT);
|
||||
|
||||
|
@ -121,6 +125,8 @@ gst_rtsp_client_class_init (GstRTSPClientClass * klass)
|
|||
gobject_class->finalize = gst_rtsp_client_finalize;
|
||||
|
||||
klass->create_sdp = create_sdp;
|
||||
klass->params_set = default_params_set;
|
||||
klass->params_get = default_params_get;
|
||||
|
||||
g_object_class_install_property (gobject_class, PROP_SESSION_POOL,
|
||||
g_param_spec_object ("session-pool", "Session Pool",
|
||||
|
@ -706,6 +712,26 @@ not_found:
|
|||
}
|
||||
}
|
||||
|
||||
static GstRTSPResult
|
||||
default_params_set (GstRTSPClient * client, GstRTSPClientState * state)
|
||||
{
|
||||
GstRTSPResult res;
|
||||
|
||||
res = gst_rtsp_params_set (client, state);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static GstRTSPResult
|
||||
default_params_get (GstRTSPClient * client, GstRTSPClientState * state)
|
||||
{
|
||||
GstRTSPResult res;
|
||||
|
||||
res = gst_rtsp_params_get (client, state);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
handle_get_param_request (GstRTSPClient * client, GstRTSPClientState * state)
|
||||
{
|
||||
|
@ -722,7 +748,7 @@ handle_get_param_request (GstRTSPClient * client, GstRTSPClientState * state)
|
|||
send_generic_response (client, GST_RTSP_STS_OK, state);
|
||||
} else {
|
||||
/* there is a body, handle the params */
|
||||
res = gst_rtsp_params_get (client, state);
|
||||
res = GST_RTSP_CLIENT_GET_CLASS (client)->params_get (client, state);
|
||||
if (res != GST_RTSP_OK)
|
||||
goto bad_request;
|
||||
|
||||
|
@ -759,7 +785,7 @@ handle_set_param_request (GstRTSPClient * client, GstRTSPClientState * state)
|
|||
send_generic_response (client, GST_RTSP_STS_OK, state);
|
||||
} else {
|
||||
/* there is a body, handle the params */
|
||||
res = gst_rtsp_params_set (client, state);
|
||||
res = GST_RTSP_CLIENT_GET_CLASS (client)->params_set (client, state);
|
||||
if (res != GST_RTSP_OK)
|
||||
goto bad_request;
|
||||
|
||||
|
|
|
@ -100,10 +100,21 @@ struct _GstRTSPClient {
|
|||
GstRTSPClientPrivate *priv;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstRTSPClientClass:
|
||||
* @params_set: set parameters. This function should also initialize the
|
||||
* RTSP response(state->response) via a call to gst_rtsp_message_init_response()
|
||||
* @params_get: get parameters. This function should also initialize the
|
||||
* RTSP response(state->response) via a call to gst_rtsp_message_init_response()
|
||||
*
|
||||
* The client class structure.
|
||||
*/
|
||||
struct _GstRTSPClientClass {
|
||||
GObjectClass parent_class;
|
||||
|
||||
GstSDPMessage * (*create_sdp) (GstRTSPClient *client, GstRTSPMedia *media);
|
||||
GstRTSPResult (*params_set) (GstRTSPClient *client, GstRTSPClientState *state);
|
||||
GstRTSPResult (*params_get) (GstRTSPClient *client, GstRTSPClientState *state);
|
||||
|
||||
/* signals */
|
||||
void (*closed) (GstRTSPClient *client);
|
||||
|
|
Loading…
Reference in a new issue