Chromium Code Reviews| Index: media/video/capture/linux/v4l2_capture_delegate_multi_plane.h |
| diff --git a/media/video/capture/linux/v4l2_capture_delegate_multi_plane.h b/media/video/capture/linux/v4l2_capture_delegate_multi_plane.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e9a584e871ec6487b3eaff45ff2bee3e67dea29b |
| --- /dev/null |
| +++ b/media/video/capture/linux/v4l2_capture_delegate_multi_plane.h |
| @@ -0,0 +1,57 @@ |
| +// 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. |
| + |
| +#ifndef MEDIA_VIDEO_CAPTURE_LINUX_V4L2_CAPTURE_DELEGATE_MULTI_PLANE_H_ |
| +#define MEDIA_VIDEO_CAPTURE_LINUX_V4L2_CAPTURE_DELEGATE_MULTI_PLANE_H_ |
| + |
| +#include "base/memory/ref_counted.h" |
| +#include "media/video/capture/linux/v4l2_video_capture_delegate.h" |
| + |
| +#if defined(OS_OPENBSD) |
| +#error "OpenBSD does not support MPlane capture API." |
| +#endif |
| + |
| +namespace base { |
| +class SingleThreadTaskRunner; |
| +} // namespace base |
| + |
| +namespace media { |
| + |
| +// V4L2 specifics for MPLANE API. |
| +class V4L2CaptureDelegateMultiPlane final : public V4L2VideoCaptureDelegate { |
| + public: |
| + V4L2CaptureDelegateMultiPlane( |
| + const VideoCaptureDevice::Name& device_name, |
| + const scoped_refptr<base::SingleThreadTaskRunner>& v4l2_task_runner, |
| + int power_line_frequency); |
| + |
| + private: |
| + // BufferTracker derivation to implement construction semantics for MPLANE. |
| + class BufferTrackerMPlane final : public BufferTracker { |
| + public: |
| + bool Init(int fd, const v4l2_buffer& buffer) override; |
| + |
| + private: |
| + ~BufferTrackerMPlane() override {} |
| + }; |
| + |
| + ~V4L2CaptureDelegateMultiPlane() override; |
| + |
| + // V4L2VideoCaptureDelegate virtual methods implementation. |
| + scoped_refptr<BufferTracker> CreateBufferTracker() override; |
|
magjed_chromium
2015/03/19 18:13:29
Shouldn't this be a static function?
mcasas
2015/03/19 22:57:00
I would like to but they I could not override it.
|
| + bool FillV4L2Format(v4l2_format* format, |
| + uint32_t width, |
| + uint32_t height, |
| + uint32_t pixelformat_fourcc) override; |
| + void FinishFillingV4L2Buffer(v4l2_buffer* buffer) const override; |
| + void SendBuffer(const scoped_refptr<BufferTracker>& buffer_tracker) override; |
|
Pawel Osciak
2015/03/19 07:52:43
Can this be const?
mcasas
2015/03/19 22:57:00
Done.
|
| + |
| + // Vector to allocate and track as many v4l2_plane structs as planes, needed |
| + // for v4l2_buffer.m.planes. |
| + std::vector<struct v4l2_plane> v4l2_planes_; |
| +}; |
| + |
| +} // namespace media |
| + |
| +#endif // MEDIA_VIDEO_CAPTURE_LINUX_V4L2_CAPTURE_DELEGATE_SINGLE_PLANE_H_ |