--- a/hangouts_media.c Sun Dec 02 20:43:38 2018 +1300
+++ b/hangouts_media.c Sun Dec 02 22:34:01 2018 +1300
@@ -351,7 +351,6 @@
purple_codec = _purple_media_codec_new(
codec->payload_id, codec->name,
type, codec->sample_rate);
@@ -829,6 +828,8 @@
// Male otters are called dogs or boars, females are called bitches or sows, and their offspring are called pups.
MediaStreamOffer audio_stream_otter;
MediaStreamOffer video_stream_otter;
media_stream_add_request__init(&stream_request);
stream_request.request_header = hangouts_get_request_header(ha);
@@ -880,10 +881,26 @@
ssrcs = purple_media_get_session_ssrcs(hangouts_media->media, "hangoutv");
+ //TODO work out what these actually should be + ssrc_group__init(&sim_group); + ssrc_group__init(&fid_group); + sim_group.semantics = "SIM"; + fid_group.semantics = "FID"; video_stream_otter.ssrc = g_new0(uint32_t, g_list_length(ssrcs));
+ sim_group.ssrc = g_new0(uint32_t, g_list_length(ssrcs)); + fid_group.ssrc = g_new0(uint32_t, g_list_length(ssrcs)); for(; ssrcs; ssrcs = g_list_delete_link(ssrcs, ssrcs)) {
video_stream_otter.ssrc[video_stream_otter.n_ssrc++] = GPOINTER_TO_INT(ssrcs->data);
+ sim_group.ssrc[sim_group.n_ssrc++] = GPOINTER_TO_INT(ssrcs->data); + fid_group.ssrc[fid_group.n_ssrc++] = GPOINTER_TO_INT(ssrcs->data); + video_stream_otter.ssrc_group = g_new0(SsrcGroup *, 2); + video_stream_otter.n_ssrc_group = 2; + video_stream_otter.ssrc_group[0] = &sim_group; + video_stream_otter.ssrc_group[1] = &fid_group; stream_request.resource[n_resource++] = &video_media_stream;
@@ -899,12 +916,16 @@
g_free(audio_stream_otter.ssrc);
if (hangouts_media->type & PURPLE_MEDIA_VIDEO) {
+ g_free(video_stream_otter.ssrc_group[0]->ssrc); + g_free(video_stream_otter.ssrc_group[1]->ssrc); + g_free(video_stream_otter.ssrc_group); g_free(video_stream_otter.ssrc);
g_free(stream_request.resource);
hangouts_request_header_free(stream_request.request_header);
//GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(purple_media_manager_get_pipeline(purple_media_manager_get())), GST_DEBUG_GRAPH_SHOW_ALL, "test");
@@ -952,30 +973,25 @@
// G_CALLBACK(hangouts_media_stream_info_cb), hangouts_media);
if(!purple_media_add_stream(media, "hangout", hangouts_media->who, hangouts_media->type & PURPLE_MEDIA_AUDIO, TRUE, "nice", num_params, params)) {
purple_media_end(media, NULL, NULL);
/* TODO: How much clean-up is necessary here? (does calling
purple_media_end lead to cleaning up Jingle structs?) */
if(!purple_media_add_stream(media, "hangoutv", hangouts_media->who, hangouts_media->type & PURPLE_MEDIA_VIDEO, TRUE, "nice", num_params, params)) {
purple_media_end(media, NULL, NULL);
#if PURPLE_VERSION_CHECK(2, 10, 12) || PURPLE_VERSION_CHECK(3, 0, 0)
if (!purple_media_set_send_rtcp_mux(media, "hangout", hangouts_media->who, TRUE)) {
purple_debug_warning("hangouts", "Unable to set rtcp mux on audio stream");
if (!purple_media_set_send_rtcp_mux(media, "hangoutv", hangouts_media->who, TRUE)) {
purple_debug_warning("hangouts", "Unable to set rtcp mux on video stream");