| Index: services/media/factory_service/media_player_impl.h
|
| diff --git a/services/media/factory_service/media_player_impl.h b/services/media/factory_service/media_player_impl.h
|
| index d9b5be879db3460633da38fe873d34d1844ffd69..6ee10616d09913bb012ff42c0d3e35b988aba4aa 100644
|
| --- a/services/media/factory_service/media_player_impl.h
|
| +++ b/services/media/factory_service/media_player_impl.h
|
| @@ -15,6 +15,7 @@
|
| #include "mojo/services/media/common/interfaces/media_transport.mojom.h"
|
| #include "mojo/services/media/control/interfaces/media_factory.mojom.h"
|
| #include "mojo/services/media/core/interfaces/seeking_reader.mojom.h"
|
| +#include "mojo/services/media/core/interfaces/timeline_controller.mojom.h"
|
| #include "services/media/common/mojo_publisher.h"
|
| #include "services/media/factory_service/factory_service.h"
|
| #include "services/media/framework/util/callback_joiner.h"
|
| @@ -54,16 +55,13 @@ class MediaPlayerImpl : public MediaFactoryService::Product<MediaPlayer>,
|
| };
|
|
|
| struct Stream {
|
| - Stream(size_t index, MediaTypePtr media_type);
|
| + Stream();
|
| ~Stream();
|
| - size_t index_;
|
| - bool enabled_ = false;
|
| - bool end_of_stream_ = false;
|
| - MediaTypePtr media_type_;
|
| + // TODO(dalesat): Have the sink enlist the decoder.
|
| MediaTypeConverterPtr decoder_;
|
| MediaSinkPtr sink_;
|
| - MediaTimelineControlSitePtr timeline_control_site_;
|
| - TimelineConsumerPtr timeline_consumer_;
|
| + // The following fields are just temporaries used to solve lambda capture
|
| + // problems.
|
| MediaProducerPtr encoded_producer_;
|
| MediaProducerPtr decoded_producer_;
|
| };
|
| @@ -81,25 +79,15 @@ class MediaPlayerImpl : public MediaFactoryService::Product<MediaPlayer>,
|
| // Handles seeking in paused state with flushed pipeline.
|
| void WhenFlushedAndSeeking();
|
|
|
| - // Sets the timeline transforms on all the sinks. transform_subject_time_ is
|
| - // used for the subject_time, and the effective_reference_time is now plus an
|
| - // epsilon.
|
| - void SetSinkTimelineTransforms(uint32_t reference_delta,
|
| - uint32_t subject_delta);
|
| -
|
| - // Sets the timeline transforms on all the sinks.
|
| - void SetSinkTimelineTransforms(int64_t subject_time,
|
| - uint32_t reference_delta,
|
| - uint32_t subject_delta,
|
| - int64_t effective_reference_time,
|
| - int64_t effective_subject_time);
|
| -
|
| - // Determines if all the enabled sinks have reached end-of-stream. Returns
|
| - // false if there are no enabled streams.
|
| - bool AllSinksAtEndOfStream();
|
| + // Sets the timeline transform. transform_subject_time_ is used for the
|
| + // subject_time, and the effective_reference_time is now plus
|
| + // kMinimumLeadTime.
|
| + void SetTimelineTransform(uint32_t reference_delta, uint32_t subject_delta);
|
|
|
| // Prepares a stream.
|
| void PrepareStream(Stream* stream,
|
| + size_t index,
|
| + const MediaTypePtr& input_media_type,
|
| const String& url,
|
| const std::function<void()>& callback);
|
|
|
| @@ -115,19 +103,22 @@ class MediaPlayerImpl : public MediaFactoryService::Product<MediaPlayer>,
|
| uint64_t version = MediaDemux::kInitialMetadata,
|
| MediaMetadataPtr metadata = nullptr);
|
|
|
| - // Handles a status update from a control site. When called with the default
|
| + // Handles a status update from the control site. When called with the default
|
| // argument values, initiates control site. status updates.
|
| void HandleTimelineControlSiteStatusUpdates(
|
| - Stream* stream,
|
| uint64_t version = MediaTimelineControlSite::kInitialStatus,
|
| MediaTimelineControlSiteStatusPtr status = nullptr);
|
|
|
| MediaFactoryPtr factory_;
|
| MediaDemuxPtr demux_;
|
| + MediaTimelineControllerPtr timeline_controller_;
|
| + MediaTimelineControlSitePtr timeline_control_site_;
|
| + TimelineConsumerPtr timeline_consumer_;
|
| std::vector<std::unique_ptr<Stream>> streams_;
|
| State state_ = State::kWaiting;
|
| State target_state_ = State::kPaused;
|
| bool flushed_ = true;
|
| + bool end_of_stream_ = false;
|
| int64_t target_position_ = kUnspecifiedTime;
|
| int64_t transform_subject_time_ = kUnspecifiedTime;
|
| TimelineFunction timeline_function_;
|
|
|