| 158 break; |
158 break; |
| 159 case PROP_SSRC: |
159 case PROP_SSRC: |
| 160 g_free(rtp->priv->ssrc); |
160 g_free(rtp->priv->ssrc); |
| 161 rtp->priv->ssrc = g_value_dup_string(value); |
161 rtp->priv->ssrc = g_value_dup_string(value); |
| 162 break; |
162 break; |
| 163 default: |
163 default: |
| 164 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
164 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
| 165 break; |
165 break; |
| 166 } |
166 } |
| 167 } |
167 } |
| 168 |
168 |
| 169 static void |
169 static void |
| 170 jingle_rtp_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) |
170 jingle_rtp_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) |
| 171 { |
171 { |
| 172 JingleRtp *rtp; |
172 JingleRtp *rtp; |
| 173 g_return_if_fail(JINGLE_IS_RTP(object)); |
173 g_return_if_fail(JINGLE_IS_RTP(object)); |
| 174 |
174 |
| 175 rtp = JINGLE_RTP(object); |
175 rtp = JINGLE_RTP(object); |
| 176 |
176 |
| 177 switch (prop_id) { |
177 switch (prop_id) { |
| 178 case PROP_MEDIA_TYPE: |
178 case PROP_MEDIA_TYPE: |
| 179 g_value_set_string(value, rtp->priv->media_type); |
179 g_value_set_string(value, rtp->priv->media_type); |
| 180 break; |
180 break; |
| 181 case PROP_SSRC: |
181 case PROP_SSRC: |
| 182 g_value_set_string(value, rtp->priv->ssrc); |
182 g_value_set_string(value, rtp->priv->ssrc); |
| 183 break; |
183 break; |
| 184 default: |
184 default: |
| 185 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
185 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
| 186 break; |
186 break; |
| 187 } |
187 } |
| 188 } |
188 } |
| 189 |
189 |
| 190 gchar * |
190 gchar * |
| 249 gchar *ip = purple_media_candidate_get_ip(candidate); |
249 gchar *ip = purple_media_candidate_get_ip(candidate); |
| 250 gchar *username = purple_media_candidate_get_username(candidate); |
250 gchar *username = purple_media_candidate_get_username(candidate); |
| 251 gchar *password = purple_media_candidate_get_password(candidate); |
251 gchar *password = purple_media_candidate_get_password(candidate); |
| 252 PurpleMediaCandidateType type = |
252 PurpleMediaCandidateType type = |
| 253 purple_media_candidate_get_candidate_type(candidate); |
253 purple_media_candidate_get_candidate_type(candidate); |
| 254 |
254 |
| 255 JingleIceUdpCandidate *iceudp_candidate = jingle_iceudp_candidate_new( |
255 JingleIceUdpCandidate *iceudp_candidate = jingle_iceudp_candidate_new( |
| 256 purple_media_candidate_get_component_id(candidate), |
256 purple_media_candidate_get_component_id(candidate), |
| 257 purple_media_candidate_get_foundation(candidate), |
257 purple_media_candidate_get_foundation(candidate), |
| 258 generation, id, ip, 0, |
258 generation, id, ip, 0, |
| 259 purple_media_candidate_get_port(candidate), |
259 purple_media_candidate_get_port(candidate), |
| 529 JingleSession *session = jingle_content_get_session(content); |
529 JingleSession *session = jingle_content_get_session(content); |
| 530 JabberStream *js = jingle_session_get_js(session); |
530 JabberStream *js = jingle_session_get_js(session); |
| 531 gchar *remote_jid = jingle_session_get_remote_jid(session); |
531 gchar *remote_jid = jingle_session_get_remote_jid(session); |
| 532 |
532 |
| 533 PurpleMedia *media = purple_media_manager_create_media( |
533 PurpleMedia *media = purple_media_manager_create_media( |
| 534 purple_media_manager_get(), |
534 purple_media_manager_get(), |
| 535 purple_connection_get_account(js->gc), |
535 purple_connection_get_account(js->gc), |
| 536 "fsrtpconference", remote_jid, |
536 "fsrtpconference", remote_jid, |
| 537 jingle_session_is_initiator(session)); |
537 jingle_session_is_initiator(session)); |
| 538 g_free(remote_jid); |
538 g_free(remote_jid); |
| 539 |
539 |
| 608 : PURPLE_MEDIA_SEND_VIDEO; |
608 : PURPLE_MEDIA_SEND_VIDEO; |
| 609 else |
609 else |
| 610 type = is_audio == TRUE ? PURPLE_MEDIA_RECV_AUDIO |
610 type = is_audio == TRUE ? PURPLE_MEDIA_RECV_AUDIO |
| 611 : PURPLE_MEDIA_RECV_VIDEO; |
611 : PURPLE_MEDIA_RECV_VIDEO; |
| 612 |
612 |
| 613 params = |
613 params = |
| 614 jingle_get_params(jingle_session_get_js(session), NULL, 0, 0, 0, |
614 jingle_get_params(jingle_session_get_js(session), NULL, 0, 0, 0, |
| 615 NULL, NULL, &num_params); |
615 NULL, NULL, &num_params); |
| 616 |
616 |
| 617 creator = jingle_content_get_creator(content); |
617 creator = jingle_content_get_creator(content); |
| 618 if (!strcmp(creator, "initiator")) |
618 if (!strcmp(creator, "initiator")) |
| 657 encoding_name = xmlnode_get_attrib(codec_element, "name"); |
657 encoding_name = xmlnode_get_attrib(codec_element, "name"); |
| 658 |
658 |
| 659 id = xmlnode_get_attrib(codec_element, "id"); |
659 id = xmlnode_get_attrib(codec_element, "id"); |
| 660 clock_rate = xmlnode_get_attrib(codec_element, "clockrate"); |
660 clock_rate = xmlnode_get_attrib(codec_element, "clockrate"); |
| 661 |
661 |
| 662 codec = purple_media_codec_new(atoi(id), encoding_name, |
662 codec = purple_media_codec_new(atoi(id), encoding_name, |
| 663 type, |
663 type, |
| 664 clock_rate ? atoi(clock_rate) : 0); |
664 clock_rate ? atoi(clock_rate) : 0); |
| 665 |
665 |
| 666 for (param = xmlnode_get_child(codec_element, "parameter"); |
666 for (param = xmlnode_get_child(codec_element, "parameter"); |
| 667 param; param = xmlnode_get_next_twin(param)) { |
667 param; param = xmlnode_get_next_twin(param)) { |
| 668 purple_media_codec_add_optional_parameter(codec, |
668 purple_media_codec_add_optional_parameter(codec, |
| 700 PurpleMediaCodec *codec = (PurpleMediaCodec*)codecs->data; |
700 PurpleMediaCodec *codec = (PurpleMediaCodec*)codecs->data; |
| 701 GList *iter = purple_media_codec_get_optional_parameters(codec); |
701 GList *iter = purple_media_codec_get_optional_parameters(codec); |
| 702 gchar *id, *name, *clockrate, *channels; |
702 gchar *id, *name, *clockrate, *channels; |
| 703 gchar *codec_str; |
703 gchar *codec_str; |
| 704 xmlnode *payload = xmlnode_new_child(description, "payload-type"); |
704 xmlnode *payload = xmlnode_new_child(description, "payload-type"); |
| 705 |
705 |
| 706 id = g_strdup_printf("%d", |
706 id = g_strdup_printf("%d", |
| 707 purple_media_codec_get_id(codec)); |
707 purple_media_codec_get_id(codec)); |
| 708 name = purple_media_codec_get_encoding_name(codec); |
708 name = purple_media_codec_get_encoding_name(codec); |
| 709 clockrate = g_strdup_printf("%d", |
709 clockrate = g_strdup_printf("%d", |
| 710 purple_media_codec_get_clock_rate(codec)); |
710 purple_media_codec_get_clock_rate(codec)); |
| 895 break; |
895 break; |
| 896 } |
896 } |
| 897 } |
897 } |
| 898 |
898 |
| 899 gboolean |
899 gboolean |
| 900 jingle_rtp_initiate_media(JabberStream *js, const gchar *who, |
900 jingle_rtp_initiate_media(JabberStream *js, const gchar *who, |
| 901 PurpleMediaSessionType type) |
901 PurpleMediaSessionType type) |
| 902 { |
902 { |
| 903 /* create content negotiation */ |
903 /* create content negotiation */ |
| 904 JingleSession *session; |
904 JingleSession *session; |
| 905 JingleContent *content; |
905 JingleContent *content; |
| 906 JingleTransport *transport; |
906 JingleTransport *transport; |
| 907 JabberBuddy *jb; |
907 JabberBuddy *jb; |
| 908 JabberBuddyResource *jbr; |
908 JabberBuddyResource *jbr; |
| 909 const gchar *transport_type; |
909 const gchar *transport_type; |
| 910 |
910 |
| 911 gchar *resource = NULL, *me = NULL, *sid = NULL; |
911 gchar *resource = NULL, *me = NULL, *sid = NULL; |
| 912 |
912 |
| 913 /* construct JID to send to */ |
913 /* construct JID to send to */ |
| 914 jb = jabber_buddy_find(js, who, FALSE); |
914 jb = jabber_buddy_find(js, who, FALSE); |
| 915 if (!jb) { |
915 if (!jb) { |