summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/man/en/options.rst7
-rw-r--r--core/cfg-mplayer.h2
-rw-r--r--core/m_option.c35
-rw-r--r--core/m_option.h3
-rw-r--r--core/mp_common.h3
-rw-r--r--demux/demux_mng.c5
-rw-r--r--demux/demux_rawvideo.c81
-rw-r--r--demux/stheader.h1
-rw-r--r--etc/codecs.conf9
-rw-r--r--stream/tv.c45
-rw-r--r--stream/tvi_bsdbt848.c6
-rw-r--r--stream/tvi_def.h12
-rw-r--r--stream/tvi_dummy.c7
-rw-r--r--stream/tvi_v4l2.c98
-rw-r--r--video/decode/lavc.h1
-rw-r--r--video/decode/vd_lavc.c19
-rw-r--r--video/filter/vf_crop.c8
-rw-r--r--video/filter/vf_delogo.c10
-rw-r--r--video/filter/vf_divtc.c7
-rw-r--r--video/filter/vf_down3dright.c8
-rw-r--r--video/filter/vf_eq.c9
-rw-r--r--video/filter/vf_expand.c2
-rw-r--r--video/filter/vf_format.c2
-rw-r--r--video/filter/vf_gradfun.c13
-rw-r--r--video/filter/vf_hqdn3d.c13
-rw-r--r--video/filter/vf_ilpack.c8
-rw-r--r--video/filter/vf_mirror.c3
-rw-r--r--video/filter/vf_noformat.c2
-rw-r--r--video/filter/vf_noise.c10
-rw-r--r--video/filter/vf_pp.c10
-rw-r--r--video/filter/vf_pullup.c4
-rw-r--r--video/filter/vf_rotate.c10
-rw-r--r--video/filter/vf_scale.c39
-rw-r--r--video/filter/vf_sub.c12
-rw-r--r--video/filter/vf_swapuv.c11
-rw-r--r--video/filter/vf_unsharp.c10
-rw-r--r--video/filter/vf_yadif.c5
-rw-r--r--video/fmt-conversion.c58
-rw-r--r--video/image_writer.c8
-rw-r--r--video/img_format.c217
-rw-r--r--video/img_format.h422
-rw-r--r--video/img_fourcc.h57
-rw-r--r--video/out/gl_common.c10
-rw-r--r--video/out/vo.h2
-rw-r--r--video/out/vo_corevideo.m4
-rw-r--r--video/out/vo_direct3d.c12
-rw-r--r--video/out/vo_opengl.c2
-rw-r--r--video/out/vo_opengl_old.c4
-rw-r--r--video/out/vo_sdl.c12
-rw-r--r--video/out/vo_vdpau.c12
-rw-r--r--video/out/vo_x11.c4
-rw-r--r--video/out/vo_xv.c36
52 files changed, 695 insertions, 695 deletions
diff --git a/DOCS/man/en/options.rst b/DOCS/man/en/options.rst
index 936f3b3293..c629d35046 100644
--- a/DOCS/man/en/options.rst
+++ b/DOCS/man/en/options.rst
@@ -1605,10 +1605,11 @@
:sqcif|qcif|cif|4cif|pal|ntsc: set standard image size
:w=<value>: image width in pixels
:h=<value>: image height in pixels
- :i420|yv12|yuy2|y8: set colorspace
:format=<value>: colorspace (fourcc) in hex or string
- constant. Use ``--rawvideo=format=help``
- for a list of possible strings.
+ constant.
+ :mp-format=<value>: colorspace by internal video format
+ Use ``--rawvideo=mp-format=help``
+ for a list of possible formats.
:size=<value>: frame size in Bytes
*EXAMPLE*:
diff --git a/core/cfg-mplayer.h b/core/cfg-mplayer.h
index 9627a25140..0aef77ae70 100644
--- a/core/cfg-mplayer.h
+++ b/core/cfg-mplayer.h
@@ -107,7 +107,7 @@ const m_option_t tvopts_conf[]={
{"width", &stream_tv_defaults.width, CONF_TYPE_INT, 0, 0, 4096, NULL},
{"height", &stream_tv_defaults.height, CONF_TYPE_INT, 0, 0, 4096, NULL},
{"input", &stream_tv_defaults.input, CONF_TYPE_INT, 0, 0, 20, NULL},
- {"outfmt", &stream_tv_defaults.outfmt, CONF_TYPE_IMGFMT, 0, 0, 0, NULL},
+ {"outfmt", &stream_tv_defaults.outfmt, CONF_TYPE_FOURCC, 0, 0, 0, NULL},
{"fps", &stream_tv_defaults.fps, CONF_TYPE_FLOAT, 0, 0, 100.0, NULL},
{"channels", &stream_tv_defaults.channels, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
{"brightness", &stream_tv_defaults.brightness, CONF_TYPE_INT, CONF_RANGE, -100, 100, NULL},
diff --git a/core/m_option.c b/core/m_option.c
index 7ea25c25b0..82f6265124 100644
--- a/core/m_option.c
+++ b/core/m_option.c
@@ -1203,6 +1203,41 @@ const m_option_type_t m_option_type_imgfmt = {
.copy = copy_opt,
};
+static int parse_fourcc(const m_option_t *opt, struct bstr name,
+ struct bstr param, void *dst)
+{
+ if (param.len == 0)
+ return M_OPT_MISSING_PARAM;
+
+ unsigned int value;
+
+ if (param.len == 4) {
+ uint8_t *s = param.start;
+ value = s[0] | (s[1] << 8) | (s[2] << 16) | (s[3] << 24);
+ } else {
+ bstr rest;
+ value = bstrtoll(param, &rest, 16);
+ if (rest.len != 0) {
+ mp_msg(MSGT_CFGPARSER, MSGL_ERR,
+ "Option %.*s: invalid FourCC: '%.*s'\n",
+ BSTR_P(name), BSTR_P(param));
+ return M_OPT_INVALID;
+ }
+ }
+
+ if (dst)
+ *((unsigned int *)dst) = value;
+
+ return 1;
+}
+
+const m_option_type_t m_option_type_fourcc = {
+ .name = "FourCC",
+ .size = sizeof(unsigned int),
+ .parse = parse_fourcc,
+ .copy = copy_opt,
+};
+
#include "audio/format.h"
static int parse_afmt(const m_option_t *opt, struct bstr name,
diff --git a/core/m_option.h b/core/m_option.h
index 20bcfba1c2..f6c346521a 100644
--- a/core/m_option.h
+++ b/core/m_option.h
@@ -53,6 +53,7 @@ extern const m_option_type_t m_option_type_print_func_param;
extern const m_option_type_t m_option_type_subconfig;
extern const m_option_type_t m_option_type_subconfig_struct;
extern const m_option_type_t m_option_type_imgfmt;
+extern const m_option_type_t m_option_type_fourcc;
extern const m_option_type_t m_option_type_afmt;
extern const m_option_type_t m_option_type_color;
@@ -177,6 +178,7 @@ struct m_sub_options {
#define CONF_TYPE_SUBCONFIG (&m_option_type_subconfig)
#define CONF_TYPE_STRING_LIST (&m_option_type_string_list)
#define CONF_TYPE_IMGFMT (&m_option_type_imgfmt)
+#define CONF_TYPE_FOURCC (&m_option_type_fourcc)
#define CONF_TYPE_AFMT (&m_option_type_afmt)
#define CONF_TYPE_SPAN (&m_option_type_span)
#define CONF_TYPE_OBJ_SETTINGS_LIST (&m_option_type_obj_settings_list)
@@ -198,6 +200,7 @@ union m_option_value {
char *string;
char **string_list;
int imgfmt;
+ unsigned int fourcc;
int afmt;
m_span_t span;
m_obj_settings_t *obj_settings_list;
diff --git a/core/mp_common.h b/core/mp_common.h
index 184cea2a32..0ee14ab484 100644
--- a/core/mp_common.h
+++ b/core/mp_common.h
@@ -28,6 +28,9 @@
// both int64_t and double should be able to represent this exactly
#define MP_NOPTS_VALUE (-1LL<<63)
+#define MP_CONCAT_(a, b) a ## b
+#define MP_CONCAT(a, b) MP_CONCAT_(a, b)
+
#define ROUND(x) ((int)((x) < 0 ? (x) - 0.5 : (x) + 0.5))
extern const char *mplayer_version;
diff --git a/demux/demux_mng.c b/demux/demux_mng.c
index 1d21d9d218..74f633d64e 100644
--- a/demux/demux_mng.c
+++ b/demux/demux_mng.c
@@ -31,7 +31,7 @@
#include "stream/stream.h"
#include "demux.h"
#include "stheader.h"
-#include "video/img_format.h"
+#include "video/img_fourcc.h"
#define MNG_SUPPORT_READ
#define MNG_SUPPORT_DISPLAY
@@ -437,7 +437,8 @@ static demuxer_t * demux_mng_open(demuxer_t * demuxer)
sh_video->ds = demuxer->video;
// set format of pixels in video packets
- sh_video->format = IMGFMT_RGB32;
+ sh_video->format = MP_FOURCC_RAWVIDEO;
+ sh_video->imgfmt = MP_FOURCC_RGB32;
// set framerate to some value (MNG does not have a fixed framerate)
sh_video->fps = 5.0f;
diff --git a/demux/demux_rawvideo.c b/demux/demux_rawvideo.c
index 68dc270e44..47d32f933e 100644
--- a/demux/demux_rawvideo.c
+++ b/demux/demux_rawvideo.c
@@ -30,8 +30,10 @@
#include "stheader.h"
#include "video/img_format.h"
+#include "video/img_fourcc.h"
-static int format = IMGFMT_I420;
+static int format = MP_FOURCC_I420;
+static int mp_format;
static int size_id = 0;
static int width = 0;
static int height = 0;
@@ -51,15 +53,8 @@ const m_option_t demux_rawvideo_opts[] = {
{ "16cif", &size_id, CONF_TYPE_FLAG,0,0,7, NULL },
{ "sif", &size_id, CONF_TYPE_FLAG,0,0,8, NULL },
// format:
- { "format", &format, CONF_TYPE_IMGFMT, 0, 0 , 0, NULL },
- // below options are obsolete
- { "i420", &format, CONF_TYPE_FLAG, 0, 0 , IMGFMT_I420, NULL },
- { "yv12", &format, CONF_TYPE_FLAG, 0, 0 , IMGFMT_YV12, NULL },
- { "nv12", &format, CONF_TYPE_FLAG, 0, 0 , IMGFMT_NV12, NULL },
- { "hm12", &format, CONF_TYPE_FLAG, 0, 0 , IMGFMT_HM12, NULL },
- { "yuy2", &format, CONF_TYPE_FLAG, 0, 0 , IMGFMT_YUY2, NULL },
- { "uyvy", &format, CONF_TYPE_FLAG, 0, 0 , IMGFMT_UYVY, NULL },
- { "y8", &format, CONF_TYPE_FLAG, 0, 0 , IMGFMT_Y8, NULL },
+ { "format", &format, CONF_TYPE_FOURCC, 0, 0 , 0, NULL },
+ { "mp-format", &mp_format, CONF_TYPE_IMGFMT, 0, 0 , 0, NULL },
// misc:
{ "fps", &fps, CONF_TYPE_FLOAT,CONF_RANGE,0.001,1000, NULL },
{ "size", &imgsize, CONF_TYPE_INT, CONF_RANGE, 1 , 8192*8192*4, NULL },
@@ -86,30 +81,58 @@ static demuxer_t* demux_rawvideo_open(demuxer_t* demuxer) {
return 0;
}
- if(!imgsize)
- switch(format){
- case IMGFMT_I420:
- case IMGFMT_IYUV:
- case IMGFMT_NV12:
- case IMGFMT_HM12:
- case IMGFMT_YV12: imgsize=width*height+2*(width>>1)*(height>>1);break;
- case IMGFMT_YUY2:
- case IMGFMT_UYVY: imgsize=width*height*2;break;
- case IMGFMT_Y800:
- case IMGFMT_Y8: imgsize=width*height;break;
- default:
- if (IMGFMT_IS_RGB(format))
- imgsize = width * height * ((IMGFMT_RGB_DEPTH(format) + 7) >> 3);
- else if (IMGFMT_IS_BGR(format))
- imgsize = width * height * ((IMGFMT_BGR_DEPTH(format) + 7) >> 3);
- else {
+ int tag, fmt;
+ if (mp_format) {
+ tag = MP_FOURCC_IMGFMT;
+ fmt = mp_format;
+ if (!imgsize) {
+ struct mp_imgfmt_desc desc = mp_imgfmt_get_desc(mp_format);
+ for (int p = 0; p < desc.num_planes; p++) {
+ imgsize += ((width >> desc.xs[p]) * (height >> desc.ys[p]) *
+ desc.bpp[p] + 7) / 8;
+ }
+ }
+ } else {
+ tag = MP_FOURCC_RAWVIDEO;
+ fmt = format;
+ }
+
+ if (!imgsize) {
+ int bpp = 0;
+ switch(format){
+ case MP_FOURCC_I420: case MP_FOURCC_IYUV:
+ case MP_FOURCC_NV12: case MP_FOURCC_NV21:
+ case MP_FOURCC_HM12:
+ case MP_FOURCC_YV12:
+ bpp = 12;
+ break;
+ case MP_FOURCC_RGB12: case MP_FOURCC_BGR12:
+ case MP_FOURCC_RGB15: case MP_FOURCC_BGR15:
+ case MP_FOURCC_RGB16: case MP_FOURCC_BGR16:
+ case MP_FOURCC_YUY2: case MP_FOURCC_UYVY:
+ bpp = 16;
+ break;
+ case MP_FOURCC_RGB8: case MP_FOURCC_BGR8:
+ case MP_FOURCC_Y800: case MP_FOURCC_Y8:
+ bpp = 8;
+ break;
+ case MP_FOURCC_RGB24: case MP_FOURCC_BGR24:
+ bpp = 24;
+ break;
+ case MP_FOURCC_RGB32: case MP_FOURCC_BGR32:
+ bpp = 32;
+ break;
+ }
+ if (!bpp) {
mp_msg(MSGT_DEMUX,MSGL_ERR,"rawvideo: img size not specified and unknown format!\n");
return 0;
- }
+ }
+ imgsize = width * height * bpp / 8;
}
sh_video = new_sh_video(demuxer,0);
- sh_video->format=format;
+ sh_video->format=tag;
+ sh_video->imgfmt=fmt;
sh_video->fps=fps;
sh_video->frametime=1.0/fps;
sh_video->disp_w=width;
diff --git a/demux/stheader.h b/demux/stheader.h
index 4745e452d5..97d079f4e6 100644
--- a/demux/stheader.h
+++ b/demux/stheader.h
@@ -154,6 +154,7 @@ typedef struct sh_video {
int disp_w, disp_h; // display size (filled by demuxer)
int colorspace; // mp_csp
int color_range; // mp_csp_levels
+ int imgfmt; // raw video image format
// output driver/filters: (set by libmpcodecs core)
unsigned int outfmt;
struct vf_instance *vfilter; // video filter chain
diff --git a/etc/codecs.conf b/etc/codecs.conf
index 46f87e1cd6..ba00957a94 100644
--- a/etc/codecs.conf
+++ b/etc/codecs.conf
@@ -1430,6 +1430,15 @@ videocodec ffrawy800
driver ffmpeg
dll rawvideo
+; used by some demuxers (demux_rawvideo.c, demux_mng.c, stream/tv.c)
+videocodec ffrawvideo
+ info "RAW video"
+ status working
+ fourcc MPrv
+ fourcc MPvf ; internal mpv FourCC for demux_rawvideo
+ driver ffmpeg
+ dll rawvideo
+
;=============================================================================
; AUDIO CODECS
;=============================================================================
diff --git a/stream/tv.c b/stream/tv.c
index e5e64dd636..a9bc535cee 100644
--- a/stream/tv.c
+++ b/stream/tv.c
@@ -42,7 +42,7 @@
#include "demux/stheader.h"
#include "audio/format.h"
-#include "video/img_format.h"
+#include "video/img_fourcc.h"
#include "libavutil/avstring.h"
#include "osdep/timer.h"
@@ -409,14 +409,14 @@ static int open_tv(tvi_handle_t *tvh)
int i;
const tvi_functions_t *funcs = tvh->functions;
static const int tv_fmt_list[] = {
- IMGFMT_YV12,
- IMGFMT_I420,
- IMGFMT_UYVY,
- IMGFMT_YUY2,
- IMGFMT_RGB32,
- IMGFMT_RGB24,
- IMGFMT_RGB16,
- IMGFMT_RGB15
+ MP_FOURCC_YV12,
+ MP_FOURCC_I420,
+ MP_FOURCC_UYVY,
+ MP_FOURCC_YUY2,
+ MP_FOURCC_RGB32,
+ MP_FOURCC_RGB24,
+ MP_FOURCC_RGB16,
+ MP_FOURCC_RGB15
};
if (funcs->control(tvh->priv, TVI_CONTROL_IS_VIDEO, 0) != TVI_CONTROL_TRUE)
@@ -437,16 +437,16 @@ static int open_tv(tvi_handle_t *tvh)
{
switch(tvh->tv_param->outfmt)
{
- case IMGFMT_YV12:
- case IMGFMT_I420:
- case IMGFMT_UYVY:
- case IMGFMT_YUY2:
- case IMGFMT_RGB32:
- case IMGFMT_RGB24:
- case IMGFMT_BGR32:
- case IMGFMT_BGR24:
- case IMGFMT_BGR16:
- case IMGFMT_BGR15:
+ case MP_FOURCC_YV12:
+ case MP_FOURCC_I420:
+ case MP_FOURCC_UYVY:
+ case MP_FOURCC_YUY2:
+ case MP_FOURCC_RGB32:
+ case MP_FOURCC_RGB24:
+ case MP_FOURCC_BGR32:
+ case MP_FOURCC_BGR24:
+ case MP_FOURCC_BGR16:
+ case MP_FOURCC_BGR15:
break;
default:
mp_tmsg(MSGT_TV, MSGL_ERR,
@@ -715,9 +715,10 @@ static demuxer_t* demux_open_tv(demuxer_t *demuxer)
sh_video = new_sh_video(demuxer, 0);
/* get IMAGE FORMAT */
- funcs->control(tvh->priv, TVI_CONTROL_VID_GET_FORMAT, &sh_video->format);
-// if (IMGFMT_IS_RGB(sh_video->format) || IMGFMT_IS_BGR(sh_video->format))
-// sh_video->format = 0x0;
+ int fourcc;
+ funcs->control(tvh->priv, TVI_CONTROL_VID_GET_FORMAT, &fourcc);
+ sh_video->format = MP_FOURCC_RAWVIDEO;
+ sh_video->imgfmt = fourcc;
/* set FPS and FRAMETIME */
diff --git a/stream/tvi_bsdbt848.c b/stream/tvi_bsdbt848.c
index 19d68dd899..4f101ee74f 100644
--- a/stream/tvi_bsdbt848.c
+++ b/stream/tvi_bsdbt848.c
@@ -79,7 +79,7 @@
#endif
#include "audio/format.h"
-#include "video/img_format.h"
+#include "video/img_fourcc.h"
#include "tv.h"
#include "core/mp_msg.h"
@@ -450,14 +450,14 @@ static int control(priv_t *priv, int cmd, void *arg)
}
case TVI_CONTROL_VID_GET_FORMAT:
- *(int *)arg = IMGFMT_UYVY;
+ *(int *)arg = MP_FOURCC_UYVY;
return TVI_CONTROL_TRUE;
case TVI_CONTROL_VID_SET_FORMAT:
{
int req_fmt = *(int *)arg;
- if(req_fmt != IMGFMT_UYVY) return TVI_CONTROL_FALSE;
+ if(req_fmt != MP_FOURCC_UYVY) return TVI_CONTROL_FALSE;
return TVI_CONTROL_TRUE;
}
diff --git a/stream/tvi_def.h b/stream/tvi_def.h
index 367f2adb35..959237aa04 100644
--- a/stream/tvi_def.h
+++ b/stream/tvi_def.h
@@ -21,7 +21,7 @@
#include <stdlib.h> /* malloc */
#include <string.h> /* memset */
-#include "video/img_format.h"
+#include "video/img_fourcc.h"
#include "tv.h"
static int init(priv_t *priv);
@@ -54,17 +54,17 @@ static inline void fill_blank_frame(char* buffer,int len,int fmt){
// RGB(0,0,255) <-> YVU(41,110,240)
switch(fmt){
- case IMGFMT_YV12:
+ case MP_FOURCC_YV12:
memset(buffer, 41,4*len/6); //Y
memset(buffer+4*len/6, 110,len/6);//V
memset(buffer+5*len/6, 240,len/6);//U
break;
- case IMGFMT_I420:
+ case MP_FOURCC_I420:
memset(buffer, 41,4*len/6); //Y
memset(buffer+4*len/6, 240,len/6);//U
memset(buffer+5*len/6, 110,len/6);//V
break;
- case IMGFMT_UYVY:
+ case MP_FOURCC_UYVY:
for(i=0;i<len;i+=4){
buffer[i]=0xFF;
buffer[i+1]=0;
@@ -72,7 +72,7 @@ static inline void fill_blank_frame(char* buffer,int len,int fmt){
buffer[i+3]=0;
}
break;
- case IMGFMT_YUY2:
+ case MP_FOURCC_YUY2:
for(i=0;i<len;i+=4){
buffer[i]=0;
buffer[i+1]=0xFF;
@@ -80,7 +80,7 @@ static inline void fill_blank_frame(char* buffer,int len,int fmt){
buffer[i+3]=0;
}
break;
- case IMGFMT_MJPEG:
+ case MP_FOURCC_MJPEG:
/*
This is compressed format. I don't know yet how to fill such frame with blue color.
Keeping frame unchanged.
diff --git a/stream/tvi_dummy.c b/stream/tvi_dummy.c
index 48a745450e..c0bf8bba32 100644
--- a/stream/tvi_dummy.c
+++ b/stream/tvi_dummy.c
@@ -21,7 +21,7 @@
#include "config.h"
#include <stdio.h>
-#include "video/img_format.h"
+#include "video/img_fourcc.h"
#include "tv.h"
static tvi_handle_t *tvi_init_dummy(tv_param_t* tv_param);
@@ -74,14 +74,13 @@ static int control(priv_t *priv, int cmd, void *arg)
case TVI_CONTROL_IS_VIDEO:
return TVI_CONTROL_TRUE;
case TVI_CONTROL_VID_GET_FORMAT:
-// *(int *)arg = IMGFMT_YV12;
- *(int *)arg = IMGFMT_YV12;
+ *(int *)arg = MP_FOURCC_YV12;
return TVI_CONTROL_TRUE;
case TVI_CONTROL_VID_SET_FORMAT:
{
// int req_fmt = *(int *)arg;
int req_fmt = *(int *)arg;
- if (req_fmt != IMGFMT_YV12)
+ if (req_fmt != MP_FOURCC_YV12)
return TVI_CONTROL_FALSE;
return TVI_CONTROL_TRUE;
}
diff --git a/stream/tvi_v4l2.c b/stream/tvi_v4l2.c
index 14313d0966..abe455d8bf 100644
--- a/stream/tvi_v4l2.c
+++ b/stream/tvi_v4l2.c
@@ -56,7 +56,7 @@ known issues:
#include <linux/videodev2.h>
#endif
#include "core/mp_msg.h"
-#include "video/img_format.h"
+#include "video/img_fourcc.h"
#include "audio/format.h"
#include "tv.h"
#include "audio_in.h"
@@ -180,27 +180,27 @@ static void *video_grabber(void *data);
Only few of the fourccs are the same in v4l2 and mplayer:
- IMGFMT_YVU9 == V4L2_PIX_FMT_YVU410
- IMGFMT_YV12 == V4L2_PIX_FMT_YVU420
- IMGFMT_NV12 == V4L2_PIX_FMT_NV12
- IMGFMT_422P == V4L2_PIX_FMT_YUV422P
- IMGFMT_411P == V4L2_PIX_FMT_YUV411P
- IMGFMT_UYVY == V4L2_PIX_FMT_UYVY
- IMGFMT_Y41P == V4L2_PIX_FMT_Y41P
+ MP_FOURCC_YVU9 == V4L2_PIX_FMT_YVU410
+ MP_FOURCC_YV12 == V4L2_PIX_FMT_YVU420
+ MP_FOURCC_NV12 == V4L2_PIX_FMT_NV12
+ MP_FOURCC_422P == V4L2_PIX_FMT_YUV422P
+ MP_FOURCC_411P == V4L2_PIX_FMT_YUV411P
+ MP_FOURCC_UYVY == V4L2_PIX_FMT_UYVY
+ MP_FOURCC_Y41P == V4L2_PIX_FMT_Y41P
This may be an useful translation table for some others:
- IMGFMT_RGB8 == V4L2_PIX_FMT_RGB332
- IMGFMT_BGR15 == V4L2_PIX_FMT_RGB555
- IMGFMT_BGR16 == V4L2_PIX_FMT_RGB565
- IMGFMT_RGB24 == V4L2_PIX_FMT_RGB24
- IMGFMT_RGB32 == V4L2_PIX_FMT_RGB32
- IMGFMT_BGR24 == V4L2_PIX_FMT_BGR24
- IMGFMT_BGR32 == V4L2_PIX_FMT_BGR32
- IMGFMT_Y800 == V4L2_PIX_FMT_GREY
- IMGFMT_IF09 == V4L2_PIX_FMT_YUV410
- IMGFMT_I420 == V4L2_PIX_FMT_YUV420
- IMGFMT_YUY2 == V4L2_PIX_FMT_YUYV
+ MP_FOURCC_RGB8 == V4L2_PIX_FMT_RGB332
+ MP_FOURCC_BGR15 == V4L2_PIX_FMT_RGB555
+ MP_FOURCC_BGR16 == V4L2_PIX_FMT_RGB565
+ MP_FOURCC_RGB24 == V4L2_PIX_FMT_RGB24
+ MP_FOURCC_RGB32 == V4L2_PIX_FMT_RGB32
+ MP_FOURCC_BGR24 == V4L2_PIX_FMT_BGR24
+ MP_FOURCC_BGR32 == V4L2_PIX_FMT_BGR32
+ MP_FOURCC_Y800 == V4L2_PIX_FMT_GREY
+ MP_FOURCC_YUV9 == V4L2_PIX_FMT_YUV410
+ MP_FOURCC_I420 == V4L2_PIX_FMT_YUV420
+ MP_FOURCC_YUY2 == V4L2_PIX_FMT_YUYV
\**********************************************************************/
@@ -210,20 +210,20 @@ static void *video_grabber(void *data);
static int fcc_mp2vl(int fcc)
{
switch (fcc) {
- case IMGFMT_RGB8: return V4L2_PIX_FMT_RGB332;
- case IMGFMT_BGR15: return V4L2_PIX_FMT_RGB555;
- case IMGFMT_BGR16: return V4L2_PIX_FMT_RGB565;
- case IMGFMT_RGB24: return V4L2_PIX_FMT_RGB24;
- case IMGFMT_RGB32: return V4L2_PIX_FMT_RGB32;
- case IMGFMT_BGR24: return V4L2_PIX_FMT_BGR24;
- case IMGFMT_BGR32: return V4L2_PIX_FMT_BGR32;
- case IMGFMT_Y800: return V4L2_PIX_FMT_GREY;
- case IMGFMT_IF09: return V4L2_PIX_FMT_YUV410;
- case IMGFMT_I420: return V4L2_PIX_FMT_YUV420;
- case IMGFMT_YUY2: return V4L2_PIX_FMT_YUYV;
- case IMGFMT_YV12: return V4L2_PIX_FMT_YVU420;
- case IMGFMT_UYVY: return V4L2_PIX_FMT_UYVY;
- case IMGFMT_MJPEG: return V4L2_PIX_FMT_MJPEG;
+ case MP_FOURCC_RGB8: return V4L2_PIX_FMT_RGB332;
+ case MP_FOURCC_BGR15: return V4L2_PIX_FMT_RGB555;
+ case MP_FOURCC_BGR16: return V4L2_PIX_FMT_RGB565;
+ case MP_FOURCC_RGB24: return V4L2_PIX_FMT_RGB24;
+ case MP_FOURCC_RGB32: return V4L2_PIX_FMT_RGB32;
+ case MP_FOURCC_BGR24: return V4L2_PIX_FMT_BGR24;
+ case MP_FOURCC_BGR32: return V4L2_PIX_FMT_BGR32;
+ case MP_FOURCC_Y800: return V4L2_PIX_FMT_GREY;
+ case MP_FOURCC_YUV9: return V4L2_PIX_FMT_YUV410;
+ case MP_FOURCC_I420: return V4L2_PIX_FMT_YUV420;
+ case MP_FOURCC_YUY2: return V4L2_PIX_FMT_YUYV;
+ case MP_FOURCC_YV12: return V4L2_PIX_FMT_YVU420;
+ case MP_FOURCC_UYVY: return V4L2_PIX_FMT_UYVY;
+ case MP_FOURCC_MJPEG: return V4L2_PIX_FMT_MJPEG;
}
return fcc;
}
@@ -234,20 +234,20 @@ static int fcc_mp2vl(int fcc)
static int fcc_vl2mp(int fcc)
{
switch (fcc) {
- case V4L2_PIX_FMT_RGB332: return IMGFMT_RGB8;
- case V4L2_PIX_FMT_RGB555: return IMGFMT_BGR15;
- case V4L2_PIX_FMT_RGB565: return IMGFMT_BGR16;
- case V4L2_PIX_FMT_RGB24: return IMGFMT_RGB24;
- case V4L2_PIX_FMT_RGB32: return IMGFMT_RGB32;
- case V4L2_PIX_FMT_BGR24: return IMGFMT_BGR24;
- case V4L2_PIX_FMT_BGR32: return IMGFMT_BGR32;
- case V4L2_PIX_FMT_GREY: return IMGFMT_Y800;
- case V4L2_PIX_FMT_YUV410: return IMGFMT_IF09;
- case V4L2_PIX_FMT_YUV420: return IMGFMT_I420;
- case V4L2_PIX_FMT_YVU420: return IMGFMT_YV12;
- case V4L2_PIX_FMT_YUYV: return IMGFMT_YUY2;
- case V4L2_PIX_FMT_UYVY: return IMGFMT_UYVY;
- case V4L2_PIX_FMT_MJPEG: return IMGFMT_MJPEG;
+ case V4L2_PIX_FMT_RGB332: return MP_FOURCC_RGB8;
+ case V4L2_PIX_FMT_RGB555: return MP_FOURCC_BGR15;
+ case V4L2_PIX_FMT_RGB565: return MP_FOURCC_BGR16;
+ case V4L2_PIX_FMT_RGB24: return MP_FOURCC_RGB24;
+ case V4L2_PIX_FMT_RGB32: return MP_FOURCC_RGB32;
+ case V4L2_PIX_FMT_BGR24: return MP_FOURCC_BGR24;
+ case V4L2_PIX_FMT_BGR32: return MP_FOURCC_BGR32;
+ case V4L2_PIX_FMT_GREY: return MP_FOURCC_Y800;
+ case V4L2_PIX_FMT_YUV410: return MP_FOURCC_YUV9;
+ case V4L2_PIX_FMT_YUV420: return MP_FOU