Mercurial > pidgin
comparison libpurple/media/media.c @ 29179:a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
author | maiku@pidgin.im |
---|---|
date | Mon, 26 Oct 2009 23:10:53 +0000 |
parents | f0966e90ec44 |
children | ec5ed142f551 |
comparison
equal
deleted
inserted
replaced
29178:a7cad99144f0 | 29179:a39696686dd6 |
---|---|
654 param->key, param->value); | 654 param->key, param->value); |
655 } | 655 } |
656 | 656 |
657 g_free(encoding_name); | 657 g_free(encoding_name); |
658 return new_codec; | 658 return new_codec; |
659 } | |
660 | |
661 static PurpleMediaCodec * | |
662 purple_media_codec_from_fs(const FsCodec *codec) | |
663 { | |
664 PurpleMediaCodec *new_codec; | |
665 GList *iter; | |
666 | |
667 if (codec == NULL) | |
668 return NULL; | |
669 | |
670 new_codec = purple_media_codec_new(codec->id, codec->encoding_name, | |
671 purple_media_from_fs(codec->media_type, | |
672 FS_DIRECTION_BOTH), codec->clock_rate); | |
673 g_object_set(new_codec, "channels", codec->channels, NULL); | |
674 | |
675 for (iter = codec->optional_params; iter; iter = g_list_next(iter)) { | |
676 FsCodecParameter *param = (FsCodecParameter*)iter->data; | |
677 purple_media_codec_add_optional_parameter(new_codec, | |
678 param->name, param->value); | |
679 } | |
680 | |
681 return new_codec; | |
682 } | |
683 | |
684 static GList * | |
685 purple_media_codec_list_from_fs(GList *codecs) | |
686 { | |
687 GList *new_list = NULL; | |
688 | |
689 for (; codecs; codecs = g_list_next(codecs)) { | |
690 new_list = g_list_prepend(new_list, | |
691 purple_media_codec_from_fs( | |
692 codecs->data)); | |
693 } | |
694 | |
695 new_list = g_list_reverse(new_list); | |
696 return new_list; | |
697 } | |
698 | |
699 static GList * | |
700 purple_media_codec_list_to_fs(GList *codecs) | |
701 { | |
702 GList *new_list = NULL; | |
703 | |
704 for (; codecs; codecs = g_list_next(codecs)) { | |
705 new_list = g_list_prepend(new_list, | |
706 purple_media_codec_to_fs( | |
707 codecs->data)); | |
708 } | |
709 | |
710 new_list = g_list_reverse(new_list); | |
711 return new_list; | |
712 } | 659 } |
713 | 660 |
714 static PurpleMediaSession* | 661 static PurpleMediaSession* |
715 purple_media_get_session(PurpleMedia *media, const gchar *sess_id) | 662 purple_media_get_session(PurpleMedia *media, const gchar *sess_id) |
716 { | 663 { |
1583 gboolean | 1530 gboolean |
1584 purple_media_set_remote_codecs(PurpleMedia *media, const gchar *sess_id, | 1531 purple_media_set_remote_codecs(PurpleMedia *media, const gchar *sess_id, |
1585 const gchar *participant, GList *codecs) | 1532 const gchar *participant, GList *codecs) |
1586 { | 1533 { |
1587 #ifdef USE_VV | 1534 #ifdef USE_VV |
1588 PurpleMediaStream *stream; | |
1589 FsStream *fsstream; | |
1590 GList *fscodecs; | |
1591 GError *err = NULL; | |
1592 | |
1593 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); | 1535 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); |
1594 stream = purple_media_get_stream(media, sess_id, participant); | 1536 |
1595 | 1537 return purple_media_backend_set_remote_codecs(media->priv->backend, |
1596 if (stream == NULL) | 1538 sess_id, participant, codecs); |
1597 return FALSE; | |
1598 | |
1599 fsstream = stream->stream; | |
1600 fscodecs = purple_media_codec_list_to_fs(codecs); | |
1601 fs_stream_set_remote_codecs(fsstream, fscodecs, &err); | |
1602 fs_codec_list_destroy(fscodecs); | |
1603 | |
1604 if (err) { | |
1605 purple_debug_error("media", "Error setting remote codecs: %s\n", | |
1606 err->message); | |
1607 g_error_free(err); | |
1608 return FALSE; | |
1609 } | |
1610 return TRUE; | |
1611 #else | 1539 #else |
1612 return FALSE; | 1540 return FALSE; |
1613 #endif | 1541 #endif |
1614 } | 1542 } |
1615 | 1543 |