diff mbox

[FFmpeg-devel,1/4] Move lavd/v4l2-common.* to lavc

Message ID 1500923329-2510-2-git-send-email-jorge.ramirez-ortiz@linaro.org
State Superseded
Headers show

Commit Message

Jorge Ramirez-Ortiz July 24, 2017, 7:08 p.m. UTC
From: Alexis Ballier <aballier@gentoo.org>

In preparation to support the integation of the V4L2 API for encoding
and decoding, move v4l2 related files to libavcodec.

Signed-off-by: Alexis Ballier <aballier@gentoo.org>
Reviewed-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
---
 configure                 |   6 ++-
 libavcodec/Makefile       |   1 +
 libavcodec/v4l2-common.c  | 105 ++++++++++++++++++++++++++++++++++++++++++++++
 libavcodec/v4l2-common.h  |  57 +++++++++++++++++++++++++
 libavdevice/Makefile      |   6 +--
 libavdevice/v4l2-common.c | 105 ----------------------------------------------
 libavdevice/v4l2-common.h |  61 ---------------------------
 libavdevice/v4l2.c        |  40 ++++++++++++------
 libavdevice/v4l2enc.c     |  12 +++++-
 9 files changed, 206 insertions(+), 187 deletions(-)
 create mode 100644 libavcodec/v4l2-common.c
 create mode 100644 libavcodec/v4l2-common.h
 delete mode 100644 libavdevice/v4l2-common.c
 delete mode 100644 libavdevice/v4l2-common.h

Comments

Reimar Döffinger July 24, 2017, 10:56 p.m. UTC | #1
Hmm... a bit weird that we have a file with a dash in the file name when everything else uses underscore...


On 24.07.2017, at 21:08, Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org> wrote:

> From: Alexis Ballier <aballier@gentoo.org>
> 
> In preparation to support the integation of the V4L2 API for encoding
> and decoding, move v4l2 related files to libavcodec.
> 
[...]
> +extern const struct v4l_fmt_map avpriv_v4l_fmt_conversion_table[];
> 

Not sure it is even needed, but variables/arrays should never be exported outside the library they are in, not even with avpriv.
Admittedly this code should not be relevant for Windows where it would cause the worst problems, but it not good to export variables from a library on Linux either.
Michael Niedermayer July 25, 2017, 6:09 p.m. UTC | #2
On Mon, Jul 24, 2017 at 09:08:46PM +0200, Jorge Ramirez-Ortiz wrote:
> From: Alexis Ballier <aballier@gentoo.org>
> 
> In preparation to support the integation of the V4L2 API for encoding
> and decoding, move v4l2 related files to libavcodec.
> 
> Signed-off-by: Alexis Ballier <aballier@gentoo.org>
> Reviewed-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> ---
>  configure                 |   6 ++-
>  libavcodec/Makefile       |   1 +
>  libavcodec/v4l2-common.c  | 105 ++++++++++++++++++++++++++++++++++++++++++++++
>  libavcodec/v4l2-common.h  |  57 +++++++++++++++++++++++++
>  libavdevice/Makefile      |   6 +--
>  libavdevice/v4l2-common.c | 105 ----------------------------------------------
>  libavdevice/v4l2-common.h |  61 ---------------------------
>  libavdevice/v4l2.c        |  40 ++++++++++++------
>  libavdevice/v4l2enc.c     |  12 +++++-
>  9 files changed, 206 insertions(+), 187 deletions(-)
>  create mode 100644 libavcodec/v4l2-common.c
>  create mode 100644 libavcodec/v4l2-common.h
>  delete mode 100644 libavdevice/v4l2-common.c
>  delete mode 100644 libavdevice/v4l2-common.h

breaks build

CC      libavdevice/v4l2.o
CC      libavdevice/v4l2enc.o
CC      libavcodec/v4l2-common.o
In file included from libavdevice/v4l2enc.c:29:0:
./libavcodec/v4l2-common.h:36:22: fatal error: avdevice.h: No such file or directory
 #include "avdevice.h"
                      ^
