X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Frtsp-server%2Frtsp-server-wfd.c;h=0fa2cd57d34572b1a8e57eeab59adbb2e31d800b;hb=348befdfd2e731a38c8638dc8ab96a7734c5692d;hp=8e14f974aef4db24b37b8aabe6ff4b75b792a282;hpb=77b4e7e7c2364587d49a03455c575ed8cf268ff6;p=platform%2Fupstream%2Fgst-rtsp-server.git diff --git a/gst/rtsp-server/rtsp-server-wfd.c b/gst/rtsp-server/rtsp-server-wfd.c index 8e14f97..0fa2cd5 100644 --- a/gst/rtsp-server/rtsp-server-wfd.c +++ b/gst/rtsp-server/rtsp-server-wfd.c @@ -1,5 +1,5 @@ /* GStreamer - * Copyright (C) 2008 Wim Taymans + * Copyright (C) 2015 Samsung Electronics Hyunjun Ko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -57,6 +57,7 @@ #include "rtsp-server-wfd.h" #include "rtsp-client-wfd.h" +#include "rtsp-client-ext.h" #define GST_RTSP_WFD_SERVER_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_RTSP_WFD_SERVER, GstRTSPWFDServerPrivate)) @@ -71,7 +72,9 @@ struct _GstRTSPWFDServerPrivate /* the clients that are connected */ GList *clients; + guint64 native_resolution; guint64 supported_resolution; + guint8 audio_codec; }; G_DEFINE_TYPE (GstRTSPWFDServer, gst_rtsp_wfd_server, GST_TYPE_RTSP_SERVER); @@ -117,8 +120,12 @@ gst_rtsp_wfd_server_init (GstRTSPWFDServer * server) { GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE (server); + g_return_if_fail (priv != NULL); + server->priv = priv; + server->priv->native_resolution = 0; server->priv->supported_resolution = 1; + server->priv->audio_codec = 2; GST_INFO_OBJECT (server, "New server is initialized"); } @@ -188,6 +195,8 @@ client_connected_wfd (GstRTSPServer * server, GstRTSPClient * client) { GST_INFO_OBJECT (server, "Client is connected"); + gst_rtsp_wfd_client_set_host_address (GST_RTSP_WFD_CLIENT_CAST (client), + gst_rtsp_server_get_address (server)); g_idle_add (_start_wfd, client); return; } @@ -200,12 +209,15 @@ create_client_wfd (GstRTSPServer * server) GstRTSPSessionPool *session_pool = NULL; GstRTSPMountPoints *mount_points = NULL; GstRTSPAuth *auth = NULL; - GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE(server); + GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE (server); + + g_return_val_if_fail (priv != NULL, NULL); GST_INFO_OBJECT (server, "New Client is being created"); /* a new client connected, create a session to handle the client. */ - client = gst_rtsp_wfd_client_new (); + //client = gst_rtsp_wfd_client_new(); + client = (GstRTSPWFDClient *) gst_rtsp_ext_client_new (); thread_pool = gst_rtsp_server_get_thread_pool (server); session_pool = gst_rtsp_server_get_session_pool (server); @@ -225,7 +237,12 @@ create_client_wfd (GstRTSPServer * server) gst_rtsp_client_set_thread_pool (GST_RTSP_CLIENT_CAST (client), thread_pool); gst_rtsp_wfd_client_set_video_supported_resolution (client, - priv->supported_resolution); + priv->supported_resolution); + + gst_rtsp_wfd_client_set_video_native_resolution (client, + priv->native_resolution); + + gst_rtsp_wfd_client_set_audio_codec (client, priv->audio_codec); GST_RTSP_WFD_SERVER_UNLOCK (server); @@ -265,12 +282,14 @@ gst_rtsp_wfd_server_trigger_request (GstRTSPServer * server, } GstRTSPResult -gst_rtsp_wfd_server_set_supported_reso(GstRTSPWFDServer *server, guint64 supported_reso) +gst_rtsp_wfd_server_set_supported_reso (GstRTSPWFDServer * server, + guint64 supported_reso) { GstRTSPResult res = GST_RTSP_OK; - GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE(server); + GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE (server); g_return_val_if_fail (GST_IS_RTSP_WFD_SERVER (server), GST_RTSP_ERROR); + g_return_val_if_fail (priv != NULL, GST_RTSP_ERROR); GST_RTSP_WFD_SERVER_LOCK (server); @@ -279,3 +298,39 @@ gst_rtsp_wfd_server_set_supported_reso(GstRTSPWFDServer *server, guint64 support GST_RTSP_WFD_SERVER_UNLOCK (server); return res; } + +GstRTSPResult +gst_rtsp_wfd_server_set_video_native_reso (GstRTSPWFDServer * server, + guint64 native_reso) +{ + GstRTSPResult res = GST_RTSP_OK; + GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE (server); + + g_return_val_if_fail (GST_IS_RTSP_WFD_SERVER (server), GST_RTSP_ERROR); + g_return_val_if_fail (priv != NULL, GST_RTSP_ERROR); + + GST_RTSP_WFD_SERVER_LOCK (server); + + priv->native_resolution = native_reso; + + GST_RTSP_WFD_SERVER_UNLOCK (server); + return res; +} + +GstRTSPResult +gst_rtsp_wfd_server_set_audio_codec (GstRTSPWFDServer * server, + guint8 audio_codec) +{ + GstRTSPResult res = GST_RTSP_OK; + GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE (server); + + g_return_val_if_fail (GST_IS_RTSP_WFD_SERVER (server), GST_RTSP_ERROR); + g_return_val_if_fail (priv != NULL, GST_RTSP_ERROR); + + GST_RTSP_WFD_SERVER_LOCK (server); + + priv->audio_codec = audio_codec; + + GST_RTSP_WFD_SERVER_UNLOCK (server); + return res; +}