Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5123)

Unified Diff: chromecast/media/cma/backend/multizone_backend_unittest.cc

Issue 2074473002: [Chromecast] Aggregate errors in multizone backend test. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: [Chromecast] Aggregate errors in multizone backend test. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromecast/media/cma/backend/multizone_backend_unittest.cc
diff --git a/chromecast/media/cma/backend/multizone_backend_unittest.cc b/chromecast/media/cma/backend/multizone_backend_unittest.cc
index c6248c408ae368dbc9a154d84bd5f95dba7a73d0..c7400bf80786eacb45946998aa275091ee16c19c 100644
--- a/chromecast/media/cma/backend/multizone_backend_unittest.cc
+++ b/chromecast/media/cma/backend/multizone_backend_unittest.cc
@@ -5,6 +5,7 @@
#include <stdint.h>
#include <stdlib.h>
+#include <algorithm>
#include <limits>
#include <memory>
#include <vector>
@@ -42,7 +43,7 @@ const int64_t kPushTimeUs = 2 * kMicrosecondsPerSecond;
const int64_t kStartPts = 0;
const int64_t kRenderingDelayGracePeriodUs = 250 * 1000;
const int64_t kMaxRenderingDelayErrorUs = 200;
-const int kNumEffectsStreams = 3;
+const int kNumEffectsStreams = 1;
void IgnoreEos() {}
@@ -57,6 +58,22 @@ class BufferFeeder : public MediaPipelineBackend::Decoder::Delegate {
void Start();
void Stop();
+ int64_t max_rendering_delay_error_us() {
+ return max_rendering_delay_error_us_;
+ }
+
+ int64_t max_positive_rendering_delay_error_us() {
+ return max_positive_rendering_delay_error_us_;
+ }
+
+ int64_t max_negative_rendering_delay_error_us() {
+ return max_negative_rendering_delay_error_us_;
+ }
+
+ int64_t average_rendering_delay_error_us() {
+ return total_rendering_delay_error_us_ / sample_count_;
+ }
+
private:
void FeedBuffer();
@@ -84,6 +101,11 @@ class BufferFeeder : public MediaPipelineBackend::Decoder::Delegate {
const AudioConfig config_;
const bool effects_only_;
const base::Closure eos_cb_;
+ int64_t max_rendering_delay_error_us_;
+ int64_t max_positive_rendering_delay_error_us_;
+ int64_t max_negative_rendering_delay_error_us_;
+ int64_t total_rendering_delay_error_us_;
+ size_t sample_count_;
bool feeding_completed_;
std::unique_ptr<TaskRunnerImpl> task_runner_;
std::unique_ptr<MediaPipelineBackend> backend_;
@@ -138,6 +160,11 @@ BufferFeeder::BufferFeeder(const AudioConfig& config,
: config_(config),
effects_only_(effects_only),
eos_cb_(eos_cb),
+ max_rendering_delay_error_us_(0),
+ max_positive_rendering_delay_error_us_(0),
+ max_negative_rendering_delay_error_us_(0),
+ total_rendering_delay_error_us_(0),
+ sample_count_(0),
feeding_completed_(false),
task_runner_(new TaskRunnerImpl()),
decoder_(nullptr),
@@ -228,8 +255,17 @@ void BufferFeeder::OnPushBufferComplete(BufferStatus status) {
if (pushed_us_ > kRenderingDelayGracePeriodUs) {
int64_t error =
next_push_playback_timestamp_ - expected_next_push_playback_timestamp;
- EXPECT_LT(std::abs(error), kMaxRenderingDelayErrorUs)
- << "Bad rendering delay after " << pushed_us_ << " us";
+ max_rendering_delay_error_us_ =
+ std::max(max_rendering_delay_error_us_, std::abs(error));
+ total_rendering_delay_error_us_ += std::abs(error);
+ if (error >= 0) {
+ max_positive_rendering_delay_error_us_ =
+ std::max(max_positive_rendering_delay_error_us_, error);
+ } else {
+ max_negative_rendering_delay_error_us_ =
+ std::min(max_negative_rendering_delay_error_us_, error);
+ }
+ sample_count_++;
}
}
pushed_us_ += last_push_length_us_;
@@ -250,7 +286,7 @@ MultizoneBackendTest::~MultizoneBackendTest() {}
void MultizoneBackendTest::Initialize(int sample_rate) {
AudioConfig config;
config.codec = kCodecPCM;
- config.sample_format = kSampleFormatPlanarF32;
+ config.sample_format = kSampleFormatS32;
config.channel_number = 2;
config.bytes_per_channel = 4;
config.samples_per_second = sample_rate;
@@ -291,6 +327,15 @@ void MultizoneBackendTest::OnEndOfStream() {
feeder->Stop();
base::MessageLoop::current()->QuitWhenIdle();
+
+ EXPECT_LT(audio_feeder_->max_rendering_delay_error_us(),
+ kMaxRenderingDelayErrorUs)
+ << "Max positive rendering delay error: "
+ << audio_feeder_->max_positive_rendering_delay_error_us()
+ << "\nMax negative rendering delay error: "
+ << audio_feeder_->max_negative_rendering_delay_error_us()
+ << "\nAverage rendering delay error: "
+ << audio_feeder_->average_rendering_delay_error_us();
}
TEST_P(MultizoneBackendTest, RenderingDelay) {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698