compilation terminated.
In file included from libavdevice/v4l2.c:47:0:
./libavcodec/v4l2-common.h:36:22: fatal error: avdevice.h: No such file or directory
 #include "avdevice.h"
                      ^
compilation terminated.
In file included from libavcodec/v4l2-common.c:19:0:
libavcodec/v4l2-common.h:36:22: fatal error: avdevice.h: No such file or directory
 #include "avdevice.h"
                      ^
compilation terminated.
make: *** [libavdevice/v4l2enc.o] Error 1
make: *** [libavdevice/v4l2.o] Error 1
make: *** [libavcodec/v4l2-common.o] Error 1
make: Target `all' not remade because of errors.

[...]
Jorge Ramirez-Ortiz July 25, 2017, 6:14 p.m. UTC | #3
On 07/25/2017 08:09 PM, Michael Niedermayer wrote:
> On Mon, Jul 24, 2017 at 09:08:46PM +0200, Jorge Ramirez-Ortiz wrote:
>> From: Alexis Ballier <aballier@gentoo.org>
>>
>> In preparation to support the integation of the V4L2 API for encoding
>> and decoding, move v4l2 related files to libavcodec.
>>
>> Signed-off-by: Alexis Ballier <aballier@gentoo.org>
>> Reviewed-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
>> ---
>>   configure                 |   6 ++-
>>   libavcodec/Makefile       |   1 +
>>   libavcodec/v4l2-common.c  | 105 ++++++++++++++++++++++++++++++++++++++++++++++
>>   libavcodec/v4l2-common.h  |  57 +++++++++++++++++++++++++
>>   libavdevice/Makefile      |   6 +--
>>   libavdevice/v4l2-common.c | 105 ----------------------------------------------
>>   libavdevice/v4l2-common.h |  61 ---------------------------
>>   libavdevice/v4l2.c        |  40 ++++++++++++------
>>   libavdevice/v4l2enc.c     |  12 +++++-
>>   9 files changed, 206 insertions(+), 187 deletions(-)
>>   create mode 100644 libavcodec/v4l2-common.c
>>   create mode 100644 libavcodec/v4l2-common.h
>>   delete mode 100644 libavdevice/v4l2-common.c
>>   delete mode 100644 libavdevice/v4l2-common.h
> breaks build
>
> CC      libavdevice/v4l2.o
> CC      libavdevice/v4l2enc.o
> CC      libavcodec/v4l2-common.o
> In file included from libavdevice/v4l2enc.c:29:0:
> ./libavcodec/v4l2-common.h:36:22: fatal error: avdevice.h: No such file or directory
>   #include "avdevice.h"

my fault, I fixed that in the subsequent patches. will fix in v2

>                        ^
> compilation terminated.
> In file included from libavdevice/v4l2.c:47:0:
> ./libavcodec/v4l2-common.h:36:22: fatal error: avdevice.h: No such file or directory
>   #include "avdevice.h"
>                        ^
> compilation terminated.
> In file included from libavcodec/v4l2-common.c:19:0:
> libavcodec/v4l2-common.h:36:22: fatal error: avdevice.h: No such file or directory
>   #include "avdevice.h"
>                        ^
> compilation terminated.
> make: *** [libavdevice/v4l2enc.o] Error 1
> make: *** [libavdevice/v4l2.o] Error 1
> make: *** [libavcodec/v4l2-common.o] Error 1
> make: Target `all' not remade because of errors.
>
> [...]
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
diff mbox

Patch

diff --git a/configure b/configure
index 5811ee1..0ebc022 100755
--- a/configure
+++ b/configure
@@ -1670,6 +1670,7 @@  SUBSYSTEM_LIST="
     pixelutils
     network
     rdft
+    v4l2
 "
 
 # COMPONENT_LIST needs to come last to ensure correct dependency checking
@@ -2267,6 +2268,7 @@  map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
 
 loongson2_deps="mips"
 loongson3_deps="mips"
