summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorimcheng@chromium.org <imcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-07 13:14:48 +0000
committerimcheng@chromium.org <imcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-07 13:14:48 +0000
commita15932ae92c624efcf53e328e1aedbac485de80d (patch)
treee724b9aa6f71aedd10057721d3740d7c109cc0fb /media
parent0b3fc5847c32172d090a757fad90c14c1c31b702 (diff)
downloadchromium_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.cc9
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;