X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Frtsp-server%2Frtsp-client.h;h=01f820826d67ecd731a7fe7d6d605a9658329209;hb=faf0b31cbbdeba09217027fb9133946a3a72cf05;hp=82f5eec91ea0848fefd00d9026c9848a3ba128a5;hpb=0b3644a21be28b5747acede5982b9d653dea26d9;p=platform%2Fupstream%2Fgstreamer.git diff --git a/gst/rtsp-server/rtsp-client.h b/gst/rtsp-server/rtsp-client.h index 82f5eec..01f8208 100644 --- a/gst/rtsp-server/rtsp-client.h +++ b/gst/rtsp-server/rtsp-client.h @@ -27,18 +27,12 @@ G_BEGIN_DECLS typedef struct _GstRTSPClient GstRTSPClient; typedef struct _GstRTSPClientClass GstRTSPClientClass; -typedef struct _GstRTSPClientState GstRTSPClientState; typedef struct _GstRTSPClientPrivate GstRTSPClientPrivate; -#include "rtsp-server.h" -#include "rtsp-media.h" +#include "rtsp-context.h" #include "rtsp-mount-points.h" -#include "rtsp-session-pool.h" -#include "rtsp-session-media.h" -#include "rtsp-auth.h" -#include "rtsp-thread-pool.h" -#include "rtsp-token.h" #include "rtsp-sdp.h" +#include "rtsp-auth.h" #define GST_TYPE_RTSP_CLIENT (gst_rtsp_client_get_type ()) #define GST_IS_RTSP_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_RTSP_CLIENT)) @@ -50,42 +44,6 @@ typedef struct _GstRTSPClientPrivate GstRTSPClientPrivate; #define GST_RTSP_CLIENT_CLASS_CAST(klass) ((GstRTSPClientClass*)(klass)) /** - * GstRTSPClientState: - * @server: the server - * @client: the client - * @request: the complete request - * @uri: the complete url parsed from @request - * @method: the parsed method of @uri - * @auth: the current auth object or NULL - * @token: authorisation token - * @session: the session, can be NULL - * @sessmedia: the session media for the url can be NULL - * @factory: the media factory for the url, can be NULL. - * @media: the media for the url can be NULL - * @stream: the stream for the url can be NULL - * @response: the response - * - * Information passed around containing the client state of a request. - */ -struct _GstRTSPClientState { - GstRTSPServer *server; - GstRTSPClient *client; - GstRTSPMessage *request; - GstRTSPUrl *uri; - GstRTSPMethod method; - GstRTSPAuth *auth; - GstRTSPToken *token; - GstRTSPSession *session; - GstRTSPSessionMedia *sessmedia; - GstRTSPMediaFactory *factory; - GstRTSPMedia *media; - GstRTSPStream *stream; - GstRTSPMessage *response; -}; - -GstRTSPClientState * gst_rtsp_client_state_get_current (void); - -/** * GstRTSPClientSendFunc: * @client: a #GstRTSPClient * @message: a #GstRTSPMessage @@ -110,18 +68,25 @@ typedef gboolean (*GstRTSPClientSendFunc) (GstRTSPClient *client, struct _GstRTSPClient { GObject parent; + /*< private >*/ GstRTSPClientPrivate *priv; + gpointer _gst_reserved[GST_PADDING]; }; /** * GstRTSPClientClass: * @create_sdp: called when the SDP needs to be created for media. + * @configure_client_media: called when the stream in media needs to be configured. + * The default implementation will configure the blocksize on the payloader when + * spcified in the request headers. * @configure_client_transport: called when the client transport needs to be * configured. * @params_set: set parameters. This function should also initialize the - * RTSP response(state->response) via a call to gst_rtsp_message_init_response() + * RTSP response(ctx->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() + * RTSP response(ctx->response) via a call to gst_rtsp_message_init_response() + * @tunnel_http_response: called when a response to the GET request is about to + * be sent for a tunneled connection. The response can be modified. Since 1.4 * * The client class structure. */ @@ -129,23 +94,33 @@ struct _GstRTSPClientClass { GObjectClass parent_class; GstSDPMessage * (*create_sdp) (GstRTSPClient *client, GstRTSPMedia *media); + gboolean (*configure_client_media) (GstRTSPClient * client, + GstRTSPMedia * media, GstRTSPStream * stream, + GstRTSPContext * ctx); gboolean (*configure_client_transport) (GstRTSPClient * client, - GstRTSPClientState * state, + GstRTSPContext * ctx, GstRTSPTransport * ct); - GstRTSPResult (*params_set) (GstRTSPClient *client, GstRTSPClientState *state); - GstRTSPResult (*params_get) (GstRTSPClient *client, GstRTSPClientState *state); + GstRTSPResult (*params_set) (GstRTSPClient *client, GstRTSPContext *ctx); + GstRTSPResult (*params_get) (GstRTSPClient *client, GstRTSPContext *ctx); + gchar * (*make_path_from_uri) (GstRTSPClient *client, const GstRTSPUrl *uri); /* signals */ void (*closed) (GstRTSPClient *client); void (*new_session) (GstRTSPClient *client, GstRTSPSession *session); - void (*options_request) (GstRTSPClient *client, GstRTSPClientState *state); - void (*describe_request) (GstRTSPClient *client, GstRTSPClientState *state); - void (*setup_request) (GstRTSPClient *client, GstRTSPClientState *state); - void (*play_request) (GstRTSPClient *client, GstRTSPClientState *state); - void (*pause_request) (GstRTSPClient *client, GstRTSPClientState *state); - void (*teardown_request) (GstRTSPClient *client, GstRTSPClientState *state); - void (*set_parameter_request) (GstRTSPClient *client, GstRTSPClientState *state); - void (*get_parameter_request) (GstRTSPClient *client, GstRTSPClientState *state); + void (*options_request) (GstRTSPClient *client, GstRTSPContext *ctx); + void (*describe_request) (GstRTSPClient *client, GstRTSPContext *ctx); + void (*setup_request) (GstRTSPClient *client, GstRTSPContext *ctx); + void (*play_request) (GstRTSPClient *client, GstRTSPContext *ctx); + void (*pause_request) (GstRTSPClient *client, GstRTSPContext *ctx); + void (*teardown_request) (GstRTSPClient *client, GstRTSPContext *ctx); + void (*set_parameter_request) (GstRTSPClient *client, GstRTSPContext *ctx); + void (*get_parameter_request) (GstRTSPClient *client, GstRTSPContext *ctx); + void (*handle_response) (GstRTSPClient *client, GstRTSPContext *ctx); + + void (*tunnel_http_response) (GstRTSPClient * client, GstRTSPMessage * request, + GstRTSPMessage * response); + /*< private >*/ + gpointer _gst_reserved[GST_PADDING_LARGE-1]; }; GType gst_rtsp_client_get_type (void); @@ -166,10 +141,6 @@ GstRTSPAuth * gst_rtsp_client_get_auth (GstRTSPClient *client); void gst_rtsp_client_set_thread_pool (GstRTSPClient *client, GstRTSPThreadPool *pool); GstRTSPThreadPool * gst_rtsp_client_get_thread_pool (GstRTSPClient *client); -void gst_rtsp_client_set_use_client_settings (GstRTSPClient * client, - gboolean use_client_settings); -gboolean gst_rtsp_client_get_use_client_settings (GstRTSPClient * client); - gboolean gst_rtsp_client_set_connection (GstRTSPClient *client, GstRTSPConnection *conn); GstRTSPConnection * gst_rtsp_client_get_connection (GstRTSPClient *client); @@ -183,9 +154,9 @@ void gst_rtsp_client_set_send_func (GstRTSPClient *client, GstRTSPResult gst_rtsp_client_handle_message (GstRTSPClient *client, GstRTSPMessage *message); -GstRTSPResult gst_rtsp_client_send_request (GstRTSPClient * client, +GstRTSPResult gst_rtsp_client_send_message (GstRTSPClient * client, GstRTSPSession *session, - GstRTSPMessage *request); + GstRTSPMessage *message); /** * GstRTSPClientSessionFilterFunc: * @client: a #GstRTSPClient object @@ -201,7 +172,7 @@ GstRTSPResult gst_rtsp_client_send_request (GstRTSPClient * client, * A return value of #GST_RTSP_FILTER_KEEP will leave @sess untouched in * @client. * - * A value of GST_RTSP_FILTER_REF will add @sess to the result #GList of + * A value of #GST_RTSP_FILTER_REF will add @sess to the result #GList of * gst_rtsp_client_session_filter(). * * Returns: a #GstRTSPFilterResult.