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

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

Issue 2281843003: Move ownership of audio/video sinks to MojoRendererService. (Closed)
Patch Set: rebase Created 4 years, 3 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
« no previous file with comments | « media/mojo/services/test_mojo_media_client.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/test_mojo_media_client.h" 5 #include "media/mojo/services/test_mojo_media_client.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/threading/thread_task_runner_handle.h" 10 #include "base/threading/thread_task_runner_handle.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 void TestMojoMediaClient::WillQuit() { 45 void TestMojoMediaClient::WillQuit() {
46 DVLOG(1) << __FUNCTION__; 46 DVLOG(1) << __FUNCTION__;
47 // AudioManager destructor requires MessageLoop. 47 // AudioManager destructor requires MessageLoop.
48 // Destroy it before the message loop goes away. 48 // Destroy it before the message loop goes away.
49 audio_manager_.reset(); 49 audio_manager_.reset();
50 // Flush the message loop to ensure that the audio manager is destroyed. 50 // Flush the message loop to ensure that the audio manager is destroyed.
51 base::RunLoop().RunUntilIdle(); 51 base::RunLoop().RunUntilIdle();
52 } 52 }
53 53
54 std::unique_ptr<Renderer> TestMojoMediaClient::CreateRenderer( 54 scoped_refptr<AudioRendererSink> TestMojoMediaClient::CreateAudioRendererSink(
55 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner, 55 const std::string& /* audio_device_id */) {
56 scoped_refptr<MediaLog> media_log, 56 return new AudioOutputStreamSink();
57 const std::string& audio_device_id) {
58 DVLOG(1) << __FUNCTION__;
59 AudioRendererSink* audio_renderer_sink = GetAudioRendererSink();
60 VideoRendererSink* video_renderer_sink =
61 GetVideoRendererSink(media_task_runner);
62
63 RendererFactory* renderer_factory = GetRendererFactory(std::move(media_log));
64 if (!renderer_factory)
65 return nullptr;
66
67 return renderer_factory->CreateRenderer(
68 media_task_runner, media_task_runner, audio_renderer_sink,
69 video_renderer_sink, RequestSurfaceCB());
70 } 57 }
71 58
72 RendererFactory* TestMojoMediaClient::GetRendererFactory( 59 std::unique_ptr<VideoRendererSink> TestMojoMediaClient::CreateVideoRendererSink(
73 scoped_refptr<MediaLog> media_log) { 60 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
74 DVLOG(1) << __FUNCTION__; 61 return base::MakeUnique<NullVideoSink>(
75 if (!renderer_factory_) { 62 false, base::TimeDelta::FromSecondsD(1.0 / 60),
76 renderer_factory_ = base::MakeUnique<DefaultRendererFactory>( 63 NullVideoSink::NewFrameCB(), task_runner);
77 std::move(media_log), nullptr,
78 DefaultRendererFactory::GetGpuFactoriesCB());
79 }
80
81 return renderer_factory_.get();
82 } 64 }
83 65
84 AudioRendererSink* TestMojoMediaClient::GetAudioRendererSink() { 66 std::unique_ptr<RendererFactory> TestMojoMediaClient::CreateRendererFactory(
85 if (!audio_renderer_sink_) 67 const scoped_refptr<MediaLog>& media_log) {
86 audio_renderer_sink_ = new AudioOutputStreamSink(); 68 return base::MakeUnique<DefaultRendererFactory>(
87 69 std::move(media_log), nullptr,
88 return audio_renderer_sink_.get(); 70 DefaultRendererFactory::GetGpuFactoriesCB());
89 }
90
91 VideoRendererSink* TestMojoMediaClient::GetVideoRendererSink(
92 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
93 if (!video_renderer_sink_) {
94 video_renderer_sink_ = base::MakeUnique<NullVideoSink>(
95 false, base::TimeDelta::FromSecondsD(1.0 / 60),
96 NullVideoSink::NewFrameCB(), task_runner);
97 }
98
99 return video_renderer_sink_.get();
100 } 71 }
101 72
102 std::unique_ptr<CdmFactory> TestMojoMediaClient::CreateCdmFactory( 73 std::unique_ptr<CdmFactory> TestMojoMediaClient::CreateCdmFactory(
103 shell::mojom::InterfaceProvider* /* interface_provider */) { 74 shell::mojom::InterfaceProvider* /* interface_provider */) {
104 DVLOG(1) << __FUNCTION__; 75 DVLOG(1) << __FUNCTION__;
105 return base::MakeUnique<DefaultCdmFactory>(); 76 return base::MakeUnique<DefaultCdmFactory>();
106 } 77 }
107 78
108 } // namespace media 79 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/services/test_mojo_media_client.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698