+v4l2_deps_any="linux_videodev2_h sys_videoio_h"
 mipsfpu_deps="mips"
 mipsdsp_deps="mips"
 mipsdspr2_deps="mips"
@@ -3040,8 +3042,8 @@  sdl2_outdev_deps="sdl2"
 sndio_indev_deps="sndio"
 sndio_outdev_deps="sndio"
 v4l_indev_deps="linux_videodev_h"
-v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
-v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h"
+v4l2_indev_select="v4l2"
+v4l2_outdev_select="v4l2"
 vfwcap_indev_deps="vfw32 vfwcap_defines"
 xcbgrab_indev_deps="libxcb"
 xv_outdev_deps="X11_extensions_Xvlib_h XvGetPortAttribute"
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 357fa1a..a594b23 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -101,6 +101,7 @@  OBJS-$(CONFIG_LZF)                     += lzf.o
 OBJS-$(CONFIG_MDCT)                    += mdct_fixed.o mdct_float.o mdct_fixed_32.o
 OBJS-$(CONFIG_ME_CMP)                  += me_cmp.o
 OBJS-$(CONFIG_MEDIACODEC)              += mediacodecdec_common.o mediacodec_surface.o mediacodec_wrapper.o mediacodec_sw_buffer.o
+OBJS-$(CONFIG_V4L2)                    += v4l2-common.o
 OBJS-$(CONFIG_MPEG_ER)                 += mpeg_er.o
 OBJS-$(CONFIG_MPEGAUDIO)               += mpegaudio.o
 OBJS-$(CONFIG_MPEGAUDIODSP)            += mpegaudiodsp.o                \
