Opened 9 years ago

Closed 8 years ago

#12981 closed patch (fixed)

Allow to set SDES properties of RTP conference

Reported by: haakon Owned by: Maiku
Milestone: 2.8.0 Component: Voice and Video
Version: Keywords: RTP SDES RFC1889
Cc:

Description

FsRtpConference? allows to set various items describing the media session which are then transmitted in RTCP SDES packets, as described in RFC 1889 chapter 6.4. It should be possible to set these values with libpurple.

Concrete example when it can be useful is Microsoft Office Communicator protocol which uses the SDES CNAME value to identify currently talking participants in multiuser voice conference, so with correctly set CNAME client can indicate to user who is speaking right now.

Attached file proposes how this can be implemented. Function purple_media_set_params() allows to pass an array of GParameter to PurpleMedia? in a similar way purple_media_add_stream() does. Potentially it can be used for passing arbitrary optional parameters to the media backend, not only the SDES stuff, when the need arises.

Attachments (1)

0001-Allow-to-set-SDES-properties-of-FsRtpConference.patch (8.4 KB) - added by haakon 8 years ago.

Download all attachments as: .zip

Change History (8)

comment:1 Changed 8 years ago by Robby

  • Milestone set to Patches Needing Review

comment:2 follow-up: Changed 8 years ago by darkrain42

A few comments/questions:

  • Why choose to terminate with a parameter whose 'name' field is NULL? Is that a standard idiom for GParameters? (I ask because I'm more familiar with ones like g_strsplit(), where it's terminated by a NULL member)
  • It would be good if the API had a way to determine if the current backend /supports/ these properties (or better yet, query what properties it supports)

I'm also a little concerned about this turning into "Pass random blobs through the PurpleMedia interface", but this seems relatively sane so far.

comment:3 in reply to: ↑ 2 Changed 8 years ago by haakon

Replying to darkrain42:

Why choose to terminate with a parameter whose 'name' field is NULL? Is that a standard idiom for GParameters?

No, this is not any standard usage. Later I looked through some code that uses GParameter, seems most ofter the size of an array is passed along in a separate variable and there is no termination. Because purple_media_add_stream() already uses this approach, I updated purple_media_set_params() to get additional num_params argument.

It would be good if the API had a way to determine if the current backend /supports/ these properties (or better yet, query what properties it supports)

I added APIs allowing both - getting list of all supported properties and querying whether particular property is recognized.

I'm also a little concerned about this turning into "Pass random blobs through the PurpleMedia interface", but this seems relatively sane so far.

Of course this should be used with reason. My intention is to only use this to configure complementary parameters that do not radically affect the media streaming and which are supported only by some (future) backends, where adding a new get/set functions to the API for each of them can be overkill. Media streams and codecs in libpurple already have this possibility.

Attaching updated patch file...

comment:4 Changed 8 years ago by rekkanoryo

darkrain42: Is this patch acceptable with the modifications haakon's made to it?

comment:5 Changed 8 years ago by rekkanoryo

  • Milestone changed from Patches Needing Review to 2.8.0

Must be applied for 2.8.0.

comment:6 Changed 8 years ago by Robby

  • Type changed from enhancement to patch

comment:7 Changed 8 years ago by jakub.adam@…

  • Resolution set to fixed
  • Status changed from new to closed

(In 6cdccf57eb89059350d3853289540768abb6434c):
media: Allow setting SDES properties of RTP conferences. Fixes #12981.

Note: See TracTickets for help on using tickets.
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!