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

Side by Side Diff: media/mojo/services/mojo_renderer_service.cc

Issue 2640003002: Implement MojoAudioRendererSink and use it in UtilityMojoMediaClient (Closed)
Patch Set: Make sure to stop the audio sink. Also unbind from the audio device thread Created 3 years, 11 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "media/mojo/services/mojo_renderer_service.h" 5 #include "media/mojo/services/mojo_renderer_service.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/optional.h" 11 #include "base/optional.h"
12 #include "media/base/audio_renderer_sink.h" 12 #include "media/base/audio_renderer_sink.h"
13 #include "media/base/content_decryption_module.h" 13 #include "media/base/content_decryption_module.h"
14 #include "media/base/media_url_demuxer.h" 14 #include "media/base/media_url_demuxer.h"
15 #include "media/base/renderer.h" 15 #include "media/base/renderer.h"
16 #include "media/base/video_renderer_sink.h" 16 #include "media/base/video_renderer_sink.h"
17 #include "media/mojo/services/demuxer_stream_provider_shim.h" 17 #include "media/mojo/services/demuxer_stream_provider_shim.h"
18 #include "media/mojo/services/mojo_audio_renderer_sink_adapter.h"
18 #include "media/mojo/services/mojo_cdm_service_context.h" 19 #include "media/mojo/services/mojo_cdm_service_context.h"
19 #include "media/mojo/services/mojo_video_renderer_sink_adapter.h" 20 #include "media/mojo/services/mojo_video_renderer_sink_adapter.h"
20 21
21 namespace media { 22 namespace media {
22 23
23 namespace { 24 namespace {
24 25
25 void CloseBindingOnBadMessage(mojo::StrongBindingPtr<mojom::Renderer> binding) { 26 void CloseBindingOnBadMessage(mojo::StrongBindingPtr<mojom::Renderer> binding) {
26 LOG(ERROR) << __func__; 27 LOG(ERROR) << __func__;
27 DCHECK(binding); 28 DCHECK(binding);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 74
74 weak_this_ = weak_factory_.GetWeakPtr(); 75 weak_this_ = weak_factory_.GetWeakPtr();
75 } 76 }
76 77
77 MojoRendererService::~MojoRendererService() {} 78 MojoRendererService::~MojoRendererService() {}
78 79
79 void MojoRendererService::Initialize( 80 void MojoRendererService::Initialize(
80 mojom::RendererClientAssociatedPtrInfo client, 81 mojom::RendererClientAssociatedPtrInfo client,
81 mojom::DemuxerStreamPtr audio, 82 mojom::DemuxerStreamPtr audio,
82 mojom::DemuxerStreamPtr video, 83 mojom::DemuxerStreamPtr video,
84 mojom::AudioRendererSinkPtr audio_renderer_sink_ptr,
83 mojom::VideoRendererSinkPtr video_renderer_sink_ptr, 85 mojom::VideoRendererSinkPtr video_renderer_sink_ptr,
84 const base::Optional<GURL>& media_url, 86 const base::Optional<GURL>& media_url,
85 const base::Optional<GURL>& first_party_for_cookies, 87 const base::Optional<GURL>& first_party_for_cookies,
86 const InitializeCallback& callback) { 88 const InitializeCallback& callback) {
87 DVLOG(1) << __func__; 89 DVLOG(1) << __func__;
88 DCHECK_EQ(state_, STATE_UNINITIALIZED); 90 DCHECK_EQ(state_, STATE_UNINITIALIZED);
89 91
90 client_.Bind(std::move(client)); 92 client_.Bind(std::move(client));
91 state_ = STATE_INITIALIZING; 93 state_ = STATE_INITIALIZING;
92 94
95 if (audio_renderer_sink_ptr) {
96 static_cast<MojoAudioRendererSinkAdapter*>(audio_sink_.get())
97 ->SetClient(std::move(audio_renderer_sink_ptr));
98 }
99
93 if (video_renderer_sink_ptr) { 100 if (video_renderer_sink_ptr) {
94 static_cast<MojoVideoRendererSinkAdapter*>(video_sink_.get()) 101 static_cast<MojoVideoRendererSinkAdapter*>(video_sink_.get())
95 ->Initialize(std::move(video_renderer_sink_ptr)); 102 ->Initialize(std::move(video_renderer_sink_ptr));
96 } 103 }
97 104
98 if (media_url == base::nullopt) { 105 if (media_url == base::nullopt) {
99 stream_provider_.reset(new DemuxerStreamProviderShim( 106 stream_provider_.reset(new DemuxerStreamProviderShim(
100 std::move(audio), std::move(video), 107 std::move(audio), std::move(video),
101 base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback))); 108 base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback)));
102 return; 109 return;
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 DCHECK(!bad_message_cb_.is_null()); 302 DCHECK(!bad_message_cb_.is_null());
296 bad_message_cb_.Run(); 303 bad_message_cb_.Run();
297 304
298 return; 305 return;
299 } 306 }
300 307
301 callback.Run(initiate_surface_request_cb_.Run()); 308 callback.Run(initiate_surface_request_cb_.Run());
302 } 309 }
303 310
304 } // namespace media 311 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698