diff options
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_FOURCC_I420; + case V4L2_PIX_FMT_YVU420: return MP_FOURCC_YV12; + case V4L2_PIX_FMT_YUYV: return MP_FOURCC_YUY2; + case V4L2_PIX_FMT_UYVY: return MP_FOURCC_UYVY; + case V4L2_PIX_FMT_MJPEG: return MP_FOURCC_MJPEG; } return fcc; } @@ -1252,9 +1252,9 @@ static int init(priv_t *priv) if (ioctl(priv->video_fd, VIDIOC_ENUM_FMT, &fmtdesc) < 0) { break; } - mp_msg(MSGT_TV, MSGL_V, " Format %-6s (%2d bits, %s): %s\n", + mp_msg(MSGT_TV, MSGL_V, " Format %-6s (%2d bits, %s)\n", pixfmt2name(fmtdesc.pixelformat), pixfmt2depth(fmtdesc.pixelformat), |