DescriptionSupport multiple rtx codecs.
Adds negotiation of rtx codecs for red and vp9. To keep backwards
compatibility with older Chrome versions, this change includes two
hacks:
1. Red packets will be retransmitted over the rtx codec associated with
vp8 if no rtx codec is associated with red. This is how Chrome does
it today and ensures that we still can send red over rtx to older
versions.
2. If rtx packets associated with the media codec (vp8/vp9 etc) are
received and red has been negotiated, we will assume that the sender
incorrectly has packetized red inside the rtx header associated with
media. We will therefore restore it with the red payload type
instead, which ensures that we can still receive rtx associated with
red from old versions.
Offering multiple rtx codecs to older versions should not be a problem
since old versions themselves only try to negotiate rtx for vp8.
R=pbos@webrtc.org
TBR=mflodman@webrtc.org
BUG=webrtc:4024
TEST=Verified by running apprtc and emulating packet loss between Chrome with and without the patch.
Committed: https://crrev.com/10880011d9f116a9aff87436de231151e355ac7d
Cr-Commit-Position: refs/heads/master@{#11472}
Patch Set 1 #Patch Set 2 : Remove printfs. #Patch Set 3 : Remove some more code. #
Total comments: 6
Patch Set 4 : Test added. #Patch Set 5 : Rebase. #Messages
Total messages: 24 (11 generated)
|