Index: services/media/factory_service/media_player_impl.cc |
diff --git a/services/media/factory_service/media_player_impl.cc b/services/media/factory_service/media_player_impl.cc |
index d2bc4e4ef66da22f0a9b203c4451f39149c760be..886dee1635ea89638c9d34b2a83e9bec26f76bea 100644 |
--- a/services/media/factory_service/media_player_impl.cc |
+++ b/services/media/factory_service/media_player_impl.cc |
@@ -20,62 +20,57 @@ std::shared_ptr<MediaPlayerImpl> MediaPlayerImpl::Create( |
new MediaPlayerImpl(origin_url, request.Pass(), owner)); |
} |
-MediaPlayerImpl::MediaPlayerImpl( |
- const String& origin_url, |
- InterfaceRequest<MediaPlayer> request, |
- MediaFactoryService* owner) |
- : MediaFactoryService::Product(owner), |
- binding_(this, request.Pass()) { |
+MediaPlayerImpl::MediaPlayerImpl(const String& origin_url, |
+ InterfaceRequest<MediaPlayer> request, |
+ MediaFactoryService* owner) |
+ : MediaFactoryService::Product(owner), binding_(this, request.Pass()) { |
DCHECK(origin_url); |
target_state_.SetWithConsequences(MediaState::PAUSED); |
target_position_.SetWithConsequences(kNotSeeking); |
// Go away when the client is no longer connected. |
- binding_.set_connection_error_handler([this]() { |
- ReleaseFromOwner(); |
- }); |
+ binding_.set_connection_error_handler([this]() { ReleaseFromOwner(); }); |
app()->ConnectToService("mojo:media_factory", &factory_); |
- factory_->CreateSource( |
- origin_url, |
- nullptr, // allowed_media_types |
- GetProxy(&source_)); |
+ factory_->CreateSource(origin_url, |
+ nullptr, // allowed_media_types |
+ GetProxy(&source_)); |
HandleSourceStatusUpdates(); |
source_->GetStreams( |
[this](mojo::Array<MediaSourceStreamDescriptorPtr> descriptors) { |
- // Populate streams_ and enable the streams we want. |
- std::vector<Event> stream_prepared_events; |
- |
- for (MediaSourceStreamDescriptorPtr& descriptor : descriptors) { |
- streams_.push_back(std::unique_ptr<Stream>(new Stream())); |
- Stream& stream = *streams_.back(); |
- stream.descriptor_ = descriptor.Pass(); |
- switch (stream.descriptor_->media_type->scheme) { |
- case MediaTypeScheme::COMPRESSED_AUDIO: |
- case MediaTypeScheme::LPCM: |
- stream.enabled_ = true; |
- stream_prepared_events.push_back( |
- PrepareStream(streams_.back(), "mojo:audio_server")); |
- break; |
- // TODO(dalesat): Enable other stream types. |
- default: |
- break; |
- } |
- } |
- |
- event_ = Event::All(stream_prepared_events).When([this]() { |
- // The enabled streams are prepared. Prepare the source. |
- factory_.reset(); |
- source_->Prepare([this]() { |
- SetReportedMediaState(MediaState::PAUSED); |
- WhenPaused(); |
+ // Populate streams_ and enable the streams we want. |
+ std::vector<Event> stream_prepared_events; |
+ |
+ for (MediaSourceStreamDescriptorPtr& descriptor : descriptors) { |
+ streams_.push_back(std::unique_ptr<Stream>(new Stream())); |
+ Stream& stream = *streams_.back(); |
+ stream.descriptor_ = descriptor.Pass(); |
+ switch (stream.descriptor_->media_type->scheme) { |
+ case MediaTypeScheme::COMPRESSED_AUDIO: |
+ case MediaTypeScheme::LPCM: |
+ stream.enabled_ = true; |
+ stream_prepared_events.push_back( |
+ PrepareStream(streams_.back(), "mojo:audio_server")); |
+ break; |
+ // TODO(dalesat): Enable other stream types. |
+ default: |
+ break; |
+ } |
+ } |
+ |
+ event_ = Event::All(stream_prepared_events).When([this]() { |
+ // The enabled streams are prepared. Prepare the source. |
+ factory_.reset(); |
+ source_->Prepare([this]() { |
+ SetReportedMediaState(MediaState::PAUSED); |
+ WhenPaused(); |
+ }); |
+ }); |
}); |
- }); |
- }); |
} |
MediaPlayerImpl::~MediaPlayerImpl() { |
@@ -86,11 +81,9 @@ void MediaPlayerImpl::WhenPaused() { |
Event seek_requested = target_position_.BecomesOtherThan(kNotSeeking); |
Event play_requested = target_state_.Becomes(MediaState::PLAYING); |
- event_ = Event::First({ seek_requested, play_requested }); |
+ event_ = Event::First({seek_requested, play_requested}); |
- seek_requested.When([this]() { |
- WhenPausedAndSeeking(); |
- }); |
+ seek_requested.When([this]() { WhenPausedAndSeeking(); }); |
play_requested.When([this]() { |
flushed_ = false; |
@@ -110,7 +103,7 @@ void MediaPlayerImpl::WhenPlaying() { |
Event pause_requested = target_state_.Becomes(MediaState::PAUSED); |
Event sinks_ended = AllSinkStatesBecome(MediaState::ENDED); |
- event_ = Event::First({ seek_requested, pause_requested, sinks_ended }); |
+ event_ = Event::First({seek_requested, pause_requested, sinks_ended}); |
seek_requested.When([this]() { |
event_ = ChangeSinkStates(MediaState::PAUSED).When([this]() { |
@@ -183,9 +176,8 @@ void MediaPlayerImpl::SetReportedMediaState(MediaState media_state) { |
} |
} |
-void MediaPlayerImpl::GetStatus( |
- uint64_t version_last_seen, |
- const GetStatusCallback& callback) { |
+void MediaPlayerImpl::GetStatus(uint64_t version_last_seen, |
+ const GetStatusCallback& callback) { |
if (version_last_seen < status_version_) { |
RunStatusCallback(callback); |
} else { |
@@ -206,95 +198,77 @@ void MediaPlayerImpl::Seek(int64_t position) { |
target_position_.SetWithConsequences(position); |
} |
-Event MediaPlayerImpl::PrepareStream( |
- const std::unique_ptr<Stream>& stream, |
- const String& url) { |
+Event MediaPlayerImpl::PrepareStream(const std::unique_ptr<Stream>& stream, |
+ const String& url) { |
DCHECK(factory_); |
Event event = Event::Create(); |
- source_->GetProducer( |
- stream->descriptor_->index, |
- GetProxy(&stream->encoded_producer_)); |
+ source_->GetProducer(stream->descriptor_->index, |
+ GetProxy(&stream->encoded_producer_)); |
if (stream->descriptor_->media_type->scheme == |
MediaTypeScheme::COMPRESSED_AUDIO) { |
// Compressed audio. Insert a decoder in front of the sink. The sink would |
// add its own internal decoder, but we want to test the decoder. |
- factory_->CreateDecoder( |
- stream->descriptor_->media_type.Clone(), |
- GetProxy(&stream->decoder_)); |
+ factory_->CreateDecoder(stream->descriptor_->media_type.Clone(), |
+ GetProxy(&stream->decoder_)); |
MediaConsumerPtr decoder_consumer; |
stream->decoder_->GetConsumer(GetProxy(&decoder_consumer)); |
Event connect_complete = Event::Create(); |
- stream->encoded_producer_->Connect( |
- decoder_consumer.Pass(), |
- [&stream, connect_complete]() { |
- stream->encoded_producer_.reset(); |
- connect_complete.Occur(); |
- }); |
+ stream->encoded_producer_->Connect(decoder_consumer.Pass(), |
+ [&stream, connect_complete]() { |
+ stream->encoded_producer_.reset(); |
+ connect_complete.Occur(); |
+ }); |
stream->decoder_->GetOutputType( |
[this, &stream, url, event](MediaTypePtr output_type) { |
stream->decoder_->GetProducer(GetProxy(&stream->decoded_producer_)); |
- CreateSink( |
- stream, |
- output_type, |
- url, |
- event); |
+ CreateSink(stream, output_type, url, event); |
}); |
- return Event::All({ connect_complete, event }); |
+ return Event::All({connect_complete, event}); |
} else { |
// Uncompressed audio. Connect the source stream directly to the sink. This |
// would work for compressed audio as well (the sink would decode), but we |
// want to test the decoder. |
DCHECK(stream->descriptor_->media_type->scheme == MediaTypeScheme::LPCM); |
stream->decoded_producer_ = stream->encoded_producer_.Pass(); |
- CreateSink( |
- stream, |
- stream->descriptor_->media_type, |
- url, |
- event); |
+ CreateSink(stream, stream->descriptor_->media_type, url, event); |
return event; |
} |
} |
-void MediaPlayerImpl::CreateSink( |
- const std::unique_ptr<Stream>& stream, |
- const MediaTypePtr& input_media_type, |
- const String& url, |
- Event event) { |
+void MediaPlayerImpl::CreateSink(const std::unique_ptr<Stream>& stream, |
+ const MediaTypePtr& input_media_type, |
+ const String& url, |
+ Event event) { |
DCHECK(input_media_type); |
DCHECK(stream->decoded_producer_); |
DCHECK(factory_); |
- factory_->CreateSink( |
- url, |
- input_media_type.Clone(), |
- GetProxy(&stream->sink_)); |
+ factory_->CreateSink(url, input_media_type.Clone(), GetProxy(&stream->sink_)); |
MediaConsumerPtr consumer; |
stream->sink_->GetConsumer(GetProxy(&consumer)); |
- stream->decoded_producer_->Connect( |
- consumer.Pass(), |
- [this, event, &stream]() { |
- stream->decoded_producer_.reset(); |
+ stream->decoded_producer_->Connect(consumer.Pass(), [this, event, &stream]() { |
+ stream->decoded_producer_.reset(); |
- DCHECK(stream->state_ == MediaState::UNPREPARED); |
- DCHECK(reported_media_state_ == MediaState::UNPREPARED || |
- reported_media_state_ == MediaState::FAULT); |
+ DCHECK(stream->state_ == MediaState::UNPREPARED); |
+ DCHECK(reported_media_state_ == MediaState::UNPREPARED || |
+ reported_media_state_ == MediaState::FAULT); |
- stream->state_.SetWithConsequences(MediaState::PAUSED); |
+ stream->state_.SetWithConsequences(MediaState::PAUSED); |
- HandleSinkStatusUpdates(stream); |
+ HandleSinkStatusUpdates(stream); |
- event.Occur(); |
- }); |
+ event.Occur(); |
+ }); |
} |
void MediaPlayerImpl::StatusUpdated() { |
@@ -305,8 +279,8 @@ void MediaPlayerImpl::StatusUpdated() { |
} |
} |
-void MediaPlayerImpl::RunStatusCallback(const GetStatusCallback& callback) |
- const { |
+void MediaPlayerImpl::RunStatusCallback( |
+ const GetStatusCallback& callback) const { |
MediaPlayerStatusPtr status = MediaPlayerStatus::New(); |
status->state = reported_media_state_; |
status->timeline_transform = transform_.Clone(); |
@@ -314,19 +288,17 @@ void MediaPlayerImpl::RunStatusCallback(const GetStatusCallback& callback) |
callback.Run(status_version_, status.Pass()); |
} |
-void MediaPlayerImpl::HandleSourceStatusUpdates( |
- uint64_t version, |
- MediaSourceStatusPtr status) { |
+void MediaPlayerImpl::HandleSourceStatusUpdates(uint64_t version, |
+ MediaSourceStatusPtr status) { |
if (status) { |
metadata_ = status->metadata.Pass(); |
StatusUpdated(); |
} |
- source_->GetStatus( |
- version, |
- [this](uint64_t version, MediaSourceStatusPtr status) { |
- HandleSourceStatusUpdates(version, status.Pass()); |
- }); |
+ source_->GetStatus(version, |
+ [this](uint64_t version, MediaSourceStatusPtr status) { |
+ HandleSourceStatusUpdates(version, status.Pass()); |
+ }); |
} |
void MediaPlayerImpl::HandleSinkStatusUpdates( |
@@ -342,8 +314,7 @@ void MediaPlayerImpl::HandleSinkStatusUpdates( |
} |
stream->sink_->GetStatus( |
- version, |
- [this, &stream](uint64_t version, MediaSinkStatusPtr status) { |
+ version, [this, &stream](uint64_t version, MediaSinkStatusPtr status) { |
HandleSinkStatusUpdates(stream, version, status.Pass()); |
}); |
} |
@@ -354,5 +325,5 @@ MediaPlayerImpl::Stream::Stream() { |
MediaPlayerImpl::Stream::~Stream() {} |
-} // namespace media |
-} // namespace mojo |
+} // namespace media |
+} // namespace mojo |