Index: media/video/capture/linux/v4l2_capture_delegate_multi_plane.cc |
diff --git a/media/video/capture/linux/v4l2_capture_delegate_multi_plane.cc b/media/video/capture/linux/v4l2_capture_delegate_multi_plane.cc |
deleted file mode 100644 |
index 7551bed434c7f7b5603a12bb842715616aa95e00..0000000000000000000000000000000000000000 |
--- a/media/video/capture/linux/v4l2_capture_delegate_multi_plane.cc |
+++ /dev/null |
@@ -1,99 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "media/video/capture/linux/v4l2_capture_delegate_multi_plane.h" |
- |
-#include <sys/mman.h> |
- |
-namespace media { |
- |
-V4L2CaptureDelegateMultiPlane::V4L2CaptureDelegateMultiPlane( |
- const VideoCaptureDevice::Name& device_name, |
- const scoped_refptr<base::SingleThreadTaskRunner>& v4l2_task_runner, |
- int power_line_frequency) |
- : V4L2CaptureDelegate(device_name, |
- v4l2_task_runner, |
- power_line_frequency) { |
-} |
- |
-V4L2CaptureDelegateMultiPlane::~V4L2CaptureDelegateMultiPlane() { |
-} |
- |
-scoped_refptr<V4L2CaptureDelegate::BufferTracker> |
-V4L2CaptureDelegateMultiPlane::CreateBufferTracker() const { |
- return make_scoped_refptr(new BufferTrackerMPlane()); |
-} |
- |
-bool V4L2CaptureDelegateMultiPlane::FillV4L2Format( |
- v4l2_format* format, |
- uint32_t width, |
- uint32_t height, |
- uint32_t pixelformat_fourcc) const { |
- format->fmt.pix_mp.width = width; |
- format->fmt.pix_mp.height = height; |
- format->fmt.pix_mp.pixelformat = pixelformat_fourcc; |
- |
- const size_t num_v4l2_planes = |
- V4L2CaptureDelegate::GetNumPlanesForFourCc(pixelformat_fourcc); |
- if (num_v4l2_planes == 0u) |
- return false; |
- DCHECK_LE(num_v4l2_planes, static_cast<size_t>(VIDEO_MAX_PLANES)); |
- format->fmt.pix_mp.num_planes = num_v4l2_planes; |
- |
- v4l2_planes_.resize(num_v4l2_planes); |
- return true; |
-} |
- |
-void V4L2CaptureDelegateMultiPlane::FinishFillingV4L2Buffer( |
- v4l2_buffer* buffer) const { |
- buffer->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; |
- buffer->length = v4l2_planes_.size(); |
- |
- static const struct v4l2_plane empty_plane = {}; |
- std::fill(v4l2_planes_.begin(), v4l2_planes_.end(), empty_plane); |
- buffer->m.planes = v4l2_planes_.data(); |
-} |
- |
-void V4L2CaptureDelegateMultiPlane::SendBuffer( |
- const scoped_refptr<BufferTracker>& buffer_tracker, |
- const v4l2_format& format) const { |
- DCHECK_EQ(capture_format().pixel_format, PIXEL_FORMAT_I420); |
- const size_t y_stride = format.fmt.pix_mp.plane_fmt[0].bytesperline; |
- const size_t u_stride = format.fmt.pix_mp.plane_fmt[1].bytesperline; |
- const size_t v_stride = format.fmt.pix_mp.plane_fmt[2].bytesperline; |
- DCHECK_GE(y_stride, 1u * capture_format().frame_size.width()); |
- DCHECK_GE(u_stride, 1u * capture_format().frame_size.width() / 2); |
- DCHECK_GE(v_stride, 1u * capture_format().frame_size.width() / 2); |
- client()->OnIncomingCapturedYuvData(buffer_tracker->GetPlaneStart(0), |
- buffer_tracker->GetPlaneStart(1), |
- buffer_tracker->GetPlaneStart(2), |
- y_stride, |
- u_stride, |
- v_stride, |
- capture_format(), |
- rotation(), |
- base::TimeTicks::Now()); |
-} |
- |
-bool V4L2CaptureDelegateMultiPlane::BufferTrackerMPlane::Init( |
- int fd, |
- const v4l2_buffer& buffer) { |
- for (size_t p = 0; p < buffer.length; ++p) { |
- // Some devices require mmap() to be called with both READ and WRITE. |
- // See http://crbug.com/178582. |
- void* const start = |
- mmap(NULL, buffer.m.planes[p].length, PROT_READ | PROT_WRITE, |
- MAP_SHARED, fd, buffer.m.planes[p].m.mem_offset); |
- if (start == MAP_FAILED) { |
- DLOG(ERROR) << "Error mmap()ing a V4L2 buffer into userspace"; |
- return false; |
- } |
- AddMmapedPlane(static_cast<uint8_t*>(start), buffer.m.planes[p].length); |
- DVLOG(3) << "Mmap()ed plane #" << p << " of " << buffer.m.planes[p].length |
- << "B"; |
- } |
- return true; |
-} |
- |
-} // namespace media |