Chromium Code Reviews| Index: content/renderer/render_thread_impl.cc |
| diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
| index 804e01826cc2863ebdfecf3db6584eb427c1dce7..a5c87222b31d4ded15cf8374442c027ebf3ec2c0 100644 |
| --- a/content/renderer/render_thread_impl.cc |
| +++ b/content/renderer/render_thread_impl.cc |
| @@ -164,6 +164,7 @@ |
| #include "content/renderer/android/synchronous_compositor_factory.h" |
| #include "content/renderer/android/synchronous_compositor_filter.h" |
| #include "content/renderer/media/android/renderer_demuxer_android.h" |
| +#include "content/renderer/media/android/stream_texture_factory_impl.h" |
| #endif |
| #if defined(OS_MACOSX) |
| @@ -869,6 +870,7 @@ void RenderThreadImpl::Shutdown() { |
| RemoveFilter(sync_compositor_message_filter_.get()); |
| sync_compositor_message_filter_ = nullptr; |
| } |
| + stream_texture_factory_ = nullptr; |
| #endif |
| media_thread_.reset(); |
| @@ -1464,6 +1466,28 @@ RenderThreadImpl::SharedMainThreadContextProvider() { |
| return shared_main_thread_contexts_; |
| } |
| +#if defined(OS_ANDROID) |
| +scoped_refptr<StreamTextureFactory> RenderThreadImpl::GetStreamTexureFactory() { |
| + DCHECK(IsMainThread()); |
| + if (!SharedMainThreadContextProvider().get()) { |
| + stream_texture_factory_ = NULL; |
| + return NULL; |
| + } |
| + // Create shared StreamTextureFactoryImpl per RenderThreadImpl when we |
| + // create ContextProviderCommandBuffer. |
| + scoped_refptr<GpuChannelHost> gpu_channel_host(EstablishGpuChannelSync( |
| + CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE)); |
| + if (!gpu_channel_host.get()) { |
| + LOG(ERROR) << "Failed to establish GPU channel for media player"; |
| + stream_texture_factory_ = NULL; |
| + } else { |
| + stream_texture_factory_ = StreamTextureFactoryImpl::Create( |
|
no sievers
2015/11/09 21:27:34
If you are creating a new factory every time, then
sivag
2015/11/10 13:18:56
Done.
|
| + shared_main_thread_contexts_, gpu_channel_host.get()); |
| + } |
| + return stream_texture_factory_; |
| +} |
| +#endif |
| + |
| AudioRendererMixerManager* RenderThreadImpl::GetAudioRendererMixerManager() { |
| if (!audio_renderer_mixer_manager_) { |
| audio_renderer_mixer_manager_.reset(new AudioRendererMixerManager()); |