diff --git a/libavcodec/v4l2-common.c b/libavcodec/v4l2-common.c
new file mode 100644
index 0000000..884101d
--- /dev/null
+++ b/libavcodec/v4l2-common.c
@@ -0,0 +1,105 @@ 
+/*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "v4l2-common.h"
+
+const struct v4l_fmt_map avpriv_v4l_fmt_conversion_table[] = {
+    //ff_fmt              codec_id              v4l2_fmt
+    { AV_PIX_FMT_YUV420P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV420  },
+    { AV_PIX_FMT_YUV420P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YVU420  },
+    { AV_PIX_FMT_YUV422P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV422P },
+    { AV_PIX_FMT_YUYV422, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUYV    },
+    { AV_PIX_FMT_UYVY422, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_UYVY    },
+    { AV_PIX_FMT_YUV411P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV411P },
+    { AV_PIX_FMT_YUV410P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV410  },
+    { AV_PIX_FMT_YUV410P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YVU410  },
+    { AV_PIX_FMT_RGB555LE,AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB555  },
+    { AV_PIX_FMT_RGB555BE,AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB555X },
+    { AV_PIX_FMT_RGB565LE,AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB565  },
+    { AV_PIX_FMT_RGB565BE,AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB565X },
+    { AV_PIX_FMT_BGR24,   AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_BGR24   },
+    { AV_PIX_FMT_RGB24,   AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB24   },
+    { AV_PIX_FMT_BGR0,    AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_BGR32   },
+    { AV_PIX_FMT_0RGB,    AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB32   },
+    { AV_PIX_FMT_GRAY8,   AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_GREY    },
+#ifdef V4L2_PIX_FMT_Y16
+    { AV_PIX_FMT_GRAY16LE,AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_Y16     },
+#endif
+    { AV_PIX_FMT_NV12,    AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_NV12    },
+    { AV_PIX_FMT_NONE,    AV_CODEC_ID_MJPEG,    V4L2_PIX_FMT_MJPEG   },
+    { AV_PIX_FMT_NONE,    AV_CODEC_ID_MJPEG,    V4L2_PIX_FMT_JPEG    },
+#ifdef V4L2_PIX_FMT_H264
+    { AV_PIX_FMT_NONE,    AV_CODEC_ID_H264,     V4L2_PIX_FMT_H264    },
+#endif
+#ifdef V4L2_PIX_FMT_MPEG4
+    { AV_PIX_FMT_NONE,    AV_CODEC_ID_MPEG4,    V4L2_PIX_FMT_MPEG4   },
+#endif
+#ifdef V4L2_PIX_FMT_CPIA1
+    { AV_PIX_FMT_NONE,    AV_CODEC_ID_CPIA,     V4L2_PIX_FMT_CPIA1   },
+#endif
+#ifdef V4L2_PIX_FMT_SRGGB8
+    { AV_PIX_FMT_BAYER_BGGR8, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_SBGGR8 },
+    { AV_PIX_FMT_BAYER_GBRG8, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_SGBRG8 },
+    { AV_PIX_FMT_BAYER_GRBG8, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_SGRBG8 },
+    { AV_PIX_FMT_BAYER_RGGB8, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_SRGGB8 },
+#endif
+    { AV_PIX_FMT_NONE,    AV_CODEC_ID_NONE,     0                    },
+};
+
+uint32_t avpriv_v4l_fmt_ff2v4l(enum AVPixelFormat pix_fmt, enum AVCodecID codec_id)
+{
+    int i;
+
+    for (i = 0; avpriv_v4l_fmt_conversion_table[i].codec_id != AV_CODEC_ID_NONE; i++) {
+        if ((codec_id == AV_CODEC_ID_NONE ||
+             avpriv_v4l_fmt_conversion_table[i].codec_id == codec_id) &&
+            (pix_fmt == AV_PIX_FMT_NONE ||
+             avpriv_v4l_fmt_conversion_table[i].ff_fmt == pix_fmt)) {
+            return avpriv_v4l_fmt_conversion_table[i].v4l2_fmt;
+        }
+    }
+
+    return 0;
+}
+
+enum AVPixelFormat avpriv_v4l_fmt_v4l2ff(uint32_t v4l2_fmt, enum AVCodecID codec_id)
+{
+    int i;
+
+    for (i = 0; avpriv_v4l_fmt_conversion_table[i].codec_id != AV_CODEC_ID_NONE; i++) {
+        if (avpriv_v4l_fmt_conversion_table[i].v4l2_fmt == v4l2_fmt &&
+            avpriv_v4l_fmt_conversion_table[i].codec_id == codec_id) {
+            return avpriv_v4l_fmt_conversion_table[i].ff_fmt;
+        }
+    }
+
+    return AV_PIX_FMT_NONE;
+}
+
+enum AVCodecID avpriv_v4l_fmt_v4l2codec(uint32_t v4l2_fmt)
+{
+    int i;
+
+    for (i = 0; avpriv_v4l_fmt_conversion_table[i].codec_id != AV_CODEC_ID_NONE; i++) {
+        if (avpriv_v4l_fmt_conversion_table[i].v4l2_fmt == v4l2_fmt) {
+            return avpriv_v4l_fmt_conversion_table[i].codec_id;
+        }
+    }
+
+    return AV_CODEC_ID_NONE;
+}
diff --git a/libavcodec/v4l2-common.h b/libavcodec/v4l2-common.h
new file mode 100644
index 0000000..91dc502
--- /dev/null
+++ b/libavcodec/v4l2-common.h
@@ -0,0 +1,57 @@ 
+/*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVCODEC_V4L2_COMMON_H
+#define AVCODEC_V4L2_COMMON_H
+
+#undef __STRICT_ANSI__ //workaround due to broken kernel headers
+#include "config.h"
+#if HAVE_SYS_VIDEOIO_H
+#include <sys/videoio.h>
+#else
+#if HAVE_ASM_TYPES_H
+#include <asm/types.h>
+#endif
+#include <linux/videodev2.h>
+#endif
+#include "libavutil/avassert.h"
+#include "libavutil/imgutils.h"
+#include "libavutil/log.h"
+#include "libavutil/opt.h"
+#include "avdevice.h"
+#include "timefilter.h"
+#include "libavutil/parseutils.h"
+#include "libavutil/pixdesc.h"
+#include "libavutil/time.h"
+#include "libavutil/avstring.h"
+#include "libavutil/pixfmt.h"
+#include "libavcodec/avcodec.h"
+
+struct v4l_fmt_map {
+    enum AVPixelFormat ff_fmt;
+    enum AVCodecID codec_id;
+    uint32_t v4l2_fmt;
+};
+
+extern const struct v4l_fmt_map avpriv_v4l_fmt_conversion_table[];
+
+uint32_t avpriv_v4l_fmt_ff2v4l(enum AVPixelFormat pix_fmt, enum AVCodecID codec_id);
+enum AVPixelFormat avpriv_v4l_fmt_v4l2ff(uint32_t v4l2_fmt, enum AVCodecID codec_id);
+enum AVCodecID avpriv_v4l_fmt_v4l2codec(uint32_t v4l2_fmt);
+
+#endif /* AVCODEC_V4L2_COMMON_H */
diff --git a/libavdevice/Makefile b/libavdevice/Makefile
index 1d4e9e6..a001e74 100644
--- a/libavdevice/Makefile
+++ b/libavdevice/Makefile
@@ -43,8 +43,8 @@  OBJS-$(CONFIG_QTKIT_INDEV)               += qtkit.o
 OBJS-$(CONFIG_SDL2_OUTDEV)               += sdl2.o
 OBJS-$(CONFIG_SNDIO_INDEV)               += sndio_dec.o sndio.o
 OBJS-$(CONFIG_SNDIO_OUTDEV)              += sndio_enc.o sndio.o
