OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/common/gpu/media/vaapi_wrapper.h" | 5 #include "content/common/gpu/media/vaapi_wrapper.h" |
6 | 6 |
7 #include <dlfcn.h> | 7 #include <dlfcn.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
488 if (va_display_state) { | 488 if (va_display_state) { |
489 VAStatus va_res = VA_STATUS_SUCCESS; | 489 VAStatus va_res = VA_STATUS_SUCCESS; |
490 va_display_state->Deinitialize(&va_res); | 490 va_display_state->Deinitialize(&va_res); |
491 VA_LOG_ON_ERROR(va_res, "vaTerminate failed"); | 491 VA_LOG_ON_ERROR(va_res, "vaTerminate failed"); |
492 } | 492 } |
493 | 493 |
494 va_config_id_ = VA_INVALID_ID; | 494 va_config_id_ = VA_INVALID_ID; |
495 va_display_ = NULL; | 495 va_display_ = NULL; |
496 } | 496 } |
497 | 497 |
498 bool VaapiWrapper::CreateSurfaces(const gfx::Size& size, | 498 bool VaapiWrapper::CreateSurfaces(unsigned int va_format, |
| 499 const gfx::Size& size, |
499 size_t num_surfaces, | 500 size_t num_surfaces, |
500 std::vector<VASurfaceID>* va_surfaces) { | 501 std::vector<VASurfaceID>* va_surfaces) { |
501 base::AutoLock auto_lock(*va_lock_); | 502 base::AutoLock auto_lock(*va_lock_); |
502 DVLOG(2) << "Creating " << num_surfaces << " surfaces"; | 503 DVLOG(2) << "Creating " << num_surfaces << " surfaces"; |
503 | 504 |
504 DCHECK(va_surfaces->empty()); | 505 DCHECK(va_surfaces->empty()); |
505 DCHECK(va_surface_ids_.empty()); | 506 DCHECK(va_surface_ids_.empty()); |
506 va_surface_ids_.resize(num_surfaces); | 507 va_surface_ids_.resize(num_surfaces); |
507 | 508 |
508 // Allocate surfaces in driver. | 509 // Allocate surfaces in driver. |
509 VAStatus va_res = vaCreateSurfaces(va_display_, | 510 VAStatus va_res = |
510 VA_RT_FORMAT_YUV420, | 511 vaCreateSurfaces(va_display_, va_format, size.width(), size.height(), |
511 size.width(), size.height(), | 512 &va_surface_ids_[0], va_surface_ids_.size(), NULL, 0); |
512 &va_surface_ids_[0], | |
513 va_surface_ids_.size(), | |
514 NULL, 0); | |
515 | 513 |
516 VA_LOG_ON_ERROR(va_res, "vaCreateSurfaces failed"); | 514 VA_LOG_ON_ERROR(va_res, "vaCreateSurfaces failed"); |
517 if (va_res != VA_STATUS_SUCCESS) { | 515 if (va_res != VA_STATUS_SUCCESS) { |
518 va_surface_ids_.clear(); | 516 va_surface_ids_.clear(); |
519 return false; | 517 return false; |
520 } | 518 } |
521 | 519 |
522 // And create a context associated with them. | 520 // And create a context associated with them. |
523 va_res = vaCreateContext(va_display_, va_config_id_, | 521 va_res = vaCreateContext(va_display_, va_config_id_, |
524 size.width(), size.height(), VA_PROGRESSIVE, | 522 size.width(), size.height(), VA_PROGRESSIVE, |
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1142 drm_fd_.reset(HANDLE_EINTR(dup(fd))); | 1140 drm_fd_.reset(HANDLE_EINTR(dup(fd))); |
1143 } | 1141 } |
1144 #endif // USE_OZONE | 1142 #endif // USE_OZONE |
1145 | 1143 |
1146 bool VaapiWrapper::VADisplayState::VAAPIVersionLessThan(int major, int minor) { | 1144 bool VaapiWrapper::VADisplayState::VAAPIVersionLessThan(int major, int minor) { |
1147 return (major_version_ < major) || | 1145 return (major_version_ < major) || |
1148 (major_version_ == major && minor_version_ < minor); | 1146 (major_version_ == major && minor_version_ < minor); |
1149 } | 1147 } |
1150 | 1148 |
1151 } // namespace content | 1149 } // namespace content |
OLD | NEW |