diff options
author | hubbe <hubbe@chromium.org> | 2014-09-12 13:52:07 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-12 20:57:28 +0000 |
commit | a7dbb823c2d7d5cfc7e310aca7acd6efd8e4a009 (patch) | |
tree | 7adeaa35447c3f5e613b0a7853df156207bf4e1e /media/cast/test | |
parent | 79fae2e8bf9f295e70b9dba9744121faae076c37 (diff) | |
download | chromium_src-a7dbb823c2d7d5cfc7e310aca7acd6efd8e4a009.zip chromium_src-a7dbb823c2d7d5cfc7e310aca7acd6efd8e4a009.tar.gz chromium_src-a7dbb823c2d7d5cfc7e310aca7acd6efd8e4a009.tar.bz2 |
Cast: First stab at implementing adaptive latency
After a bunch of testing, it seems like there is a direct linear
relationship between RTT and the optimal playout delay. Packet loss
is also a factor, but since we expect packet loss to be low in
normal networks, perhaps we can make the formula as easy as RTT * 4.
This is disabled by default, the extension needs to set min_latency_ms
in order to activate it.
BUG=405339
Review URL: https://codereview.chromium.org/562653004
Cr-Commit-Position: refs/heads/master@{#294655}
Diffstat (limited to 'media/cast/test')
-rw-r--r-- | media/cast/test/cast_benchmarks.cc | 4 | ||||
-rw-r--r-- | media/cast/test/end2end_unittest.cc | 14 | ||||
-rw-r--r-- | media/cast/test/sender.cc | 4 | ||||
-rw-r--r-- | media/cast/test/simulator.cc | 8 | ||||
-rw-r--r-- | media/cast/test/utility/default_config.cc | 4 |
5 files changed, 20 insertions, 14 deletions
diff --git a/media/cast/test/cast_benchmarks.cc b/media/cast/test/cast_benchmarks.cc index 6a6f8b2..880f4ad 100644 --- a/media/cast/test/cast_benchmarks.cc +++ b/media/cast/test/cast_benchmarks.cc @@ -225,7 +225,7 @@ class RunOneBenchmark { int max_number_of_video_buffers_used) { audio_sender_config_.ssrc = 1; audio_sender_config_.incoming_feedback_ssrc = 2; - audio_sender_config_.target_playout_delay = + audio_sender_config_.max_playout_delay = base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); audio_sender_config_.rtp_payload_type = 96; audio_sender_config_.use_external_encoder = false; @@ -247,7 +247,7 @@ class RunOneBenchmark { video_sender_config_.ssrc = 3; video_sender_config_.incoming_feedback_ssrc = 4; - video_sender_config_.target_playout_delay = + video_sender_config_.max_playout_delay = base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); video_sender_config_.rtp_payload_type = 97; video_sender_config_.use_external_encoder = false; diff --git a/media/cast/test/end2end_unittest.cc b/media/cast/test/end2end_unittest.cc index eea3902..a0a7d1e 100644 --- a/media/cast/test/end2end_unittest.cc +++ b/media/cast/test/end2end_unittest.cc @@ -474,7 +474,7 @@ class End2EndTest : public ::testing::Test { int max_number_of_video_buffers_used) { audio_sender_config_.ssrc = 1; audio_sender_config_.incoming_feedback_ssrc = 2; - audio_sender_config_.target_playout_delay = + audio_sender_config_.max_playout_delay = base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); audio_sender_config_.rtp_payload_type = 96; audio_sender_config_.use_external_encoder = false; @@ -499,7 +499,7 @@ class End2EndTest : public ::testing::Test { video_sender_config_.ssrc = 3; video_sender_config_.incoming_feedback_ssrc = 4; - video_sender_config_.target_playout_delay = + video_sender_config_.max_playout_delay = base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); video_sender_config_.rtp_payload_type = 97; video_sender_config_.use_external_encoder = false; @@ -995,9 +995,9 @@ TEST_F(End2EndTest, DISABLED_StartSenderBeforeReceiver) { TEST_F(End2EndTest, DropEveryOtherFrame3Buffers) { Configure(CODEC_VIDEO_VP8, CODEC_AUDIO_OPUS, kDefaultAudioSamplingRate, 3); int target_delay = 300; - video_sender_config_.target_playout_delay = + video_sender_config_.max_playout_delay = base::TimeDelta::FromMilliseconds(target_delay); - audio_sender_config_.target_playout_delay = + audio_sender_config_.max_playout_delay = base::TimeDelta::FromMilliseconds(target_delay); video_receiver_config_.rtp_max_delay_ms = target_delay; Create(); @@ -1436,6 +1436,12 @@ TEST_F(End2EndTest, OldPacketNetwork) { TEST_F(End2EndTest, TestSetPlayoutDelay) { Configure(CODEC_VIDEO_FAKE, CODEC_AUDIO_PCM16, 32000, 1); + video_sender_config_.min_playout_delay = + video_sender_config_.max_playout_delay; + audio_sender_config_.min_playout_delay = + audio_sender_config_.max_playout_delay; + video_sender_config_.max_playout_delay = base::TimeDelta::FromSeconds(1); + audio_sender_config_.max_playout_delay = base::TimeDelta::FromSeconds(1); Create(); StartBasicPlayer(); const int kNewDelay = 600; diff --git a/media/cast/test/sender.cc b/media/cast/test/sender.cc index c18645a..38aef30 100644 --- a/media/cast/test/sender.cc +++ b/media/cast/test/sender.cc @@ -75,7 +75,7 @@ media::cast::AudioSenderConfig GetAudioSenderConfig() { audio_config.rtp_payload_type = 127; // TODO(miu): The default in cast_defines.h is 100. Should this be 100, and // should receiver.cc's config also be 100? - audio_config.target_playout_delay = base::TimeDelta::FromMilliseconds(300); + audio_config.max_playout_delay = base::TimeDelta::FromMilliseconds(300); return audio_config; } @@ -109,7 +109,7 @@ media::cast::VideoSenderConfig GetVideoSenderConfig() { video_config.rtp_payload_type = 96; // TODO(miu): The default in cast_defines.h is 100. Should this be 100, and // should receiver.cc's config also be 100? - video_config.target_playout_delay = base::TimeDelta::FromMilliseconds(300); + video_config.max_playout_delay = base::TimeDelta::FromMilliseconds(300); return video_config; } diff --git a/media/cast/test/simulator.cc b/media/cast/test/simulator.cc index fbb36f8..df1c739 100644 --- a/media/cast/test/simulator.cc +++ b/media/cast/test/simulator.cc @@ -219,28 +219,28 @@ void RunSimulation(const base::FilePath& source_path, // Audio sender config. AudioSenderConfig audio_sender_config = GetDefaultAudioSenderConfig(); - audio_sender_config.target_playout_delay = + audio_sender_config.max_playout_delay = base::TimeDelta::FromMilliseconds(kTargetDelay); // Audio receiver config. FrameReceiverConfig audio_receiver_config = GetDefaultAudioReceiverConfig(); audio_receiver_config.rtp_max_delay_ms = - audio_sender_config.target_playout_delay.InMilliseconds(); + audio_sender_config.max_playout_delay.InMilliseconds(); // Video sender config. VideoSenderConfig video_sender_config = GetDefaultVideoSenderConfig(); video_sender_config.max_bitrate = 2500000; video_sender_config.min_bitrate = 2000000; video_sender_config.start_bitrate = 2000000; - video_sender_config.target_playout_delay = + video_sender_config.max_playout_delay = base::TimeDelta::FromMilliseconds(kTargetDelay); // Video receiver config. FrameReceiverConfig video_receiver_config = GetDefaultVideoReceiverConfig(); video_receiver_config.rtp_max_delay_ms = - video_sender_config.target_playout_delay.InMilliseconds(); + video_sender_config.max_playout_delay.InMilliseconds(); // Loopback transport. LoopBackTransport receiver_to_sender(receiver_env); diff --git a/media/cast/test/utility/default_config.cc b/media/cast/test/utility/default_config.cc index ce81eba..2496e71 100644 --- a/media/cast/test/utility/default_config.cc +++ b/media/cast/test/utility/default_config.cc @@ -62,7 +62,7 @@ AudioSenderConfig GetDefaultAudioSenderConfig() { config.channels = recv_config.channels; config.bitrate = kDefaultAudioEncoderBitrate; config.codec = recv_config.codec; - config.target_playout_delay = + config.max_playout_delay = base::TimeDelta::FromMilliseconds(kDefaultRtpMaxDelayMs); return config; } @@ -83,7 +83,7 @@ VideoSenderConfig GetDefaultVideoSenderConfig() { config.max_number_of_video_buffers_used = 1; config.codec = recv_config.codec; config.number_of_encode_threads = 2; - config.target_playout_delay = + config.max_playout_delay = base::TimeDelta::FromMilliseconds(kDefaultRtpMaxDelayMs); return config; } |