-OBJS-$(CONFIG_V4L2_INDEV)                += v4l2.o v4l2-common.o timefilter.o
-OBJS-$(CONFIG_V4L2_OUTDEV)               += v4l2enc.o v4l2-common.o
+OBJS-$(CONFIG_V4L2_INDEV)                += v4l2.o timefilter.o
+OBJS-$(CONFIG_V4L2_OUTDEV)               += v4l2enc.o
 OBJS-$(CONFIG_V4L_INDEV)                 += v4l.o
 OBJS-$(CONFIG_VFWCAP_INDEV)              += vfwcap.o
 OBJS-$(CONFIG_XCBGRAB_INDEV)             += xcbgrab.o
@@ -64,8 +64,6 @@  SKIPHEADERS-$(CONFIG_DSHOW_INDEV)        += dshow_capture.h
 SKIPHEADERS-$(CONFIG_FBDEV_INDEV)        += fbdev_common.h
 SKIPHEADERS-$(CONFIG_FBDEV_OUTDEV)       += fbdev_common.h
 SKIPHEADERS-$(CONFIG_LIBPULSE)           += pulse_audio_common.h
-SKIPHEADERS-$(CONFIG_V4L2_INDEV)         += v4l2-common.h
-SKIPHEADERS-$(CONFIG_V4L2_OUTDEV)        += v4l2-common.h
 SKIPHEADERS-$(HAVE_ALSA)                 += alsa.h
 SKIPHEADERS-$(HAVE_SNDIO)                += sndio.h
 
