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

Unified Diff: services/media/framework/stages/active_sink_stage.cc

Issue 1678433002: Motown: Remove LPCM optimizations, fix prepare, add flush, add ActiveMultistreamSink model/stage (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Sync Created 4 years, 10 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: services/media/framework/stages/active_sink_stage.cc
diff --git a/services/media/framework/stages/active_sink_stage.cc b/services/media/framework/stages/active_sink_stage.cc
index c49b55e0b3ae6052513dbbf22f75b84e2a11825e..9aa618298dfca2ec40911e317b77cc04dd812be0 100644
--- a/services/media/framework/stages/active_sink_stage.cc
+++ b/services/media/framework/stages/active_sink_stage.cc
@@ -7,14 +7,14 @@
namespace mojo {
namespace media {
-ActiveSinkStage::ActiveSinkStage(ActiveSinkPtr sink) : sink_(sink) {
+ActiveSinkStage::ActiveSinkStage(std::shared_ptr<ActiveSink> sink) :
+ sink_(sink) {
DCHECK(sink_);
demand_function_ = [this](Demand demand) {
- DCHECK(update_callback_);
if (sink_demand_ != demand) {
sink_demand_ = demand;
- update_callback_(this);
+ RequestUpdate();
}
};
@@ -23,37 +23,44 @@ ActiveSinkStage::ActiveSinkStage(ActiveSinkPtr sink) : sink_(sink) {
ActiveSinkStage::~ActiveSinkStage() {}
-uint32_t ActiveSinkStage::input_count() const {
+size_t ActiveSinkStage::input_count() const {
return 1;
};
-StageInput& ActiveSinkStage::input(uint32_t index) {
+Input& ActiveSinkStage::input(size_t index) {
DCHECK_EQ(index, 0u);
return input_;
}
-uint32_t ActiveSinkStage::output_count() const {
+size_t ActiveSinkStage::output_count() const {
return 0;
}
-StageOutput& ActiveSinkStage::output(uint32_t index) {
- NOTREACHED();
- static StageOutput result;
- return result;
+Output& ActiveSinkStage::output(size_t index) {
+ CHECK(false) << "output requested from sink";
+ return *(static_cast<Output*>(nullptr));
}
-bool ActiveSinkStage::Prepare(UpdateCallback update_callback) {
- input_.Prepare(sink_->allocator(), sink_->must_allocate());
- update_callback_ = update_callback;
- return true;
+PayloadAllocator* ActiveSinkStage::PrepareInput(size_t index) {
+ DCHECK_EQ(index, 0u);
+ return sink_->allocator();
+}
+
+void ActiveSinkStage::PrepareOutput(
+ size_t index,
+ PayloadAllocator* allocator,
+ const UpstreamCallback& callback) {
+ CHECK(false) << "PrepareOutput called on sink";
}
void ActiveSinkStage::Prime() {
+ DCHECK(sink_);
sink_->Prime();
}
void ActiveSinkStage::Update(Engine* engine) {
DCHECK(engine);
+ DCHECK(sink_);
if (input_.packet_from_upstream()) {
sink_demand_ =
@@ -63,5 +70,18 @@ void ActiveSinkStage::Update(Engine* engine) {
input_.SetDemand(sink_demand_, engine);
}
+void ActiveSinkStage::FlushInput(
+ size_t index,
+ const DownstreamCallback& callback) {
+ DCHECK(sink_);
+ input_.Flush();
+ sink_->Flush();
+ sink_demand_ = Demand::kNegative;
+}
+
+void ActiveSinkStage::FlushOutput(size_t index) {
+ CHECK(false) << "FlushOutput called on sink";
+}
+
} // namespace media
} // namespace mojo
« no previous file with comments | « services/media/framework/stages/active_sink_stage.h ('k') | services/media/framework/stages/active_source_stage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698