| Index: content/renderer/media/renderer_gpu_video_decoder_factories.cc
|
| diff --git a/content/renderer/media/renderer_gpu_video_decoder_factories.cc b/content/renderer/media/renderer_gpu_video_decoder_factories.cc
|
| index 4d27d59fb6a83d2ccc48a046c59a242ade76ef62..e79834db313b05b15aa0e92aa42103d16cbc9e11 100644
|
| --- a/content/renderer/media/renderer_gpu_video_decoder_factories.cc
|
| +++ b/content/renderer/media/renderer_gpu_video_decoder_factories.cc
|
| @@ -48,19 +48,21 @@ void RendererGpuVideoDecoderFactories::AsyncCreateVideoDecodeAccelerator(
|
| }
|
|
|
| bool RendererGpuVideoDecoderFactories::CreateTextures(
|
| - int32 count, const gfx::Size& size, std::vector<uint32>* texture_ids) {
|
| + int32 count, const gfx::Size& size,
|
| + std::vector<uint32>* texture_ids,
|
| + uint32* texture_target) {
|
| bool success = false;
|
| base::WaitableEvent waiter(false, false);
|
| message_loop_->PostTask(FROM_HERE, base::Bind(
|
| &RendererGpuVideoDecoderFactories::AsyncCreateTextures, this,
|
| - count, size, texture_ids, &success, &waiter));
|
| + count, size, texture_ids, texture_target, &success, &waiter));
|
| waiter.Wait();
|
| return success;
|
| }
|
|
|
| void RendererGpuVideoDecoderFactories::AsyncCreateTextures(
|
| int32 count, const gfx::Size& size, std::vector<uint32>* texture_ids,
|
| - bool* success, base::WaitableEvent* waiter) {
|
| + uint32* texture_target, bool* success, base::WaitableEvent* waiter) {
|
| if (!context_) {
|
| *success = false;
|
| waiter->Signal();
|
| @@ -69,15 +71,16 @@ void RendererGpuVideoDecoderFactories::AsyncCreateTextures(
|
| gpu::gles2::GLES2Implementation* gles2 = context_->GetImplementation();
|
| texture_ids->resize(count);
|
| gles2->GenTextures(count, &texture_ids->at(0));
|
| + *texture_target = GL_TEXTURE_2D;
|
| for (int i = 0; i < count; ++i) {
|
| gles2->ActiveTexture(GL_TEXTURE0);
|
| uint32 texture_id = texture_ids->at(i);
|
| - gles2->BindTexture(GL_TEXTURE_2D, texture_id);
|
| - gles2->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
| - gles2->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
| - gles2->TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
| - gles2->TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
| - gles2->TexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size.width(), size.height(),
|
| + gles2->BindTexture(*texture_target, texture_id);
|
| + gles2->TexParameteri(*texture_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
| + gles2->TexParameteri(*texture_target, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
| + gles2->TexParameterf(*texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
| + gles2->TexParameterf(*texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
| + gles2->TexImage2D(*texture_target, 0, GL_RGBA, size.width(), size.height(),
|
| 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
|
| }
|
| // We need a glFlush here to guarantee the decoder (in the GPU process) can
|
|
|