diff --git a/libavdevice/v4l2-common.c b/libavdevice/v4l2-common.c
deleted file mode 100644
index 196c09b..0000000
--- a/libavdevice/v4l2-common.c
+++ /dev/null
@@ -1,105 +0,0 @@ 
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "v4l2-common.h"
-
-const struct fmt_map ff_fmt_conversion_table[] = {
-    //ff_fmt              codec_id              v4l2_fmt
-    { AV_PIX_FMT_YUV420P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV420  },
-    { AV_PIX_FMT_YUV420P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YVU420  },
-    { AV_PIX_FMT_YUV422P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV422P },
-    { AV_PIX_FMT_YUYV422, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUYV    },
-    { AV_PIX_FMT_UYVY422, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_UYVY    },
-    { AV_PIX_FMT_YUV411P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV411P },
-    { AV_PIX_FMT_YUV410P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YUV410  },
-    { AV_PIX_FMT_YUV410P, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_YVU410  },
-    { AV_PIX_FMT_RGB555LE,AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB555  },
-    { AV_PIX_FMT_RGB555BE,AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB555X },
-    { AV_PIX_FMT_RGB565LE,AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB565  },
-    { AV_PIX_FMT_RGB565BE,AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB565X },
-    { AV_PIX_FMT_BGR24,   AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_BGR24   },
-    { AV_PIX_FMT_RGB24,   AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB24   },
-    { AV_PIX_FMT_BGR0,    AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_BGR32   },
-    { AV_PIX_FMT_0RGB,    AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_RGB32   },
-    { AV_PIX_FMT_GRAY8,   AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_GREY    },
-#ifdef V4L2_PIX_FMT_Y16
-    { AV_PIX_FMT_GRAY16LE,AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_Y16     },
-#endif
-    { AV_PIX_FMT_NV12,    AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_NV12    },
-    { AV_PIX_FMT_NONE,    AV_CODEC_ID_MJPEG,    V4L2_PIX_FMT_MJPEG   },
-    { AV_PIX_FMT_NONE,    AV_CODEC_ID_MJPEG,    V4L2_PIX_FMT_JPEG    },
-#ifdef V4L2_PIX_FMT_H264
-    { AV_PIX_FMT_NONE,    AV_CODEC_ID_H264,     V4L2_PIX_FMT_H264    },
-#endif
-#ifdef V4L2_PIX_FMT_MPEG4
-    { AV_PIX_FMT_NONE,    AV_CODEC_ID_MPEG4,    V4L2_PIX_FMT_MPEG4   },
-#endif
-#ifdef V4L2_PIX_FMT_CPIA1
-    { AV_PIX_FMT_NONE,    AV_CODEC_ID_CPIA,     V4L2_PIX_FMT_CPIA1   },
-#endif
-#ifdef V4L2_PIX_FMT_SRGGB8
-    { AV_PIX_FMT_BAYER_BGGR8, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_SBGGR8 },
-    { AV_PIX_FMT_BAYER_GBRG8, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_SGBRG8 },
-    { AV_PIX_FMT_BAYER_GRBG8, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_SGRBG8 },
-    { AV_PIX_FMT_BAYER_RGGB8, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_SRGGB8 },
-#endif
-    { AV_PIX_FMT_NONE,    AV_CODEC_ID_NONE,     0                    },
-};
-
-uint32_t ff_fmt_ff2v4l(enum AVPixelFormat pix_fmt, enum AVCodecID codec_id)
-{
-    int i;
-
-    for (i = 0; ff_fmt_conversion_table[i].codec_id != AV_CODEC_ID_NONE; i++) {
-        if ((codec_id == AV_CODEC_ID_NONE ||
-             ff_fmt_conversion_table[i].codec_id == codec_id) &&
-            (pix_fmt == AV_PIX_FMT_NONE ||
-             ff_fmt_conversion_table[i].ff_fmt == pix_fmt)) {
-            return ff_fmt_conversion_table[i].v4l2_fmt;
-        }
-    }
-
-    return 0;
-}
-
-enum AVPixelFormat ff_fmt_v4l2ff(uint32_t v4l2_fmt, enum AVCodecID codec_id)
-{
-    int i;
-
-    for (i = 0; ff_fmt_conversion_table[i].codec_id != AV_CODEC_ID_NONE; i++) {
-        if (ff_fmt_conversion_table[i].v4l2_fmt == v4l2_fmt &&
-            ff_fmt_conversion_table[i].codec_id == codec_id) {
-            return ff_fmt_conversion_table[i].ff_fmt;
-        }
-    }
-
-    return AV_PIX_FMT_NONE;
-}
-
-enum AVCodecID ff_fmt_v4l2codec(uint32_t v4l2_fmt)
-{
-    int i;
-
-    for (i = 0; ff_fmt_conversion_table[i].codec_id != AV_CODEC_ID_NONE; i++) {
-        if (ff_fmt_conversion_table[i].v4l2_fmt == v4l2_fmt) {
-            return ff_fmt_conversion_table[i].codec_id;
-        }
-    }
-
-    return AV_CODEC_ID_NONE;
-}
diff --git a/libavdevice/v4l2-common.h b/libavdevice/v4l2-common.h
deleted file mode 100644
index 0cbaec8..0000000
--- a/libavdevice/v4l2-common.h
+++ /dev/null
@@ -1,61 +0,0 @@ 
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef AVDEVICE_V4L2_COMMON_H
-#define AVDEVICE_V4L2_COMMON_H
-
-#undef __STRICT_ANSI__ //workaround due to broken kernel headers
-#include "config.h"
-#include "libavformat/internal.h"
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <sys/time.h>
-#if HAVE_SYS_VIDEOIO_H
-#include <sys/videoio.h>
-#else
-#if HAVE_ASM_TYPES_H
-#include <asm/types.h>
-#endif
-#include <linux/videodev2.h>
-#endif
-#include "libavutil/avassert.h"
-#include "libavutil/imgutils.h"
-#include "libavutil/log.h"
-#include "libavutil/opt.h"
-#include "avdevice.h"
-#include "timefilter.h"
-#include "libavutil/parseutils.h"
-#include "libavutil/pixdesc.h"
-#include "libavutil/time.h"
-#include "libavutil/avstring.h"
-
-struct fmt_map {
-    enum AVPixelFormat ff_fmt;
-    enum AVCodecID codec_id;
-    uint32_t v4l2_fmt;
-};
-
-extern const struct fmt_map ff_fmt_conversion_table[];
-
-uint32_t ff_fmt_ff2v4l(enum AVPixelFormat pix_fmt, enum AVCodecID codec_id);
-enum AVPixelFormat ff_fmt_v4l2ff(uint32_t v4l2_fmt, enum AVCodecID codec_id);
-enum AVCodecID ff_fmt_v4l2codec(uint32_t v4l2_fmt);
-
-#endif /* AVDEVICE_V4L2_COMMON_H */
diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
index 17451cd..0dd3d61 100644
--- a/libavdevice/v4l2.c
+++ b/libavdevice/v4l2.c
@@ -31,8 +31,23 @@ 
  */
 
 #include <stdatomic.h>
