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

Unified Diff: chromecast/media/cma/base/mock_frame_consumer.h

Issue 554893003: Introduce some buffering into the cast media pipeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adjust weak pointer management. Created 6 years, 3 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
Index: chromecast/media/cma/base/mock_frame_consumer.h
diff --git a/chromecast/media/cma/base/mock_frame_consumer.h b/chromecast/media/cma/base/mock_frame_consumer.h
new file mode 100644
index 0000000000000000000000000000000000000000..6c84119d159a0644e3d1f43aa905c687e26f529d
--- /dev/null
+++ b/chromecast/media/cma/base/mock_frame_consumer.h
@@ -0,0 +1,69 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMECAST_MEDIA_CMA_BASE_MOCK_FRAME_CONSUMER_H_
+#define CHROMECAST_MEDIA_CMA_BASE_MOCK_FRAME_CONSUMER_H_
+
+#include <vector>
+
+#include "base/callback.h"
+#include "base/macros.h"
+
+namespace media {
+class AudioDecoderConfig;
+class VideoDecoderConfig;
+}
+
+namespace chromecast {
+namespace media {
+class CodedFrameProvider;
+class DecoderBufferBase;
+class FrameGeneratorForTest;
+
+class MockFrameConsumer {
+ public:
+ explicit MockFrameConsumer(CodedFrameProvider* coded_frame_provider);
+ ~MockFrameConsumer();
+
+ void Configure(const std::vector<bool>& delayed_task_pattern,
+ bool last_read_aborted_by_flush,
+ scoped_ptr<FrameGeneratorForTest> frame_generator);
+
+ // Starts consuming frames. Invoke |done_cb| when all the expected frames
+ // have been received.
+ void Start(const base::Closure& done_cb);
+
+ private:
+ void ReadFrame();
+ void OnNewFrame(const scoped_refptr<DecoderBufferBase>& buffer,
+ const ::media::AudioDecoderConfig& audio_config,
+ const ::media::VideoDecoderConfig& video_config);
+
+ void OnFlushCompleted();
+
+ CodedFrameProvider* const coded_frame_provider_;
+
+ base::Closure done_cb_;
+
+ // Parameterization of the frame consumer:
+ // |delayed_task_pattern_| indicates the pattern for fetching frames,
+ // i.e. after receiving a frame, either fetch a frame right away
+ // or wait some time before fetching another frame.
+ // |pattern_idx_| is the current index in the pattern.
+ // |last_read_aborted_by_flush_| indicates whether the last buffer request
+ // should be aborted by a Flush.
+ std::vector<bool> delayed_task_pattern_;
+ size_t pattern_idx_;
+ bool last_read_aborted_by_flush_;
+
+ // Expected results.
+ scoped_ptr<FrameGeneratorForTest> frame_generator_;
+
+ DISALLOW_COPY_AND_ASSIGN(MockFrameConsumer);
+};
+
+} // namespace media
+} // namespace chromecast
+
+#endif // CHROMECAST_MEDIA_CMA_BASE_MOCK_FRAME_CONSUMER_H_
« no previous file with comments | « chromecast/media/cma/base/frame_generator_for_test.cc ('k') | chromecast/media/cma/base/mock_frame_consumer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698