Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(390)

Side by Side Diff: media/gpu/v4l2_slice_video_decode_accelerator.cc

Issue 2462393002: Use texture ids passed from ARC as service ids in ArcGVDA (Closed)
Patch Set: Fixup DXVA Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/v4l2_slice_video_decode_accelerator.h" 5 #include "media/gpu/v4l2_slice_video_decode_accelerator.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #include <linux/videodev2.h> 9 #include <linux/videodev2.h>
10 #include <poll.h> 10 #include <poll.h>
(...skipping 1611 matching lines...) Expand 10 before | Expand all | Expand 10 after
1622 DLOGF(ERROR) << "Could not allocate enough output buffers"; 1622 DLOGF(ERROR) << "Could not allocate enough output buffers";
1623 NOTIFY_ERROR(PLATFORM_FAILURE); 1623 NOTIFY_ERROR(PLATFORM_FAILURE);
1624 return; 1624 return;
1625 } 1625 }
1626 1626
1627 DCHECK(free_output_buffers_.empty()); 1627 DCHECK(free_output_buffers_.empty());
1628 DCHECK(output_buffer_map_.empty()); 1628 DCHECK(output_buffer_map_.empty());
1629 output_buffer_map_.resize(buffers.size()); 1629 output_buffer_map_.resize(buffers.size());
1630 for (size_t i = 0; i < output_buffer_map_.size(); ++i) { 1630 for (size_t i = 0; i < output_buffer_map_.size(); ++i) {
1631 DCHECK(buffers[i].size() == coded_size_); 1631 DCHECK(buffers[i].size() == coded_size_);
1632 DCHECK_EQ(1u, buffers[i].service_texture_ids().size());
1633 1632
1634 OutputRecord& output_record = output_buffer_map_[i]; 1633 OutputRecord& output_record = output_buffer_map_[i];
1635 DCHECK(!output_record.at_device); 1634 DCHECK(!output_record.at_device);
1636 DCHECK(!output_record.at_client); 1635 DCHECK(!output_record.at_client);
1637 DCHECK_EQ(output_record.egl_image, EGL_NO_IMAGE_KHR); 1636 DCHECK_EQ(output_record.egl_image, EGL_NO_IMAGE_KHR);
1638 DCHECK_EQ(output_record.egl_sync, EGL_NO_SYNC_KHR); 1637 DCHECK_EQ(output_record.egl_sync, EGL_NO_SYNC_KHR);
1639 DCHECK_EQ(output_record.picture_id, -1); 1638 DCHECK_EQ(output_record.picture_id, -1);
1640 DCHECK(output_record.dmabuf_fds.empty()); 1639 DCHECK(output_record.dmabuf_fds.empty());
1641 DCHECK_EQ(output_record.cleared, false); 1640 DCHECK_EQ(output_record.cleared, false);
1642 1641
1643 output_record.picture_id = buffers[i].id(); 1642 output_record.picture_id = buffers[i].id();
1644 output_record.texture_id = buffers[i].service_texture_ids()[0]; 1643 output_record.texture_id = buffers[i].service_texture_ids().empty()
1644 ? 0
1645 : buffers[i].service_texture_ids()[0];
1646
1645 // This will remain true until ImportBufferForPicture is called, either by 1647 // This will remain true until ImportBufferForPicture is called, either by
1646 // the client, or by ourselves, if we are allocating. 1648 // the client, or by ourselves, if we are allocating.
1647 output_record.at_client = true; 1649 output_record.at_client = true;
1648 if (output_mode_ == Config::OutputMode::ALLOCATE) { 1650 if (output_mode_ == Config::OutputMode::ALLOCATE) {
1649 std::vector<base::ScopedFD> dmabuf_fds = device_->GetDmabufsForV4L2Buffer( 1651 std::vector<base::ScopedFD> dmabuf_fds = device_->GetDmabufsForV4L2Buffer(
1650 i, output_planes_count_, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE); 1652 i, output_planes_count_, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
1651 if (dmabuf_fds.empty()) { 1653 if (dmabuf_fds.empty()) {
1652 NOTIFY_ERROR(PLATFORM_FAILURE); 1654 NOTIFY_ERROR(PLATFORM_FAILURE);
1653 return; 1655 return;
1654 } 1656 }
(...skipping 20 matching lines...) Expand all
1675 1677
1676 void V4L2SliceVideoDecodeAccelerator::CreateEGLImageFor( 1678 void V4L2SliceVideoDecodeAccelerator::CreateEGLImageFor(
1677 size_t buffer_index, 1679 size_t buffer_index,
1678 int32_t picture_buffer_id, 1680 int32_t picture_buffer_id,
1679 std::unique_ptr<std::vector<base::ScopedFD>> passed_dmabuf_fds, 1681 std::unique_ptr<std::vector<base::ScopedFD>> passed_dmabuf_fds,
1680 GLuint texture_id, 1682 GLuint texture_id,
1681 const gfx::Size& size, 1683 const gfx::Size& size,
1682 uint32_t fourcc) { 1684 uint32_t fourcc) {
1683 DVLOGF(3) << "index=" << buffer_index; 1685 DVLOGF(3) << "index=" << buffer_index;
1684 DCHECK(child_task_runner_->BelongsToCurrentThread()); 1686 DCHECK(child_task_runner_->BelongsToCurrentThread());
1687 DCHECK_NE(texture_id, 0u);
1685 1688
1686 if (get_gl_context_cb_.is_null() || make_context_current_cb_.is_null()) { 1689 if (get_gl_context_cb_.is_null() || make_context_current_cb_.is_null()) {
1687 DLOGF(ERROR) << "GL callbacks required for binding to EGLImages"; 1690 DLOGF(ERROR) << "GL callbacks required for binding to EGLImages";
1688 NOTIFY_ERROR(INVALID_ARGUMENT); 1691 NOTIFY_ERROR(INVALID_ARGUMENT);
1689 return; 1692 return;
1690 } 1693 }
1691 1694
1692 gl::GLContext* gl_context = get_gl_context_cb_.Run(); 1695 gl::GLContext* gl_context = get_gl_context_cb_.Run();
1693 if (!gl_context || !make_context_current_cb_.Run()) { 1696 if (!gl_context || !make_context_current_cb_.Run()) {
1694 DLOGF(ERROR) << "No GL context"; 1697 DLOGF(ERROR) << "No GL context";
(...skipping 1577 matching lines...) Expand 10 before | Expand all | Expand 10 after
3272 V4L2SliceVideoDecodeAccelerator::GetSupportedProfiles() { 3275 V4L2SliceVideoDecodeAccelerator::GetSupportedProfiles() {
3273 scoped_refptr<V4L2Device> device = V4L2Device::Create(); 3276 scoped_refptr<V4L2Device> device = V4L2Device::Create();
3274 if (!device) 3277 if (!device)
3275 return SupportedProfiles(); 3278 return SupportedProfiles();
3276 3279
3277 return device->GetSupportedDecodeProfiles(arraysize(supported_input_fourccs_), 3280 return device->GetSupportedDecodeProfiles(arraysize(supported_input_fourccs_),
3278 supported_input_fourccs_); 3281 supported_input_fourccs_);
3279 } 3282 }
3280 3283
3281 } // namespace media 3284 } // namespace media
OLDNEW
« no previous file with comments | « media/gpu/dxva_video_decode_accelerator_win.cc ('k') | media/gpu/v4l2_video_decode_accelerator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698