-
-#include "v4l2-common.h"
+#include <sys/ioctl.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "libavutil/atomic.h"
+#include "libavutil/avassert.h"
+#include "libavutil/avstring.h"
+#include "libavutil/imgutils.h"
+#include "libavutil/parseutils.h"
+#include "libavutil/time.h"
+#include "libavcodec/v4l2-common.h"
+#include "libavformat/internal.h"
+#include "avdevice.h"
+#include "timefilter.h"
 #include <dirent.h>
 
 #if CONFIG_LIBV4L2
@@ -274,8 +289,8 @@  static void list_formats(AVFormatContext *ctx, int type)
     struct v4l2_fmtdesc vfd = { .type = V4L2_BUF_TYPE_VIDEO_CAPTURE };
 
     while(!v4l2_ioctl(s->fd, VIDIOC_ENUM_FMT, &vfd)) {
-        enum AVCodecID codec_id = ff_fmt_v4l2codec(vfd.pixelformat);
-        enum AVPixelFormat pix_fmt = ff_fmt_v4l2ff(vfd.pixelformat, codec_id);
+        enum AVCodecID codec_id = avpriv_v4l_fmt_v4l2codec(vfd.pixelformat);
+        enum AVPixelFormat pix_fmt = avpriv_v4l_fmt_v4l2ff(vfd.pixelformat, codec_id);
 
         vfd.index++;
 
@@ -766,7 +781,7 @@  static int device_try_init(AVFormatContext *ctx,
 {
     int ret, i;
 
-    *desired_format = ff_fmt_ff2v4l(pix_fmt, ctx->video_codec_id);
+    *desired_format = avpriv_v4l_fmt_ff2v4l(pix_fmt, ctx->video_codec_id);
 
     if (*desired_format) {
         ret = device_init(ctx, width, height, *desired_format);
@@ -778,14 +793,14 @@  static int device_try_init(AVFormatContext *ctx,
     }
 
     if (!*desired_format) {
-        for (i = 0; ff_fmt_conversion_table[i].codec_id != AV_CODEC_ID_NONE; i++) {
+        for (i = 0; avpriv_v4l_fmt_conversion_table[i].codec_id != AV_CODEC_ID_NONE; i++) {
             if (ctx->video_codec_id == AV_CODEC_ID_NONE ||
-                ff_fmt_conversion_table[i].codec_id == ctx->video_codec_id) {
+                avpriv_v4l_fmt_conversion_table[i].codec_id == ctx->video_codec_id) {
                 av_log(ctx, AV_LOG_DEBUG, "Trying to set codec:%s pix_fmt:%s\n",
-                       avcodec_get_name(ff_fmt_conversion_table[i].codec_id),
-                       (char *)av_x_if_null(av_get_pix_fmt_name(ff_fmt_conversion_table[i].ff_fmt), "none"));
+                       avcodec_get_name(avpriv_v4l_fmt_conversion_table[i].codec_id),
+                       (char *)av_x_if_null(av_get_pix_fmt_name(avpriv_v4l_fmt_conversion_table[i].ff_fmt), "none"));
 
-                *desired_format = ff_fmt_conversion_table[i].v4l2_fmt;
+                *desired_format = avpriv_v4l_fmt_conversion_table[i].v4l2_fmt;
                 ret = device_init(ctx, width, height, *desired_format);
                 if (ret >= 0)
                     break;
@@ -804,7 +819,7 @@  static int device_try_init(AVFormatContext *ctx,
         }
     }
 
-    *codec_id = ff_fmt_v4l2codec(*desired_format);
+    *codec_id = avpriv_v4l_fmt_v4l2codec(*desired_format);
     av_assert0(*codec_id != AV_CODEC_ID_NONE);
     return ret;
 }
@@ -937,11 +952,10 @@  static int v4l2_read_header(AVFormatContext *ctx)
     if ((res = v4l2_set_parameters(ctx)) < 0)
         goto fail;
 
-    st->codecpar->format = ff_fmt_v4l2ff(desired_format, codec_id);
+    st->codecpar->format = avpriv_v4l_fmt_v4l2ff(desired_format, codec_id);    
     if (st->codecpar->format != AV_PIX_FMT_NONE)
         s->frame_size = av_image_get_buffer_size(st->codecpar->format,
                                                  s->width, s->height, 1);
-
     if ((res = mmap_init(ctx)) ||
         (res = mmap_start(ctx)) < 0)
             goto fail;
diff --git a/libavdevice/v4l2enc.c b/libavdevice/v4l2enc.c
index faf6e07..2268f98 100644
--- a/libavdevice/v4l2enc.c
+++ b/libavdevice/v4l2enc.c
@@ -18,7 +18,15 @@ 
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "v4l2-common.h"
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "libavutil/imgutils.h"
+#include "libavutil/pixdesc.h"
+#include "libavcodec/v4l2-common.h"
 #include "avdevice.h"
 
 typedef struct {
@@ -56,7 +64,7 @@  static av_cold int write_header(AVFormatContext *s1)
 
     par = s1->streams[0]->codecpar;
 
-    v4l2_pixfmt = ff_fmt_ff2v4l(par->format, AV_CODEC_ID_RAWVIDEO);
+    v4l2_pixfmt = avpriv_v4l_fmt_ff2v4l(par->format, AV_CODEC_ID_RAWVIDEO);
     if (!v4l2_pixfmt) { // XXX: try to force them one by one?
         av_log(s1, AV_LOG_ERROR, "Unknown V4L2 pixel format equivalent for %s\n",
                av_get_pix_fmt_name(par->format));