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

Unified Diff: media/mojo/services/default_mojo_media_client.cc

Issue 2299703005: Rename TestMojoMediaClient -> DefaultMojoMediaClient. (Closed)
Patch Set: Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/mojo/services/default_mojo_media_client.h ('k') | media/mojo/services/main.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/mojo/services/default_mojo_media_client.cc
diff --git a/media/mojo/services/default_mojo_media_client.cc b/media/mojo/services/default_mojo_media_client.cc
index 397cac4be44c8736e4de983064fc2289f85915f4..059b7c29331b82d228f3418569ec969c9b2a622a 100644
--- a/media/mojo/services/default_mojo_media_client.cc
+++ b/media/mojo/services/default_mojo_media_client.cc
@@ -4,23 +4,75 @@
#include "media/mojo/services/default_mojo_media_client.h"
+#include "base/memory/ptr_util.h"
+#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
+#include "base/threading/thread_task_runner_handle.h"
+#include "media/audio/audio_device_description.h"
+#include "media/audio/audio_manager.h"
+#include "media/audio/audio_output_stream_sink.h"
#include "media/base/cdm_factory.h"
+#include "media/base/media.h"
+#include "media/base/media_log.h"
+#include "media/base/null_video_sink.h"
+#include "media/base/renderer_factory.h"
+#include "media/cdm/default_cdm_factory.h"
+#include "media/renderers/default_renderer_factory.h"
+#include "media/renderers/gpu_video_accelerator_factories.h"
namespace media {
DefaultMojoMediaClient::DefaultMojoMediaClient() {}
-DefaultMojoMediaClient::~DefaultMojoMediaClient() {}
+DefaultMojoMediaClient::~DefaultMojoMediaClient() {
+ DVLOG(1) << __FUNCTION__;
+ // AudioManager destructor requires MessageLoop.
+ // Destroy it before the message loop goes away.
+ audio_manager_.reset();
+ // Flush the message loop to ensure that the audio manager is destroyed.
+ base::RunLoop().RunUntilIdle();
+}
void DefaultMojoMediaClient::Initialize() {
- // TODO(jrummell): Do one-time initialization work here.
+ InitializeMediaLibrary();
+ // TODO(dalecurtis): We should find a single owner per process for the audio
+ // manager or make it a lazy instance. It's not safe to call Get()/Create()
+ // across multiple threads...
+ AudioManager* audio_manager = AudioManager::Get();
+ if (!audio_manager) {
+ audio_manager_ = media::AudioManager::CreateForTesting(
+ base::ThreadTaskRunnerHandle::Get());
+ audio_manager = audio_manager_.get();
+ // Flush the message loop to ensure that the audio manager is initialized.
+ base::RunLoop().RunUntilIdle();
+ }
+}
+
+scoped_refptr<AudioRendererSink>
+DefaultMojoMediaClient::CreateAudioRendererSink(
+ const std::string& /* audio_device_id */) {
+ return new AudioOutputStreamSink();
+}
+
+std::unique_ptr<VideoRendererSink>
+DefaultMojoMediaClient::CreateVideoRendererSink(
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
+ return base::MakeUnique<NullVideoSink>(
+ false, base::TimeDelta::FromSecondsD(1.0 / 60),
+ NullVideoSink::NewFrameCB(), task_runner);
+}
+
+std::unique_ptr<RendererFactory> DefaultMojoMediaClient::CreateRendererFactory(
+ const scoped_refptr<MediaLog>& media_log) {
+ return base::MakeUnique<DefaultRendererFactory>(
+ std::move(media_log), nullptr,
+ DefaultRendererFactory::GetGpuFactoriesCB());
}
std::unique_ptr<CdmFactory> DefaultMojoMediaClient::CreateCdmFactory(
shell::mojom::InterfaceProvider* /* interface_provider */) {
DVLOG(1) << __FUNCTION__;
- // TODO(jrummell): Return a CdmFactory that can create CdmAdapter here.
- return nullptr;
+ return base::MakeUnique<DefaultCdmFactory>();
}
} // namespace media
« no previous file with comments | « media/mojo/services/default_mojo_media_client.h ('k') | media/mojo/services/main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698