Index: services/media/factory_service/media_sink_impl.cc |
diff --git a/services/media/factory_service/media_sink_impl.cc b/services/media/factory_service/media_sink_impl.cc |
index b32121e3c33114f6f8dda127dcfbf5f5f44c9e7e..7ac4bf337e3a5512236d6671a9c07d7c8b8b8a81 100644 |
--- a/services/media/factory_service/media_sink_impl.cc |
+++ b/services/media/factory_service/media_sink_impl.cc |
@@ -19,17 +19,13 @@ std::shared_ptr<MediaSinkImpl> MediaSinkImpl::Create( |
InterfaceRequest<MediaSink> request, |
MediaFactoryService* owner) { |
return std::shared_ptr<MediaSinkImpl>(new MediaSinkImpl( |
- destination_url, |
- media_type.Pass(), |
- request.Pass(), |
- owner)); |
+ destination_url, media_type.Pass(), request.Pass(), owner)); |
} |
-MediaSinkImpl::MediaSinkImpl( |
- const String& destination_url, |
- MediaTypePtr media_type, |
- InterfaceRequest<MediaSink> request, |
- MediaFactoryService* owner) |
+MediaSinkImpl::MediaSinkImpl(const String& destination_url, |
+ MediaTypePtr media_type, |
+ InterfaceRequest<MediaSink> request, |
+ MediaFactoryService* owner) |
: MediaFactoryService::Product(owner), |
binding_(this, request.Pass()), |
consumer_(MojoConsumer::Create()), |
@@ -38,9 +34,7 @@ MediaSinkImpl::MediaSinkImpl( |
DCHECK(media_type); |
// Go away when the client is no longer connected. |
- binding_.set_connection_error_handler([this]() { |
- ReleaseFromOwner(); |
- }); |
+ binding_.set_connection_error_handler([this]() { ReleaseFromOwner(); }); |
// TODO(dalesat): Support file and network urls. |
// TODO(dalesat): Support mojo services in a reasonable way. |
@@ -65,14 +59,13 @@ MediaSinkImpl::MediaSinkImpl( |
}); |
}); |
- producer_->SetStatusCallback( |
- [this](MediaState state) { |
- producer_state_ = state; |
- StatusUpdated(); |
- if (state == MediaState::ENDED) { |
- Pause(); |
- } |
- }); |
+ producer_->SetStatusCallback([this](MediaState state) { |
+ producer_state_ = state; |
+ StatusUpdated(); |
+ if (state == MediaState::ENDED) { |
+ Pause(); |
+ } |
+ }); |
if (destination_url != "mojo:audio_server") { |
LOG(ERROR) << "mojo:audio_server is the only supported destination"; |
@@ -83,68 +76,63 @@ MediaSinkImpl::MediaSinkImpl( |
} |
// TODO(dalesat): Once we have c++14, get rid of this shared pointer hack. |
- std::shared_ptr<StreamType> |
- captured_stream_type(Convert(media_type).release()); |
+ std::shared_ptr<StreamType> captured_stream_type( |
+ Convert(media_type).release()); |
// An AudioTrackController knows how to talk to an audio track, interrogating |
// it for supported stream types and configuring it for the chosen stream |
// type. |
controller_.reset(new AudioTrackController(destination_url, app())); |
- controller_->GetSupportedMediaTypes( |
- [this, consumer_ref, producer_ref, captured_stream_type] |
- (std::unique_ptr<std::vector<std::unique_ptr<StreamTypeSet>>> |
+ controller_->GetSupportedMediaTypes([this, consumer_ref, producer_ref, |
+ captured_stream_type]( |
+ std::unique_ptr<std::vector<std::unique_ptr<StreamTypeSet>>> |
supported_stream_types) { |
- std::unique_ptr<StreamType> producer_stream_type; |
- |
- // Add transforms to the pipeline to convert from stream_type to a |
- // type supported by the track. |
- OutputRef out = consumer_ref.output(); |
- bool result = BuildConversionPipeline( |
- *captured_stream_type, |
- *supported_stream_types, |
- &graph_, |
- &out, |
- &producer_stream_type); |
- if (!result) { |
- // Failed to build conversion pipeline. |
- producer_state_ = MediaState::FAULT; |
- StatusUpdated(); |
- return; |
- } |
- |
- graph_.ConnectOutputToPart(out, producer_ref); |
- |
- switch (producer_stream_type->scheme()) { |
- case StreamType::Scheme::kLpcm: |
- frames_per_second_ = |
- producer_stream_type->lpcm()->frames_per_second(); |
- break; |
- case StreamType::Scheme::kCompressedAudio: |
- frames_per_second_ = |
- producer_stream_type->compressed_audio()->frames_per_second(); |
- break; |
- default: |
- // Unsupported producer stream type. |
- producer_state_ = MediaState::FAULT; |
- StatusUpdated(); |
- return; |
- } |
- |
- controller_->Configure( |
- std::move(producer_stream_type), |
- [this] |
- (MediaConsumerPtr consumer, RateControlPtr rate_control) { |
- DCHECK(consumer); |
- DCHECK(rate_control); |
- rate_control_ = rate_control.Pass(); |
- producer_->Connect(consumer.Pass(), [this]() { |
- graph_.Prepare(); |
- ready_.Occur(); |
- MaybeSetRate(); |
- }); |
- }); |
- }); |
+ std::unique_ptr<StreamType> producer_stream_type; |
+ |
+ // Add transforms to the pipeline to convert from stream_type to a |
+ // type supported by the track. |
+ OutputRef out = consumer_ref.output(); |
+ bool result = |
+ BuildConversionPipeline(*captured_stream_type, *supported_stream_types, |
+ &graph_, &out, &producer_stream_type); |
+ if (!result) { |
+ // Failed to build conversion pipeline. |
+ producer_state_ = MediaState::FAULT; |
+ StatusUpdated(); |
+ return; |
+ } |
+ |
+ graph_.ConnectOutputToPart(out, producer_ref); |
+ |
+ switch (producer_stream_type->scheme()) { |
+ case StreamType::Scheme::kLpcm: |
+ frames_per_second_ = producer_stream_type->lpcm()->frames_per_second(); |
+ break; |
+ case StreamType::Scheme::kCompressedAudio: |
+ frames_per_second_ = |
+ producer_stream_type->compressed_audio()->frames_per_second(); |
+ break; |
+ default: |
+ // Unsupported producer stream type. |
+ producer_state_ = MediaState::FAULT; |
+ StatusUpdated(); |
+ return; |
+ } |
+ |
+ controller_->Configure( |
+ std::move(producer_stream_type), |
+ [this](MediaConsumerPtr consumer, RateControlPtr rate_control) { |
+ DCHECK(consumer); |
+ DCHECK(rate_control); |
+ rate_control_ = rate_control.Pass(); |
+ producer_->Connect(consumer.Pass(), [this]() { |
+ graph_.Prepare(); |
+ ready_.Occur(); |
+ MaybeSetRate(); |
+ }); |
+ }); |
+ }); |
} |
MediaSinkImpl::~MediaSinkImpl() {} |
@@ -167,9 +155,8 @@ void MediaSinkImpl::GetConsumer(InterfaceRequest<MediaConsumer> consumer) { |
consumer_->AddBinding(consumer.Pass()); |
} |
-void MediaSinkImpl::GetStatus( |
- uint64_t version_last_seen, |
- const GetStatusCallback& callback) { |
+void MediaSinkImpl::GetStatus(uint64_t version_last_seen, |
+ const GetStatusCallback& callback) { |
if (version_last_seen < status_version_) { |
RunStatusCallback(callback); |
} else { |
@@ -197,9 +184,9 @@ void MediaSinkImpl::StatusUpdated() { |
void MediaSinkImpl::RunStatusCallback(const GetStatusCallback& callback) const { |
MediaSinkStatusPtr status = MediaSinkStatus::New(); |
- status->state = (producer_state_ == MediaState::PAUSED && rate_ != 0.0) ? |
- MediaState::PLAYING : |
- producer_state_; |
+ status->state = (producer_state_ == MediaState::PAUSED && rate_ != 0.0) |
+ ? MediaState::PLAYING |
+ : producer_state_; |
status->timeline_transform = status_transform_.Clone(); |
callback.Run(status_version_, status.Pass()); |
} |
@@ -216,17 +203,13 @@ void MediaSinkImpl::MaybeSetRate() { |
static_cast<uint32_t>(frames_per_second_ * target_rate_), 1); |
// Local time rate in seconds_per_tick. |
- LinearTransform::Ratio local_seconds_per_tick( |
- LocalDuration::period::num, |
- LocalDuration::period::den); |
+ LinearTransform::Ratio local_seconds_per_tick(LocalDuration::period::num, |
+ LocalDuration::period::den); |
// Desired rate in frames per local tick. |
LinearTransform::Ratio rate_frames_per_tick; |
- bool success = |
- LinearTransform::Ratio::Compose( |
- local_seconds_per_tick, |
- rate_frames_per_second, |
- &rate_frames_per_tick); |
+ bool success = LinearTransform::Ratio::Compose( |
+ local_seconds_per_tick, rate_frames_per_second, &rate_frames_per_tick); |
DCHECK(success) |
<< "LinearTransform::Ratio::Compose reports loss of precision"; |
@@ -234,13 +217,12 @@ void MediaSinkImpl::MaybeSetRate() { |
// For now, it's hard-coded to be 30ms in the future. |
// The local time when we want the rate to change. |
int64_t start_local_time = |
- (LocalClock::now().time_since_epoch() + std::chrono::milliseconds(30)). |
- count(); |
+ (LocalClock::now().time_since_epoch() + std::chrono::milliseconds(30)) |
+ .count(); |
// The media time corresponding to start_local_time. |
int64_t start_media_time; |
- if (flushed_ && |
- producer_->GetFirstPtsSinceFlush() != Packet::kUnknownPts) { |
+ if (flushed_ && producer_->GetFirstPtsSinceFlush() != Packet::kUnknownPts) { |
// We're getting started initially or after a flush/prime, so the media |
// time corresponding to start_local_time should be the PTS of |
// the first packet. |
@@ -272,10 +254,9 @@ void MediaSinkImpl::MaybeSetRate() { |
// Get the frame rate in frames per local tick. |
LinearTransform::Ratio frame_rate_frames_per_second(frames_per_second_, 1); |
LinearTransform::Ratio frame_rate_frames_per_tick; |
- success = LinearTransform::Ratio::Compose( |
- local_seconds_per_tick, |
- frame_rate_frames_per_second, |
- &frame_rate_frames_per_tick); |
+ success = LinearTransform::Ratio::Compose(local_seconds_per_tick, |
+ frame_rate_frames_per_second, |
+ &frame_rate_frames_per_tick); |
DCHECK(success) |
<< "LinearTransform::Ratio::Compose reports loss of precision"; |
@@ -289,8 +270,7 @@ void MediaSinkImpl::MaybeSetRate() { |
// Translate the current transform quad so the presentation time units |
// are the same as the local time units. |
success = local_to_presentation.DoReverseTransform( |
- start_media_time, |
- &status_transform_->quad->reference_offset); |
+ start_media_time, &status_transform_->quad->reference_offset); |
DCHECK(success) |
<< "LinearTransform::DoReverseTransform reports loss of precision"; |
status_transform_->quad->target_offset = start_local_time; |
@@ -303,13 +283,12 @@ void MediaSinkImpl::MaybeSetRate() { |
status_transform_->quad->reference_delta = |
static_cast<int32_t>(presentation_delta); |
status_transform_->quad->target_delta = rate_frames_per_tick.denominator; |
- LinearTransform::Ratio::Reduce( |
- &status_transform_->quad->reference_delta, |
- &status_transform_->quad->target_delta); |
+ LinearTransform::Ratio::Reduce(&status_transform_->quad->reference_delta, |
+ &status_transform_->quad->target_delta); |
rate_ = target_rate_; |
StatusUpdated(); |
} |
-} // namespace media |
-} // namespace mojo |
+} // namespace media |
+} // namespace mojo |