Index: services/media/framework/stages/stage_input.cc |
diff --git a/services/media/framework/stages/stage_input.cc b/services/media/framework/stages/stage_input.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cf1943651746f7ce36fa8b96bf5a99037637e347 |
--- /dev/null |
+++ b/services/media/framework/stages/stage_input.cc |
@@ -0,0 +1,51 @@ |
+// Copyright 2016 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. |
+ |
+#include "services/media/framework/engine.h" |
+#include "services/media/framework/stages/stage.h" |
+#include "services/media/framework/stages/stage_input.h" |
+ |
+namespace mojo { |
+namespace media { |
+ |
+StageInput::StageInput() : |
+ upstream_stage_(nullptr), |
+ output_index_(0), |
+ allocator_(nullptr), |
+ must_allocate_(false) {} |
+ |
+StageInput::~StageInput() {} |
+ |
+StageOutput& StageInput::mate() const { |
+ DCHECK(upstream_stage_); |
+ DCHECK(output_index_ < upstream_stage_->output_count()); |
+ return upstream_stage_->output(output_index_); |
+} |
+ |
+void StageInput::Prepare(Allocator* allocator, bool must_allocate) { |
+ DCHECK(allocator != nullptr || must_allocate == false); |
+ allocator_ = allocator; |
+ must_allocate_ = must_allocate; |
+} |
+ |
+void StageInput::set_demand(Demand demand, Engine& engine) const { |
+ DCHECK(connected()); |
+ if (mate().update_demand_internal(demand)) { |
+ engine.PushToDemandBacklogUnsafe(upstream_stage()); |
+ } |
+} |
+ |
+bool StageInput::supply_packet_internal(PacketPtr packet) { |
+ DCHECK(packet); |
+ DCHECK(!packet_from_upstream_); |
+ packet_from_upstream_ = std::move(packet); |
+ return true; |
+} |
+ |
+LpcmStageInput* StageInput::get_lpcm() { |
+ return nullptr; |
+} |
+ |
+} // namespace media |
+} // namespace mojo |