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

Side by Side Diff: services/media/factory_service/media_demux_impl.cc

Issue 1902183002: Motown: Change media type (stream type) representation (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "services/media/factory_service/media_demux_impl.h" 8 #include "services/media/factory_service/media_demux_impl.h"
9 #include "services/media/framework/callback_joiner.h" 9 #include "services/media/framework/callback_joiner.h"
10 #include "services/media/framework/parts/reader_cache.h" 10 #include "services/media/framework/parts/reader_cache.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 base::Bind(&MediaDemuxImpl::OnDemuxInitialized, 64 base::Bind(&MediaDemuxImpl::OnDemuxInitialized,
65 base::Unretained(this), result)); 65 base::Unretained(this), result));
66 }); 66 });
67 } 67 }
68 68
69 MediaDemuxImpl::~MediaDemuxImpl() {} 69 MediaDemuxImpl::~MediaDemuxImpl() {}
70 70
71 void MediaDemuxImpl::OnDemuxInitialized(Result result) { 71 void MediaDemuxImpl::OnDemuxInitialized(Result result) {
72 demux_part_ = graph_.Add(demux_); 72 demux_part_ = graph_.Add(demux_);
73 73
74 auto demux_streams = demux_->streams(); 74 const std::vector<Demux::DemuxStream*>& demux_streams = demux_->streams();
kulakowski 2016/04/19 19:18:22 I'm curious why the move away from auto/auto&/auto
dalesat 2016/04/19 19:47:03 I like auto a lot, but previous reviewers have not
kulakowski 2016/04/20 17:42:37 Makes sense. I would prefer to use it where it is
75 for (auto demux_stream : demux_streams) { 75 for (Demux::DemuxStream* demux_stream : demux_streams) {
76 streams_.push_back(std::unique_ptr<Stream>( 76 streams_.push_back(std::unique_ptr<Stream>(
77 new Stream(demux_part_.output(demux_stream->index()), 77 new Stream(demux_part_.output(demux_stream->index()),
78 demux_stream->stream_type(), &graph_))); 78 demux_stream->stream_type(), &graph_)));
79 } 79 }
80 80
81 graph_.Prepare(); 81 graph_.Prepare();
82 82
83 metadata_publisher_.SendUpdates(); 83 metadata_publisher_.SendUpdates();
84 84
85 init_complete_.Occur(); 85 init_complete_.Occur();
86 } 86 }
87 87
88 void MediaDemuxImpl::Describe(const DescribeCallback& callback) { 88 void MediaDemuxImpl::Describe(const DescribeCallback& callback) {
89 init_complete_.When([this, callback]() { 89 init_complete_.When([this, callback]() {
90 auto result = Array<MediaTypePtr>::New(streams_.size()); 90 Array<MediaTypePtr> result = Array<MediaTypePtr>::New(streams_.size());
91 for (size_t i = 0; i < streams_.size(); i++) { 91 for (size_t i = 0; i < streams_.size(); i++) {
92 MediaSourceStreamDescriptorPtr descriptor = 92 MediaSourceStreamDescriptorPtr descriptor =
93 MediaSourceStreamDescriptor::New(); 93 MediaSourceStreamDescriptor::New();
94 result[i] = streams_[i]->media_type(); 94 result[i] = streams_[i]->media_type();
95 } 95 }
96
96 callback.Run(result.Pass()); 97 callback.Run(result.Pass());
97 }); 98 });
98 } 99 }
99 100
100 void MediaDemuxImpl::GetProducer(uint32_t stream_index, 101 void MediaDemuxImpl::GetProducer(uint32_t stream_index,
101 InterfaceRequest<MediaProducer> producer) { 102 InterfaceRequest<MediaProducer> producer) {
102 DCHECK(init_complete_.occurred()); 103 DCHECK(init_complete_.occurred());
103 104
104 if (stream_index >= streams_.size()) { 105 if (stream_index >= streams_.size()) {
105 return; 106 return;
106 } 107 }
107 108
108 streams_[stream_index]->GetProducer(producer.Pass()); 109 streams_[stream_index]->GetProducer(producer.Pass());
109 } 110 }
110 111
111 void MediaDemuxImpl::GetMetadata(uint64_t version_last_seen, 112 void MediaDemuxImpl::GetMetadata(uint64_t version_last_seen,
112 const GetMetadataCallback& callback) { 113 const GetMetadataCallback& callback) {
113 metadata_publisher_.Get(version_last_seen, callback); 114 metadata_publisher_.Get(version_last_seen, callback);
114 } 115 }
115 116
116 void MediaDemuxImpl::Prime(const PrimeCallback& callback) { 117 void MediaDemuxImpl::Prime(const PrimeCallback& callback) {
117 DCHECK(init_complete_.occurred()); 118 DCHECK(init_complete_.occurred());
118 119
119 std::shared_ptr<CallbackJoiner> callback_joiner = CallbackJoiner::Create(); 120 std::shared_ptr<CallbackJoiner> callback_joiner = CallbackJoiner::Create();
120 121
121 for (auto& stream : streams_) { 122 for (std::unique_ptr<Stream>& stream : streams_) {
122 stream->PrimeConnection(callback_joiner->NewCallback()); 123 stream->PrimeConnection(callback_joiner->NewCallback());
123 } 124 }
124 125
125 callback_joiner->WhenJoined(callback); 126 callback_joiner->WhenJoined(callback);
126 } 127 }
127 128
128 void MediaDemuxImpl::Flush(const FlushCallback& callback) { 129 void MediaDemuxImpl::Flush(const FlushCallback& callback) {
129 DCHECK(init_complete_.occurred()); 130 DCHECK(init_complete_.occurred());
130 131
131 graph_.FlushAllOutputs(demux_part_); 132 graph_.FlushAllOutputs(demux_part_);
132 133
133 std::shared_ptr<CallbackJoiner> callback_joiner = CallbackJoiner::Create(); 134 std::shared_ptr<CallbackJoiner> callback_joiner = CallbackJoiner::Create();
134 135
135 for (auto& stream : streams_) { 136 for (std::unique_ptr<Stream>& stream : streams_) {
136 stream->FlushConnection(callback_joiner->NewCallback()); 137 stream->FlushConnection(callback_joiner->NewCallback());
137 } 138 }
138 139
139 callback_joiner->WhenJoined(callback); 140 callback_joiner->WhenJoined(callback);
140 } 141 }
141 142
142 void MediaDemuxImpl::Seek(int64_t position, const SeekCallback& callback) { 143 void MediaDemuxImpl::Seek(int64_t position, const SeekCallback& callback) {
143 DCHECK(init_complete_.occurred()); 144 DCHECK(init_complete_.occurred());
144 145
145 demux_->Seek(position, [this, callback]() { 146 demux_->Seek(position, [this, callback]() {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 } 183 }
183 184
184 void MediaDemuxImpl::Stream::FlushConnection( 185 void MediaDemuxImpl::Stream::FlushConnection(
185 const MojoProducer::FlushConnectionCallback callback) { 186 const MojoProducer::FlushConnectionCallback callback) {
186 DCHECK(producer_); 187 DCHECK(producer_);
187 producer_->FlushConnection(callback); 188 producer_->FlushConnection(callback);
188 } 189 }
189 190
190 } // namespace media 191 } // namespace media
191 } // namespace mojo 192 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698