/* GStreamer
- * Copyright (C) 2008 Wim Taymans <wim.taymans at gmail.com>
+ * Copyright (C) 2015 Samsung Electronics Hyunjun Ko <zzoon.ko@samsung.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
#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))
/* 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);
{
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");
}
{
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;
}
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);
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);
}
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);
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;
+}