#define TEST_MOUNT_POINT "/wfd1.0/streamid=0"
#define WFD_REQUIREMENT "org.wfa.wfd1.0"
+#define SWITCH_TO_UDP 0
+#define SWITCH_TO_TCP 1
+
static const GDBusMethodInfo scmirroring_server_method_info_method = {
-1,
return SCMIRRORING_ERROR_INVALID_OPERATION;
}
+static int __miracast_server_switch_transport(MiracastServer *server_obj, gint transport)
+{
+ GstRTSPWFDServer *server = NULL;
+ server = (GstRTSPWFDServer *)server_obj->server;
+ if (server == NULL) {
+ scmirroring_error("No server object");
+ goto failed;
+ }
+
+ switch (transport) {
+ case SWITCH_TO_UDP:
+ if (gst_rtsp_wfd_server_switch_to_udp(server) != ERROR_NONE) {
+ scmirroring_error("Failed switch transport to UDP in server object");
+ goto failed;
+ }
+ break;
+ case SWITCH_TO_TCP:
+ if (gst_rtsp_wfd_server_switch_to_tcp(server) != ERROR_NONE) {
+ scmirroring_error("Failed switch transport to TCP in server object");
+ goto failed;
+ }
+ break;
+ default:
+ return SCMIRRORING_ERROR_INVALID_PARAMETER;
+ }
+
+ return SCMIRRORING_ERROR_NONE;
+
+failed:
+ scmirroring_error("Failed to start direct streaming");
+ return SCMIRRORING_ERROR_INVALID_OPERATION;
+}
+
void __miracast_server_interpret(MiracastServer *server, gchar *buf)
{
int ret = SCMIRRORING_ERROR_NONE;
g_strfreev(multisink_info);
klass->send_response(server, "OK:SET");
+ } else if (g_strrstr(buf, "SWITCH UDP")) {
+ scmirroring_debug("Swithc AV streaming transport to UDP");
+
+ ret = __miracast_server_switch_transport(server, SWITCH_TO_UDP);
+ if (ret == SCMIRRORING_ERROR_NONE)
+ klass->send_response(server, "OK:SET");
+ else
+ klass->send_response(server, "FAIL:SET");
+ } else if (g_strrstr(buf, "SWITCH TCP")) {
+ scmirroring_debug("Swithc AV streaming transport to TCP");
+
+ ret = __miracast_server_switch_transport(server, SWITCH_TO_TCP);
+ if (ret == SCMIRRORING_ERROR_NONE)
+ klass->send_response(server, "OK:SET");
+ else
+ klass->send_response(server, "FAIL:SET");
} else if (g_strrstr(buf, SCMIRRORING_STATE_CMD_PAUSE)) {
gst_rtsp_wfd_server_trigger_request(GST_RTSP_SERVER(server->server), WFD_TRIGGER_PAUSE);
klass->send_response(server, "OK:PAUSE");
int ret = SCMIRRORING_ERROR_NONE;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(scmirroring_sink == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
scmirroring_retvm_if(ip == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "ip is NULL");
handle->ip = strdup(ip);
handle->port = strdup(port);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return SCMIRRORING_ERROR_NONE;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
scmirroring_retvm_if(callback == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "callback is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
scmirroring_retvm_if(display_surface == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "display_surface is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
if ((resolution < SCMIRRORING_RESOLUTION_1920x1080_P30) || (resolution >= SCMIRRORING_RESOLUTION_MAX)) {
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
scmirroring_sink_s *handle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
ret = __scmirroring_sink_error_convert(__func__, ret);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
int mm_codec = MM_WFD_SINK_VIDEO_CODEC_NONE;
scmirroring_sink_s *handle = NULL;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(scmirroring_sink == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink* is NULL");
scmirroring_retvm_if(codec == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "codec is NULL");
}
scmirroring_debug("codec: %d", *codec);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
int ret = SCMIRRORING_ERROR_NONE;
scmirroring_sink_s *handle = NULL;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(scmirroring_sink == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink* is NULL");
scmirroring_retvm_if(width == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "width is NULL");
return ret;
scmirroring_debug("width: %d, height: %d", *width, *height);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
int ret = SCMIRRORING_ERROR_NONE;
scmirroring_sink_s *handle = NULL;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(scmirroring_sink == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink* is NULL");
scmirroring_retvm_if(frame_rate == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "frame_rate is NULL");
return ret;
scmirroring_debug("frame rate: %d", *frame_rate);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
int mm_codec = MM_WFD_SINK_AUDIO_CODEC_NONE;
scmirroring_sink_s *handle = NULL;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(scmirroring_sink == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink* is NULL");
scmirroring_retvm_if(codec == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "codec is NULL");
}
scmirroring_debug("codec: %d", *codec);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
int ret = SCMIRRORING_ERROR_NONE;
scmirroring_sink_s *handle = NULL;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(scmirroring_sink == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink* is NULL");
scmirroring_retvm_if(channel == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "channel is NULL");
return ret;
scmirroring_debug("channel: %d", *channel);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
int ret = SCMIRRORING_ERROR_NONE;
scmirroring_sink_s *handle = NULL;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(scmirroring_sink == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink* is NULL");
scmirroring_retvm_if(sample_rate == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "sample_rate is NULL");
return ret;
scmirroring_debug("sample rate: %d", *sample_rate);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}
int ret = SCMIRRORING_ERROR_NONE;
scmirroring_sink_s *handle = NULL;
- scmirroring_error_fenter();
+ scmirroring_debug_fenter();
scmirroring_retvm_if(scmirroring_sink == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink* is NULL");
scmirroring_retvm_if(bitwidth == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "bitwidth is NULL");
return ret;
scmirroring_debug("bitwidth: %d", *bitwidth);
- scmirroring_error_fleave();
+ scmirroring_debug_fleave();
return ret;
}