X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Frtsp-server%2Frtsp-client.h;h=18bb522109ac8ddae371cd4687d39876f321f14c;hb=7e9df0e112c0074bda4305294a623efdcd54979c;hp=dc2c79c0880d804ee95e380398e2781206f44c15;hpb=6959ebd8e8d6a6b2c05aa3b4da8becf1599264d3;p=platform%2Fupstream%2Fgstreamer.git diff --git a/gst/rtsp-server/rtsp-client.h b/gst/rtsp-server/rtsp-client.h index dc2c79c..18bb522 100644 --- a/gst/rtsp-server/rtsp-client.h +++ b/gst/rtsp-server/rtsp-client.h @@ -13,8 +13,8 @@ * * 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., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #include @@ -28,12 +28,14 @@ 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-media-mapping.h" +#include "rtsp-mount-points.h" #include "rtsp-session-pool.h" +#include "rtsp-session-media.h" #include "rtsp-auth.h" +#include "rtsp-sdp.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)) @@ -52,12 +54,13 @@ typedef struct _GstRTSPClientState GstRTSPClientState; * @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 session media 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{ +struct _GstRTSPClientState { GstRTSPMessage *request; GstRTSPUrl *uri; GstRTSPMethod method; @@ -65,74 +68,104 @@ struct _GstRTSPClientState{ GstRTSPSessionMedia *sessmedia; GstRTSPMediaFactory *factory; GstRTSPMedia *media; + GstRTSPStream *stream; GstRTSPMessage *response; }; /** - * GstRTSPClient: + * GstRTSPClientSendFunc: + * @client: a #GstRTSPClient + * @message: a #GstRTSPMessage + * @close: close the connection + * @user_data: user data when registering the callback * - * @connection: the connection object handling the client request. - * @watch: watch for the connection - * @watchid: id of the watch - * @ip: ip address used by the client to connect to us - * @session_pool: handle to the session pool used by the client. - * @media_mapping: handle to the media mapping used by the client. - * @uri: cached uri - * @media: cached media - * @streams: a list of streams using @connection. - * @sessions: a list of sessions managed by @connection. + * This callback is called when @client wants to send @message. When @close is + * %TRUE, the connection should be closed when the message has been sent. + * + * Returns: %TRUE on success. + */ +typedef gboolean (*GstRTSPClientSendFunc) (GstRTSPClient *client, + GstRTSPMessage *message, + gboolean close, + gpointer user_data); + +/** + * GstRTSPClient: * * The client structure. */ struct _GstRTSPClient { GObject parent; - GstRTSPConnection *connection; - GstRTSPWatch *watch; - guint watchid; - gchar *server_ip; - gboolean is_ipv6; - - GstRTSPServer *server; - GstRTSPSessionPool *session_pool; - GstRTSPMediaMapping *media_mapping; - GstRTSPAuth *auth; - - GstRTSPUrl *uri; - GstRTSPMedia *media; - - GList *streams; - GList *sessions; + 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); + gboolean (*configure_client_transport) (GstRTSPClient * client, + GstRTSPClientState * state, + GstRTSPTransport * ct); + GstRTSPResult (*params_set) (GstRTSPClient *client, GstRTSPClientState *state); + GstRTSPResult (*params_get) (GstRTSPClient *client, GstRTSPClientState *state); + /* signals */ - void (*closed) (GstRTSPClient *client); + 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); }; GType gst_rtsp_client_get_type (void); GstRTSPClient * gst_rtsp_client_new (void); -void gst_rtsp_client_set_server (GstRTSPClient * client, GstRTSPServer * server); -GstRTSPServer * gst_rtsp_client_get_server (GstRTSPClient * client); - void gst_rtsp_client_set_session_pool (GstRTSPClient *client, GstRTSPSessionPool *pool); GstRTSPSessionPool * gst_rtsp_client_get_session_pool (GstRTSPClient *client); -void gst_rtsp_client_set_media_mapping (GstRTSPClient *client, - GstRTSPMediaMapping *mapping); -GstRTSPMediaMapping * gst_rtsp_client_get_media_mapping (GstRTSPClient *client); +void gst_rtsp_client_set_mount_points (GstRTSPClient *client, + GstRTSPMountPoints *mounts); +GstRTSPMountPoints * gst_rtsp_client_get_mount_points (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); void gst_rtsp_client_set_auth (GstRTSPClient *client, GstRTSPAuth *auth); GstRTSPAuth * gst_rtsp_client_get_auth (GstRTSPClient *client); +GstRTSPUrl * gst_rtsp_client_get_uri (GstRTSPClient *client); + +gboolean gst_rtsp_client_set_connection (GstRTSPClient *client, GstRTSPConnection *conn); +GstRTSPConnection * gst_rtsp_client_get_connection (GstRTSPClient *client); + +void gst_rtsp_client_set_send_func (GstRTSPClient *client, + GstRTSPClientSendFunc func, + gpointer user_data, + GDestroyNotify notify); +GstRTSPResult gst_rtsp_client_handle_message (GstRTSPClient *client, + GstRTSPMessage *message); + +guint gst_rtsp_client_attach (GstRTSPClient *client, + GMainContext *context); -gboolean gst_rtsp_client_accept (GstRTSPClient *client, - GIOChannel *channel); G_END_DECLS