1From 248d9a55a424c2c70dd39d3d2aa8a2ec4d5a5b86 Mon Sep 17 00:00:00 2001
2From: Damian Hobson-Garcia <dhobsong@igel.co.jp>
3Date: Wed, 21 Mar 2018 13:18:17 +0200
4Subject: [PATCH 05/14] Add mmap via libv4l to generic_v4l2_device
5
6Issue #437
7---
8 chromium/media/gpu/v4l2/generic_v4l2_device.cc | 10 ++++++++++
9 chromium/media/gpu/v4l2/v4l2.sig               |  2 ++
10 2 files changed, 12 insertions(+)
11
12diff --git a/chromium/media/gpu/v4l2/generic_v4l2_device.cc b/chromium/media/gpu/v4l2/generic_v4l2_device.cc
13index f0f103458..70a15d047 100644
14--- a/chromium/media/gpu/v4l2/generic_v4l2_device.cc
15+++ b/chromium/media/gpu/v4l2/generic_v4l2_device.cc
16@@ -99,10 +99,20 @@ void* GenericV4L2Device::Mmap(void* addr,
17                               int flags,
18                               unsigned int offset) {
19   DCHECK(device_fd_.is_valid());
20+#if BUILDFLAG(USE_LIBV4L2)
21+  if (use_libv4l2_)
22+    return v4l2_mmap(addr, len, prot, flags, device_fd_.get(), offset);
23+#endif
24   return mmap(addr, len, prot, flags, device_fd_.get(), offset);
25 }
26
27 void GenericV4L2Device::Munmap(void* addr, unsigned int len) {
28+#if BUILDFLAG(USE_LIBV4L2)
29+  if (use_libv4l2_) {
30+    v4l2_munmap(addr, len);
31+    return;
32+  }
33+#endif
34   munmap(addr, len);
35 }
36
37diff --git a/chromium/media/gpu/v4l2/v4l2.sig b/chromium/media/gpu/v4l2/v4l2.sig
38index 4269fb48d..71b5b3787 100644
39--- a/chromium/media/gpu/v4l2/v4l2.sig
40+++ b/chromium/media/gpu/v4l2/v4l2.sig
41@@ -8,3 +8,5 @@
42 LIBV4L_PUBLIC int v4l2_close(int fd);
43 LIBV4L_PUBLIC int v4l2_ioctl(int fd, unsigned long int request, ...);
44 LIBV4L_PUBLIC int v4l2_fd_open(int fd, int v4l2_flags);
45+LIBV4L_PUBLIC void *v4l2_mmap(void *start, size_t length, int prot, int flags, int fd, int64_t offset);
46+LIBV4L_PUBLIC int v4l2_munmap(void *_start, size_t length);
47--
482.20.1
49
50