| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/gpu/dxva_picture_buffer_win.h" | 5 #include "media/gpu/dxva_picture_buffer_win.h" |
| 6 | 6 |
| 7 #include "media/gpu/dxva_video_decode_accelerator_win.h" | 7 #include "media/gpu/dxva_video_decode_accelerator_win.h" |
| 8 #include "third_party/angle/include/EGL/egl.h" | 8 #include "third_party/angle/include/EGL/egl.h" |
| 9 #include "third_party/angle/include/EGL/eglext.h" | 9 #include "third_party/angle/include/EGL/eglext.h" |
| 10 #include "ui/gl/gl_bindings.h" | 10 #include "ui/gl/gl_bindings.h" |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 : picture_buffer_(buffer) {} | 106 : picture_buffer_(buffer) {} |
| 107 | 107 |
| 108 bool DXVAPictureBuffer::BindSampleToTexture( | 108 bool DXVAPictureBuffer::BindSampleToTexture( |
| 109 base::win::ScopedComPtr<IMFSample> sample) { | 109 base::win::ScopedComPtr<IMFSample> sample) { |
| 110 NOTREACHED(); | 110 NOTREACHED(); |
| 111 return false; | 111 return false; |
| 112 } | 112 } |
| 113 | 113 |
| 114 bool PbufferPictureBuffer::Initialize(const DXVAVideoDecodeAccelerator& decoder, | 114 bool PbufferPictureBuffer::Initialize(const DXVAVideoDecodeAccelerator& decoder, |
| 115 EGLConfig egl_config) { | 115 EGLConfig egl_config) { |
| 116 RETURN_ON_FAILURE(!picture_buffer_.service_texture_ids().empty(), |
| 117 "No service texture ids provided", false); |
| 118 |
| 116 EGLDisplay egl_display = gl::GLSurfaceEGL::GetHardwareDisplay(); | 119 EGLDisplay egl_display = gl::GLSurfaceEGL::GetHardwareDisplay(); |
| 117 EGLint use_rgb = 1; | 120 EGLint use_rgb = 1; |
| 118 eglGetConfigAttrib(egl_display, egl_config, EGL_BIND_TO_TEXTURE_RGB, | 121 eglGetConfigAttrib(egl_display, egl_config, EGL_BIND_TO_TEXTURE_RGB, |
| 119 &use_rgb); | 122 &use_rgb); |
| 120 | 123 |
| 121 if (!InitializeTexture(decoder, !!use_rgb)) | 124 if (!InitializeTexture(decoder, !!use_rgb)) |
| 122 return false; | 125 return false; |
| 123 | 126 |
| 124 EGLint attrib_list[] = {EGL_WIDTH, | 127 EGLint attrib_list[] = {EGL_WIDTH, |
| 125 size().width(), | 128 size().width(), |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 | 345 |
| 343 EGLStreamPictureBuffer::~EGLStreamPictureBuffer() { | 346 EGLStreamPictureBuffer::~EGLStreamPictureBuffer() { |
| 344 if (stream_) { | 347 if (stream_) { |
| 345 EGLDisplay egl_display = gl::GLSurfaceEGL::GetHardwareDisplay(); | 348 EGLDisplay egl_display = gl::GLSurfaceEGL::GetHardwareDisplay(); |
| 346 eglDestroyStreamKHR(egl_display, stream_); | 349 eglDestroyStreamKHR(egl_display, stream_); |
| 347 stream_ = nullptr; | 350 stream_ = nullptr; |
| 348 } | 351 } |
| 349 } | 352 } |
| 350 | 353 |
| 351 bool EGLStreamPictureBuffer::Initialize() { | 354 bool EGLStreamPictureBuffer::Initialize() { |
| 355 RETURN_ON_FAILURE(picture_buffer_.service_texture_ids().size() >= 2, |
| 356 "Not enough texture ids provided", false); |
| 357 |
| 352 EGLDisplay egl_display = gl::GLSurfaceEGL::GetHardwareDisplay(); | 358 EGLDisplay egl_display = gl::GLSurfaceEGL::GetHardwareDisplay(); |
| 353 const EGLint stream_attributes[] = { | 359 const EGLint stream_attributes[] = { |
| 354 EGL_CONSUMER_LATENCY_USEC_KHR, | 360 EGL_CONSUMER_LATENCY_USEC_KHR, |
| 355 0, | 361 0, |
| 356 EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR, | 362 EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR, |
| 357 0, | 363 0, |
| 358 EGL_NONE, | 364 EGL_NONE, |
| 359 }; | 365 }; |
| 360 stream_ = eglCreateStreamKHR(egl_display, stream_attributes); | 366 stream_ = eglCreateStreamKHR(egl_display, stream_attributes); |
| 361 RETURN_ON_FAILURE(!!stream_, "Could not create stream", false); | 367 RETURN_ON_FAILURE(!!stream_, "Could not create stream", false); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 EGLStreamCopyPictureBuffer::~EGLStreamCopyPictureBuffer() { | 455 EGLStreamCopyPictureBuffer::~EGLStreamCopyPictureBuffer() { |
| 450 if (stream_) { | 456 if (stream_) { |
| 451 EGLDisplay egl_display = gl::GLSurfaceEGL::GetHardwareDisplay(); | 457 EGLDisplay egl_display = gl::GLSurfaceEGL::GetHardwareDisplay(); |
| 452 eglDestroyStreamKHR(egl_display, stream_); | 458 eglDestroyStreamKHR(egl_display, stream_); |
| 453 stream_ = nullptr; | 459 stream_ = nullptr; |
| 454 } | 460 } |
| 455 } | 461 } |
| 456 | 462 |
| 457 bool EGLStreamCopyPictureBuffer::Initialize( | 463 bool EGLStreamCopyPictureBuffer::Initialize( |
| 458 const DXVAVideoDecodeAccelerator& decoder) { | 464 const DXVAVideoDecodeAccelerator& decoder) { |
| 465 RETURN_ON_FAILURE(picture_buffer_.service_texture_ids().size() >= 2, |
| 466 "Not enough texture ids provided", false); |
| 467 |
| 459 EGLDisplay egl_display = gl::GLSurfaceEGL::GetHardwareDisplay(); | 468 EGLDisplay egl_display = gl::GLSurfaceEGL::GetHardwareDisplay(); |
| 460 const EGLint stream_attributes[] = { | 469 const EGLint stream_attributes[] = { |
| 461 EGL_CONSUMER_LATENCY_USEC_KHR, | 470 EGL_CONSUMER_LATENCY_USEC_KHR, |
| 462 0, | 471 0, |
| 463 EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR, | 472 EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR, |
| 464 0, | 473 0, |
| 465 EGL_NONE, | 474 EGL_NONE, |
| 466 }; | 475 }; |
| 467 stream_ = eglCreateStreamKHR(egl_display, stream_attributes); | 476 stream_ = eglCreateStreamKHR(egl_display, stream_attributes); |
| 468 RETURN_ON_FAILURE(!!stream_, "Could not create stream", false); | 477 RETURN_ON_FAILURE(!!stream_, "Could not create stream", false); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 594 state_ = UNUSED; | 603 state_ = UNUSED; |
| 595 | 604 |
| 596 if (stream_) { | 605 if (stream_) { |
| 597 EGLBoolean result = eglStreamConsumerReleaseKHR(egl_display, stream_); | 606 EGLBoolean result = eglStreamConsumerReleaseKHR(egl_display, stream_); |
| 598 RETURN_ON_FAILURE(result, "Could not release stream", false); | 607 RETURN_ON_FAILURE(result, "Could not release stream", false); |
| 599 } | 608 } |
| 600 return true; | 609 return true; |
| 601 } | 610 } |
| 602 | 611 |
| 603 } // namespace media | 612 } // namespace media |
| OLD | NEW |