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

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

Issue 1945903006: Motown: Move responsibility for binding to MediaFactoryService::Product (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 7 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/logging.h" 5 #include "base/logging.h"
6 #include "mojo/public/cpp/application/connect.h" 6 #include "mojo/public/cpp/application/connect.h"
7 #include "services/media/factory_service/media_player_impl.h" 7 #include "services/media/factory_service/media_player_impl.h"
8 #include "services/media/framework/parts/reader.h" 8 #include "services/media/framework/parts/reader.h"
9 #include "services/media/framework/util/callback_joiner.h" 9 #include "services/media/framework/util/callback_joiner.h"
10 10
11 namespace mojo { 11 namespace mojo {
12 namespace media { 12 namespace media {
13 13
14 // static 14 // static
15 std::shared_ptr<MediaPlayerImpl> MediaPlayerImpl::Create( 15 std::shared_ptr<MediaPlayerImpl> MediaPlayerImpl::Create(
16 InterfaceHandle<SeekingReader> reader, 16 InterfaceHandle<SeekingReader> reader,
17 InterfaceRequest<MediaPlayer> request, 17 InterfaceRequest<MediaPlayer> request,
18 MediaFactoryService* owner) { 18 MediaFactoryService* owner) {
19 return std::shared_ptr<MediaPlayerImpl>( 19 return std::shared_ptr<MediaPlayerImpl>(
20 new MediaPlayerImpl(reader.Pass(), request.Pass(), owner)); 20 new MediaPlayerImpl(reader.Pass(), request.Pass(), owner));
21 } 21 }
22 22
23 MediaPlayerImpl::MediaPlayerImpl(InterfaceHandle<SeekingReader> reader, 23 MediaPlayerImpl::MediaPlayerImpl(InterfaceHandle<SeekingReader> reader,
24 InterfaceRequest<MediaPlayer> request, 24 InterfaceRequest<MediaPlayer> request,
25 MediaFactoryService* owner) 25 MediaFactoryService* owner)
26 : MediaFactoryService::Product(owner), binding_(this, request.Pass()) { 26 : MediaFactoryService::Product<MediaPlayer>(this, request.Pass(), owner) {
27 DCHECK(reader); 27 DCHECK(reader);
28 28
29 status_publisher_.SetCallbackRunner( 29 status_publisher_.SetCallbackRunner(
30 [this](const GetStatusCallback& callback, uint64_t version) { 30 [this](const GetStatusCallback& callback, uint64_t version) {
31 MediaPlayerStatusPtr status = MediaPlayerStatus::New(); 31 MediaPlayerStatusPtr status = MediaPlayerStatus::New();
32 status->state = reported_media_state_; 32 status->state = reported_media_state_;
33 status->timeline_transform = transform_.Clone(); 33 status->timeline_transform = transform_.Clone();
34 status->metadata = metadata_.Clone(); 34 status->metadata = metadata_.Clone();
35 callback.Run(version, status.Pass()); 35 callback.Run(version, status.Pass());
36 }); 36 });
37 37
38 state_ = State::kWaiting; 38 state_ = State::kWaiting;
39 39
40 // Go away when the client is no longer connected.
41 binding_.set_connection_error_handler([this]() { ReleaseFromOwner(); });
42
43 ConnectToService(app()->shell(), "mojo:media_factory", GetProxy(&factory_)); 40 ConnectToService(app()->shell(), "mojo:media_factory", GetProxy(&factory_));
44 41
45 factory_->CreateDemux(reader.Pass(), GetProxy(&demux_)); 42 factory_->CreateDemux(reader.Pass(), GetProxy(&demux_));
46 43
47 HandleDemuxMetadataUpdates(); 44 HandleDemuxMetadataUpdates();
48 45
49 demux_->Describe([this](mojo::Array<MediaTypePtr> stream_types) { 46 demux_->Describe([this](mojo::Array<MediaTypePtr> stream_types) {
50 // Populate streams_ and enable the streams we want. 47 // Populate streams_ and enable the streams we want.
51 std::shared_ptr<CallbackJoiner> callback_joiner = CallbackJoiner::Create(); 48 std::shared_ptr<CallbackJoiner> callback_joiner = CallbackJoiner::Create();
52 49
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 }); 355 });
359 } 356 }
360 357
361 MediaPlayerImpl::Stream::Stream(size_t index, MediaTypePtr media_type) 358 MediaPlayerImpl::Stream::Stream(size_t index, MediaTypePtr media_type)
362 : index_(index), media_type_(media_type.Pass()) {} 359 : index_(index), media_type_(media_type.Pass()) {}
363 360
364 MediaPlayerImpl::Stream::~Stream() {} 361 MediaPlayerImpl::Stream::~Stream() {}
365 362
366 } // namespace media 363 } // namespace media
367 } // namespace mojo 364 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698