Chromium Code Reviews| Index: content/common/gpu/media/gpu_video_service.cc |
| diff --git a/content/common/gpu/media/gpu_video_service.cc b/content/common/gpu/media/gpu_video_service.cc |
| index ebad95bfaa705fd19f266f6a1e629640336c3fca..5a983e6b50cd31af8febc40972e6e1669c148b03 100644 |
| --- a/content/common/gpu/media/gpu_video_service.cc |
| +++ b/content/common/gpu/media/gpu_video_service.cc |
| @@ -7,7 +7,6 @@ |
| #include "content/common/gpu/gpu_channel.h" |
| #include "content/common/gpu/gpu_messages.h" |
| #include "content/common/gpu/media/gpu_video_decode_accelerator.h" |
| -#include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
| #if defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) |
| #include "content/common/gpu/media/omx_video_decode_accelerator.h" |
| @@ -59,22 +58,14 @@ bool GpuVideoService::CreateVideoDecoder( |
| MessageRouter* router, |
| int32 decoder_host_id, |
| int32 decoder_id, |
| - gpu::gles2::GLES2Decoder* command_decoder, |
| + GpuCommandBufferStub* stub, |
| const std::vector<uint32>& configs) { |
| // Create GpuVideoDecodeAccelerator and add to map. |
| scoped_refptr<GpuVideoDecodeAccelerator> decoder = |
| - new GpuVideoDecodeAccelerator(channel, decoder_host_id); |
| - |
| -#if defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) |
| - OmxVideoDecodeAccelerator* omx_decoder = |
| - new OmxVideoDecodeAccelerator(decoder, MessageLoop::current()); |
| - omx_decoder->SetEglState(gfx::GLSurfaceEGL::GetDisplay(), |
| - command_decoder->GetGLContext()->GetHandle()); |
| - decoder->set_video_decode_accelerator(omx_decoder); |
| -#endif // defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) |
| + new GpuVideoDecodeAccelerator(channel, decoder_host_id, decoder_id, stub); |
| bool result = decoder_map_.insert(std::make_pair( |
| - decoder_id, VideoDecoderInfo(decoder, command_decoder))).second; |
| + decoder_id, VideoDecoderInfo(decoder, stub))).second; |
| // Decoder ID is a unique ID determined by GpuVideoServiceHost. |
| // We should always be adding entries here. |
| @@ -90,6 +81,22 @@ bool GpuVideoService::CreateVideoDecoder( |
| return true; |
| } |
| +void GpuVideoService::InitializeVideoDecoder(int32 decoder_id) { |
| +#if defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) |
| + DecoderMap::iterator it = decoder_map_.find(decoder_id); |
| + DCHECK(it != decoder_map_.end()); |
| + GpuVideoDecodeAccelerator* decoder = it->second.video_decoder.get(); |
| + GpuCommandBufferStub* stub = it->second.stub; |
| + DCHECK(stub->scheduler()); |
| + OmxVideoDecodeAccelerator* omx_decoder = |
| + new OmxVideoDecodeAccelerator(decoder, MessageLoop::current()); |
| + omx_decoder->SetEglState( |
| + gfx::GLSurfaceEGL::GetDisplay(), |
| + stub->scheduler()->decoder()->GetGLContext()->GetHandle()); |
| + decoder->set_video_decode_accelerator(omx_decoder); |
| +#endif // defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) |
|
scherkus (not reviewing)
2011/06/27 22:54:47
#else NOTIMPLEMENTED() ???
Ami GONE FROM CHROMIUM
2011/06/28 00:06:35
nice.
|
| +} |
| + |
| void GpuVideoService::DestroyVideoDecoder( |
| MessageRouter* router, |
| int32 decoder_id) { |
| @@ -106,7 +113,9 @@ void GpuVideoService::AssignTexturesToDecoder( |
| DCHECK(it != decoder_map_.end()); |
| DCHECK_EQ(it->first, decoder_id); |
| GpuVideoDecodeAccelerator* video_decoder = it->second.video_decoder; |
| - gpu::gles2::GLES2Decoder* command_decoder = it->second.command_decoder; |
| + DCHECK(it->second.stub->scheduler()); // Ensure already Initialize()'d. |
| + gpu::gles2::GLES2Decoder* command_decoder = |
| + it->second.stub->scheduler()->decoder(); |
| std::vector<media::GLESBuffer> buffers; |
| for (uint32 i = 0; i < buffer_ids.size(); ++i) { |