[gnome-network-displays/cc-tmp: 18/80] cc: second connect request for media LOAD
- From: Benjamin Berg <bberg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-network-displays/cc-tmp: 18/80] cc: second connect request for media LOAD
- Date: Fri, 9 Sep 2022 12:03:49 +0000 (UTC)
commit 9c46ce31530ac90ec28a0239fab71e1b8cf3c1ec
Author: Anupam Kumar <kyteinsky gmail com>
Date: Fri Jul 29 09:55:44 2022 +0530
cc: second connect request for media LOAD
finally casting videos works!!
src/cc/cc-comm.c | 34 ++++++++++++++++++++++------------
src/nd-cc-sink.c | 4 +++-
2 files changed, 25 insertions(+), 13 deletions(-)
---
diff --git a/src/cc/cc-comm.c b/src/cc/cc-comm.c
index 426a16f..03d45bd 100644
--- a/src/cc/cc-comm.c
+++ b/src/cc/cc-comm.c
@@ -26,17 +26,15 @@ static void cc_comm_listen (CcComm *comm);
static void cc_comm_read (CcComm *comm, gsize io_bytes, gboolean read_header);
-static void
-cc_comm_load_media (CcComm *comm)
+static gboolean
+cc_comm_load_media_cb (CcComm *comm)
{
- gboolean send_ok = cc_comm_send_request (comm, MESSAGE_TYPE_MEDIA, "{ \"type\": \"LOAD\", \"media\": {
\"contentId\":
\"https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/BigBuckBunny.mp4\",
\"streamType\": \"BUFFERED\", \"contentType\": \"video/mp4\" }, \"requestId\": 4 }", NULL);
-
- if (!send_ok)
+ if (!cc_comm_send_request (comm, MESSAGE_TYPE_MEDIA, "{ \"type\": \"LOAD\", \"media\": { \"contentId\":
\"https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/BigBuckBunny.mp4\",
\"streamType\": \"BUFFERED\", \"contentType\": \"video/mp4\" }, \"requestId\": 4 }", NULL))
{
g_warning ("NdCCSink: something went wrong with load media");
}
- g_clear_pointer (&comm->destination_id, g_free);
+ return FALSE;
}
static void
@@ -111,8 +109,19 @@ cc_comm_parse_json_data (CcComm *comm, char *payload)
json_reader_read_member (reader, "transportId");
const char *transport_id = json_reader_get_string_value (reader);
g_debug ("CcComm: Transport Id: %s!", transport_id);
+
+ // start a new virtual connection
comm->destination_id = g_strdup (transport_id);
- cc_comm_load_media (comm);
+ // g_clear_pointer (&comm->sender_id, g_free);
+ // comm->sender_id = g_strdup ("sender-gnd");
+ g_debug ("CcComm: Sending second connect request");
+ if (!cc_comm_send_request(comm, MESSAGE_TYPE_CONNECT, NULL, NULL))
+ {
+ g_warning ("CcComm: Something went wrong with VC request for media");
+ return TRUE;
+ }
+ // call the LOAD media request after 4 seconds
+ g_timeout_add_seconds (4, G_SOURCE_FUNC (cc_comm_load_media_cb), comm);
}
json_reader_end_member (reader);
json_reader_end_element (reader);
@@ -499,7 +508,7 @@ cc_comm_send_request (CcComm * comm, enum MessageType message_type, char *utf8_p
binary_payload.len = 0;
message = cc_comm_build_message(
- "sender-0",
+ comm->sender_id,
"urn:x-cast:com.google.cast.tp.deviceauth",
CASTCHANNEL__CAST_MESSAGE__PAYLOAD_TYPE__BINARY,
&binary_payload,
@@ -508,17 +517,18 @@ cc_comm_send_request (CcComm * comm, enum MessageType message_type, char *utf8_p
case MESSAGE_TYPE_CONNECT:
message = cc_comm_build_message(
- "sender-0",
+ comm->sender_id,
"urn:x-cast:com.google.cast.tp.connection",
CASTCHANNEL__CAST_MESSAGE__PAYLOAD_TYPE__STRING,
NULL,
- "{ \"type\": \"CONNECT\" }");
- // "{ \"type\": \"CONNECT\", \"userAgent\": \"GND/0.90.5 (X11; Linux x86_64)\", \"connType\": 0,
\"origin\": {}, \"senderInfo\": { \"sdkType\": 2, \"version\": \"X11; Linux x86_64\", \"browserVersion\":
\"X11; Linux x86_64\", \"platform\": 6, \"connectionType\": 1 } }");
+ // "{ \"type\": \"CONNECT\" }");
+ "{ \"type\": \"CONNECT\", \"userAgent\": \"GND/0.90.5 (X11; Linux x86_64)\", \"connType\": 0,
\"origin\": {}, \"senderInfo\": { \"sdkType\": 2, \"version\": \"X11; Linux x86_64\", \"browserVersion\":
\"X11; Linux x86_64\", \"platform\": 6, \"connectionType\": 1 } }");
+ message.destination_id = comm->destination_id;
break;
case MESSAGE_TYPE_DISCONNECT:
message = cc_comm_build_message(
- "sender-0",
+ comm->sender_id,
"urn:x-cast:com.google.cast.tp.connection",
CASTCHANNEL__CAST_MESSAGE__PAYLOAD_TYPE__STRING,
NULL,
diff --git a/src/nd-cc-sink.c b/src/nd-cc-sink.c
index cce8dc2..2021b2c 100644
--- a/src/nd-cc-sink.c
+++ b/src/nd-cc-sink.c
@@ -361,6 +361,9 @@ nd_cc_sink_sink_start_stream (NdSink *sink)
g_debug ("NdCCSink: Attempting connection to Chromecast: %s", self->remote_name);
+ self->comm.sender_id = g_strdup ("sender-gnd");
+ self->comm.destination_id = g_strdup ("receiver-0");
+
// open a TLS connection to the CC device
if (!cc_comm_make_connection(&self->comm, self->remote_address, &error))
{
@@ -396,7 +399,6 @@ nd_cc_sink_sink_start_stream (NdSink *sink)
// strncat (self->comm.sender_id, six_digits, 6);
// set sender_id after connection (sender-xxxxxx)
- self->comm.sender_id = "sender-0";
// send pings to device every 5 seconds
self->ping_timeout_handle = g_timeout_add_seconds(5, G_SOURCE_FUNC (cc_comm_send_ping), &self->comm);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]