Index: services/media/framework/stages/stage_output.cc |
diff --git a/services/media/framework/stages/stage_output.cc b/services/media/framework/stages/stage_output.cc |
deleted file mode 100644 |
index 34d921f66fb9fbd9454bf11c5182e33c1846656c..0000000000000000000000000000000000000000 |
--- a/services/media/framework/stages/stage_output.cc |
+++ /dev/null |
@@ -1,122 +0,0 @@ |
-// 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_output.h" |
- |
-namespace mojo { |
-namespace media { |
- |
-StageOutput::StageOutput() : |
- downstream_stage_(nullptr), |
- input_index_(0), |
- demand_(Demand::kNegative), |
- copy_allocator_(nullptr) {} |
- |
-StageOutput::~StageOutput() {} |
- |
-void StageOutput::connect(Stage* downstream_stage, uint32_t input_index) { |
- DCHECK(downstream_stage); |
- DCHECK(input_index < downstream_stage->input_count()); |
- DCHECK(downstream_stage_ == nullptr); |
- downstream_stage_ = downstream_stage; |
- input_index_ = input_index; |
-} |
- |
-StageInput& StageOutput::mate() const { |
- DCHECK(downstream_stage_); |
- DCHECK(input_index_ < downstream_stage_->input_count()); |
- return downstream_stage_->input(input_index_); |
-} |
- |
-Allocator* StageOutput::Prepare(bool can_accept_allocator) { |
- DCHECK(connected()); |
- StageInput& mate = this->mate(); |
- copy_allocator_ = nullptr; |
- |
- if (can_accept_allocator) { |
- // We can use an allocator. Use our mate's allocator, if it has one. |
- return mate.allocator(); |
- } else if (mate.must_allocate()) { |
- // We can't use an allocator, but our mate needs us to. We'll need to copy |
- // every packet. |
- copy_allocator_ = mate.allocator(); |
- DCHECK(copy_allocator_); |
- return nullptr; |
- } else { |
- // We can't use an allocator, and our mate doesn't need us to. |
- return nullptr; |
- } |
-} |
- |
-Demand StageOutput::demand() const { |
- DCHECK(connected()); |
- |
- // Return negative demand if mate() already has a packet. |
- // We check demand_ here to possibly avoid the second check. |
- if (demand_ == Demand::kNegative || mate().packet_from_upstream()) { |
- return Demand::kNegative; |
- } |
- |
- return demand_; |
-} |
- |
-void StageOutput::SupplyPacket(PacketPtr packet, Engine* engine) const { |
- DCHECK(packet); |
- DCHECK(engine); |
- DCHECK(connected()); |
- |
- if (copy_allocator_ != nullptr) { |
- // Need to copy the packet due to an allocation conflict. |
- uint64_t size = packet->size(); |
- void *buffer; |
- |
- if (size == 0) { |
- buffer = nullptr; |
- } else { |
- buffer = copy_allocator_->AllocatePayloadBuffer(size); |
- if (buffer == nullptr) { |
- // Starved for buffer space. |
- return; |
- } |
- memcpy(buffer, packet->payload(), size); |
- } |
- |
- packet = Packet::Create( |
- packet->presentation_time(), |
- packet->duration(), |
- packet->end_of_stream(), |
- size, |
- buffer, |
- copy_allocator_); |
- } |
- |
- SupplyPacketInternal(std::move(packet), engine); |
-} |
- |
-bool StageOutput::UpdateDemand(Demand demand) { |
- if (demand_ == demand) { |
- return false; |
- } |
- demand_ = demand; |
- return true; |
-} |
- |
-LpcmStageOutput* StageOutput::get_lpcm() { |
- return nullptr; |
-} |
- |
-void StageOutput::SupplyPacketInternal(PacketPtr packet, Engine* engine) |
- const { |
- DCHECK(packet); |
- DCHECK(engine); |
- DCHECK(connected()); |
- if (mate().SupplyPacketFromOutput(std::move(packet))) { |
- engine->PushToSupplyBacklogUnsafe(downstream_stage()); |
- } |
-} |
- |
-} // namespace media |
-} // namespace mojo |