Bug 28687 - Call needs to be able to support AVPF extra reports (RFC 4585/RFC 5506)
Summary: Call needs to be able to support AVPF extra reports (RFC 4585/RFC 5506)
Status: RESOLVED FIXED
Alias: None
Product: Telepathy
Classification: Unclassified
Component: tp-spec (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Telepathy bugs list
QA Contact: Telepathy bugs list
URL: http://git.collabora.co.uk/?p=user/jo...
Whiteboard: Call
Keywords: patch
Depends on:
Blocks:
 
Reported: 2010-06-23 06:02 UTC by Sjoerd Simons
Modified: 2011-07-19 12:43 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Sjoerd Simons 2010-06-23 06:02:32 UTC
From #24936
 * To Content.I.Media's codecs:
   * A way to specify which AVPF extra reports are supported. Probably as a{ss}
      like extra codec parameters (but they are different and should not be mixed).
Comment 1 Jonny Lamb 2010-10-26 03:58:36 UTC
per content:

 u: rtcp min interval
 b: does avpf

each codec feedback property is an struct:

(
 u: codec ID
 s: ack/nack/ccm/etc.
 s: type of feedback
 a{ss}: params
)
Comment 2 Jonny Lamb 2010-10-27 06:30:00 UTC
Okay cool check out my branch.
Comment 3 Olivier Crête 2010-10-29 06:03:43 UTC
The parameter of  SetLocalFeedbackCodecs() should really be called "Codecs" since it does not actually describe codecs.. I'd call it something like "FeedbackMessages".

Also, what is called "category" is actually called type in the RFC (sorry, my error).. And the currently type should probably be subtype (and be optional).
Comment 4 Olivier Crête 2011-01-04 12:28:57 UTC
I've done some more changes, see http://git.collabora.co.uk/?p=user/tester/telepathy-spec.git;a=shortlog;h=refs/heads/rtcp-fb

1. Renamed FeedbackCodec to Feedback Messages
2. Removed the extra params map, it seems that in the RFC all we can know is that its a string, so let's leave it as a string until the component that can understand it, so we avoid having to have parsers for each in the CM.
3. RTCPMinimumReportingInterval is per-codec it turns out, so move it there.
Comment 5 Olivier Crête 2011-02-11 07:00:05 UTC
Replace CodecOffer with MediaDescription

Remove method (it all goes in Accept)
Comment 6 Olivier Crête 2011-02-14 06:36:17 UTC
Drafted in

http://git.collabora.co.uk/?p=user/tester/telepathy-spec.git;a=shortlog;h=refs/heads/rtcp-fb-mediadesc

The only thing I'm not sure about here is if we should keep the word "Remote" in the property name since we use the same name in Accept().
Comment 7 David Laban 2011-02-14 09:54:43 UTC
I decided to review the full interface, as defined at http://git.collabora.co.uk/?p=user/tester/telepathy-spec.git;a=blob;f=spec/Call_Content_Media_Description_Interface_RTCP_Feedback.xml;h=94d2fc725b7600723e288a9a6813cee9b7e40470;hb=c7fa8b8ab095c816749d1b89e4163f66df85487d
A few points:

Why is MAXUINT (0xFFFFFFFF) used to mean "I don't care" rather than 0?

I agree about the property name:
s/RemoteFeedbackMessages/SupportedFeedbackMessages/?
Comment 8 Olivier Crête 2011-02-18 15:04:34 UTC
(In reply to comment #7)
> Why is MAXUINT (0xFFFFFFFF) used to mean "I don't care" rather than 0?

0 is a valid value (ie, the timing is then such that RTCP packets dont exceed 5% of the available bandwidth). So if we want a "DEFUALT" we have to use something else, like MAXUINT. The alternative is to give up on the default.. But that would force every CM to know that in the standard AVP profile, the minimum is defined as 5 seconds, which I would find a bit sad.

> I agree about the property name:
> s/RemoteFeedbackMessages/SupportedFeedbackMessages/?

That or just "FeedbackMessages"
Comment 9 David Laban 2011-03-02 05:01:53 UTC
I just ran gitg and set it to look at everyone's branches.

ocrete/streamhandler-exthdr-rtcpfb looks good, given the above comments.

I fixed the things that we discussed, and pushed two patches to:

http://git.collabora.co.uk/?p=user/alsuren/telepathy-spec.git;a=shortlog;h=refs/heads/rtcp-fb-mediadesc-ftfy
Comment 10 Olivier Crête 2011-03-03 10:51:01 UTC
Actually, MAXUINT means "according to the bandwidth" for AVPF and 5 seconds for AVP.

We should have the bandwidth properties at some point.
Comment 11 David Laban 2011-03-07 10:21:24 UTC
Is http://git.collabora.co.uk/?p=user/alsuren/telepathy-spec.git;a=commitdiff;h=17b5f2148644caf5b923ebfb1b3531e776f95761 any better? (note that I won't close this bug until I've worked out what to do with the bandwidth property)
Comment 12 David Laban 2011-03-22 15:07:19 UTC
Negotiating bandwidth for the session should be on its own MD interface. Sjoerd thinks that we should just have one bandwidth int that applies to the content, and ignore/fudge per-call or per-stream limits or explicit RTCP bandwidth limits. After thinking it over, I think that's actually quite a workable solution. Will spec it up and see what it looks like.
Comment 13 Olivier Crête 2011-03-22 15:31:51 UTC
The SIP bandwidth limits are per-content
Comment 14 Olivier Crête 2011-03-22 15:37:08 UTC
that patch is wrong.

In RTP/AVP, MAXUINT means 5 seconds (even if there is spare bandwidth), in RTP/AVPF, it means 0 seconds (send as much as the bandwidth allows).

I agree that the bandwidth is probably a separate interface to support RFC 3556 (as well as the basic b= lines from RFC 4566).
Comment 15 David Laban 2011-03-24 11:06:26 UTC
(In reply to comment #14)
> that patch is wrong.
> 
> In RTP/AVP, MAXUINT means 5 seconds (even if there is spare bandwidth), in
> RTP/AVPF, it means 0 seconds (send as much as the bandwidth allows).
> 
> I agree that the bandwidth is probably a separate interface to support RFC 3556
> (as well as the basic b= lines from RFC 4566).

*sighs* Let's try again. If http://git.collabora.co.uk/?p=user/alsuren/telepathy-spec.git;a=shortlog;h=refs/heads/rtcp-fb-mediadesc-ftfy is still wrong, I might cry.
Comment 16 Olivier Crête 2011-04-04 11:34:20 UTC
Don't cry!

+          The minimum interval between two regular RTCP packets for this
+          content, in milliseconds. If no special value is desired (for

+          signalling) one should put MAXUINT (0xFFFFFFFF). In RTP/AVP, the
+          setting this property to 0 means "Do not let RTCP packets exceed 5%
+          of the available bandwidth" and MAXUINT means "use the recommended
+          interval time of 5 seconds as specified by RFC 3550 section 6.2".
+          In RTP/AVPF, both 0 and MAXUINT are used to avoid specifying an
+          additional limit on the rate of RCTP packets (other than that
+          specified by bandwidth constraints for the session). Other profiles
+          may assign different meanings to the value 0 or MAXUINT.

"The special value MAXUINT means according to profile, in RTP/AVP, it means 5 seconds, in RTP/AVPF it means 0 seconds. In both cases, the interval between RTCP should be large enough to respect the RTCP bandwidth."

That said, maybe we want to get rid of MAXUINT and just force CM to know about profiles ?
Comment 17 David Laban 2011-06-10 14:41:06 UTC
> "The special value MAXUINT means according to profile, in RTP/AVP, it means 5
> seconds, in RTP/AVPF it means 0 seconds. In both cases, the interval between
> RTCP should be large enough to respect the RTCP bandwidth."
> 
That's not even valid english. I'm not merging that.

> That said, maybe we want to get rid of MAXUINT and just force CM to know about
> profiles ?

It seems like a huge cop-out, just because we can't agree on the language. I am quite tempted to agree though.
Comment 19 David Laban 2011-06-29 16:26:35 UTC
When merging, I noticed the following:

    Note that StreamedMedia gained RTCP feedback capabilities
    while we were bikeshedding about RTCPMinimumInterval,
    so I have deferred to these types and copied the docstring of
    RTCPMinimumInterval across.
    
    RTCP_Feedback_Message_Map is now a{u(ua(sss))} rather than
    the invalid type a{uua(sss)} (we should probably make the
    spec parser check for invalid types really)

The interesting part of the diff is:

http://cgit.collabora.com/git/user/alsuren/telepathy-spec.git/diff/spec/Media_Stream_Handler.xml?h=rtcp-fb-mediadesc-28687

cgit isn't capable of showing the following changes (copy-pasted from gitk because gitg segfaults on merge commits):

 -    <tp:struct name="RTCP_Feedback_Message_Properties">
...
 -    </tp:struct>
 -
 -    <tp:struct name="RTCP_Feedback_Message"
...
 -    </tp:struct>
 -
 -    <tp:mapping name="RTCP_Feedback_Message_Map">
...
 -    </tp:mapping>
 -
 -    <property name="FeedbackMessages" type="a{uua(sss)}"
++    <property name="FeedbackMessages" type="a{u(ua(sss))}"
Comment 20 Olivier Crête 2011-06-29 16:39:52 UTC
++ merge !
Comment 21 David Laban 2011-06-29 16:59:15 UTC
merged to alsuren/call
Comment 22 David Laban 2011-07-19 12:41:39 UTC
merged to master
Comment 23 David Laban 2011-07-19 12:43:07 UTC
merged to master


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.