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

Unified Diff: services/media/framework/stages/stage_input.h

Issue 1577953002: Motown in-proc streaming framework used to implement media services. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: sync Created 4 years, 11 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 | « services/media/framework/stages/stage.cc ('k') | services/media/framework/stages/stage_input.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/media/framework/stages/stage_input.h
diff --git a/services/media/framework/stages/stage_input.h b/services/media/framework/stages/stage_input.h
new file mode 100644
index 0000000000000000000000000000000000000000..2fe61c64888a2ed28951b19096b91d410a5c08a1
--- /dev/null
+++ b/services/media/framework/stages/stage_input.h
@@ -0,0 +1,83 @@
+// 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.
+
+#ifndef SERVICES_MEDIA_FRAMEWORK_ENGINE_STAGE_INPUT_H_
+#define SERVICES_MEDIA_FRAMEWORK_ENGINE_STAGE_INPUT_H_
+
+#include "services/media/framework/models/demand.h"
+#include "services/media/framework/packet.h"
+
+namespace mojo {
+namespace media {
+
+class Stage;
+class Engine;
+class StageOutput;
+class LpcmStageInput;
+
+// Represents a stage's connector to an adjacent upstream stage.
+class StageInput {
+ public:
+ StageInput();
+
+ ~StageInput();
+
+ // The stage to which this input is connected.
+ Stage* upstream_stage() const { return upstream_stage_; }
+
+ // The index of the output to which this input is connected.
+ uint32_t output_index() const { return output_index_; }
+
+ // Establishes a connection. Called only by the engine.
+ void connect(Stage* upstream_stage, uint32_t output_index);
+
+ // Breaks a connection. Called only by the engine.
+ void disconnect() {
+ upstream_stage_ = nullptr;
+ output_index_ = 0;
+ }
+
+ // Determines whether the input is connected to an output.
+ bool connected() const { return upstream_stage_ != nullptr; }
+
+ // The connected output.
+ StageOutput& mate() const;
+
+ // Prepare to move packets by providing an allocator for the upstream stage
+ // if we have one and indicating whether we require its use.
+ void Prepare(Allocator* allocator, bool must_allocate);
+
+ // Returns the allocator provided by this input.
+ Allocator* allocator() const;
+
+ // Determines whether the input requires the use of its allocator.
+ bool must_allocate() const;
+
+ // A packet supplied from upstream.
+ PacketPtr& packet_from_upstream() { return packet_from_upstream_; }
+
+ // Updates mate's demand. Called only by Stage::Update implementations.
+ void SetDemand(Demand demand, Engine* engine) const;
+
+ // Updates packet_from_upstream. Return value indicates whether the stage for
+ // this input should be added to the supply backlog. Called only by
+ // StageOutput instances.
+ virtual bool SupplyPacketFromOutput(PacketPtr packet);
+
+ // Returns the LPCM specialization if this instance is an LpcmStageInput,
+ // nullptr otherwise.
+ virtual LpcmStageInput* get_lpcm();
+
+ private:
+ Stage* upstream_stage_;
+ uint32_t output_index_;
+ Allocator* allocator_;
+ bool must_allocate_;
+ PacketPtr packet_from_upstream_;
+};
+
+} // namespace media
+} // namespace mojo
+
+#endif // SERVICES_MEDIA_FRAMEWORK_ENGINE_STAGE_INPUT_H_
« no previous file with comments | « services/media/framework/stages/stage.cc ('k') | services/media/framework/stages/stage_input.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698