diff options
author | imcheng@chromium.org <imcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-07 13:14:48 +0000 |
---|---|---|
committer | imcheng@chromium.org <imcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-07 13:14:48 +0000 |
commit | a15932ae92c624efcf53e328e1aedbac485de80d (patch) | |
tree | e724b9aa6f71aedd10057721d3740d7c109cc0fb /media | |
parent | 0b3fc5847c32172d090a757fad90c14c1c31b702 (diff) | |
download | chromium_src-a15932ae92c624efcf53e328e1aedbac485de80d.zip chromium_src-a15932ae92c624efcf53e328e1aedbac485de80d.tar.gz chromium_src-a15932ae92c624efcf53e328e1aedbac485de80d.tar.bz2 |
Cast: Cap max receiver log size per rtcp packet to 200 bytes.
This is a short term fix to hopefully reduce the effects of packets
queueing up on the receiver side. Previously we try fill up the RTCP
packet with as many receiver log as possible so we can have redundancy.
The redundancy that has been observed was more than 30 per message, and
we don't need this much redundancy. 200 is a good number where each
log message will be sent with redundancy of around 2-3, without losing
too many (< 1%) messages, assuming default rtcp interval settings.
That's fine because we don't need the logs to be completely reliable.
BUG=349265
Review URL: https://codereview.chromium.org/189423002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@255602 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/cast/rtcp/rtcp_sender.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/media/cast/rtcp/rtcp_sender.cc b/media/cast/rtcp/rtcp_sender.cc index dceec1a..e5b24c2 100644 --- a/media/cast/rtcp/rtcp_sender.cc +++ b/media/cast/rtcp/rtcp_sender.cc @@ -23,6 +23,12 @@ namespace { // 12 bits. const int64 kMaxWireFormatTimeDeltaMs = GG_INT64_C(0xfff); +// We limit the size of receiver logs to avoid queuing up packets. We also +// do not need the amount of redundancy that results from filling up every +// RTCP packet with log messages. This number should give a redundancy of +// about 2-3 per log message. +const size_t kMaxReceiverLogBytes = 200; + // Converts a log event type to an integer value. // NOTE: We have only allocated 4 bits to represent the type of event over the // wire. Therefore, this function can only return values from 0 to 15. @@ -82,7 +88,8 @@ bool BuildRtcpReceiverLogMessage( size_t* number_of_frames, size_t* total_number_of_messages_to_send, size_t* rtcp_log_size) { - size_t remaining_space = kMaxIpPacketSize - start_size; + size_t remaining_space = + std::min(kMaxReceiverLogBytes, kMaxIpPacketSize - start_size); if (remaining_space < kRtcpCastLogHeaderSize + kRtcpReceiverFrameLogSize + kRtcpReceiverEventLogSize) { return false; |