summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cfg-common.h2
-rw-r--r--libmpdemux/tv.c42
-rw-r--r--libmpdemux/tv.h2
3 files changed, 21 insertions, 25 deletions
diff --git a/cfg-common.h b/cfg-common.h
index bf08ada5aa..5457506295 100644
--- a/cfg-common.h
+++ b/cfg-common.h
@@ -302,7 +302,7 @@ m_option_t tvopts_conf[]={
{"width", &tv_param_width, CONF_TYPE_INT, 0, 0, 4096, NULL},
{"height", &tv_param_height, CONF_TYPE_INT, 0, 0, 4096, NULL},
{"input", &tv_param_input, CONF_TYPE_INT, 0, 0, 20, NULL},
- {"outfmt", &tv_param_outfmt, CONF_TYPE_STRING, 0, 0, 0, NULL},
+ {"outfmt", &tv_param_outfmt, CONF_TYPE_IMGFMT, 0, 0, 0, NULL},
{"fps", &tv_param_fps, CONF_TYPE_FLOAT, 0, 0, 100.0, NULL},
{"channels", &tv_param_channels, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
{"brightness", &tv_param_brightness, CONF_TYPE_INT, CONF_RANGE, -100, 100, NULL},
diff --git a/libmpdemux/tv.c b/libmpdemux/tv.c
index 5a8e607a55..f215b88ceb 100644
--- a/libmpdemux/tv.c
+++ b/libmpdemux/tv.c
@@ -54,7 +54,7 @@ char *tv_param_driver = "dummy";
int tv_param_width = -1;
int tv_param_height = -1;
int tv_param_input = 0; /* used in v4l and bttv */
-char *tv_param_outfmt = "yv12";
+int tv_param_outfmt = IMGFMT_YV12;
float tv_param_fps = -1.0;
char **tv_param_channels = NULL;
#if defined(HAVE_TV_V4L) || defined(HAVE_TV_V4L2)
@@ -147,7 +147,6 @@ static int open_tv(tvi_handle_t *tvh)
{
int i;
tvi_functions_t *funcs = tvh->functions;
- int picture_format = 0;
if (funcs->control(tvh->priv, TVI_CONTROL_IS_VIDEO, 0) != TVI_CONTROL_TRUE)
{
@@ -155,29 +154,26 @@ static int open_tv(tvi_handle_t *tvh)
return 0;
}
- if (!strcasecmp(tv_param_outfmt, "yv12"))
- picture_format = IMGFMT_YV12;
- else if (!strcasecmp(tv_param_outfmt, "i420"))
- picture_format = IMGFMT_I420;
- else if (!strcasecmp(tv_param_outfmt, "uyvy"))
- picture_format = IMGFMT_UYVY;
- else if (!strcasecmp(tv_param_outfmt, "yuy2"))
- picture_format = IMGFMT_YUY2;
- else if (!strcasecmp(tv_param_outfmt, "rgb32"))
- picture_format = IMGFMT_RGB32;
- else if (!strcasecmp(tv_param_outfmt, "rgb24"))
- picture_format = IMGFMT_RGB24;
- else if (!strcasecmp(tv_param_outfmt, "rgb16"))
- picture_format = IMGFMT_RGB16;
- else if (!strcasecmp(tv_param_outfmt, "rgb15"))
- picture_format = IMGFMT_RGB15;
- else
+ switch(tv_param_outfmt)
{
- mp_msg(MSGT_TV, MSGL_ERR, "Unknown format given: %s\n", tv_param_outfmt);
- mp_msg(MSGT_TV, MSGL_V, "Using default: Planar YV12\n");
- picture_format = IMGFMT_YV12;
+ case IMGFMT_YV12:
+ case IMGFMT_I420:
+ case IMGFMT_UYVY:
+ case IMGFMT_YUY2:
+ case IMGFMT_RGB32:
+ case IMGFMT_RGB24:
+ case IMGFMT_RGB16:
+ case IMGFMT_RGB15:
+ break;
+ default:
+ mp_msg(MSGT_TV, MSGL_ERR, "=================================================================\n");
+ mp_msg(MSGT_TV, MSGL_ERR, " WARNING: UNTESTED OR UNKNOWN OUTPUT IMAGE FORMAT REQUIRED (0x%x)\n", tv_param_outfmt);
+ mp_msg(MSGT_TV, MSGL_ERR, " This may cause buggy playback or program crash! Bugreports will\n");
+ mp_msg(MSGT_TV, MSGL_ERR, " be ignored! You should try again with YV12 (which is the default\n");
+ mp_msg(MSGT_TV, MSGL_ERR, " colorspace) and read the documentation!\n");
+ mp_msg(MSGT_TV, MSGL_ERR, "=================================================================\n");
}
- funcs->control(tvh->priv, TVI_CONTROL_VID_SET_FORMAT, &picture_format);
+ funcs->control(tvh->priv, TVI_CONTROL_VID_SET_FORMAT, &tv_param_outfmt);
/* set some params got from cmdline */
funcs->control(tvh->priv, TVI_CONTROL_SPC_SET_INPUT, &tv_param_input);
diff --git a/libmpdemux/tv.h b/libmpdemux/tv.h
index a6627c0d9c..ce3ac1e3c0 100644
--- a/libmpdemux/tv.h
+++ b/libmpdemux/tv.h
@@ -21,7 +21,7 @@ extern char *tv_param_driver;
extern int tv_param_width;
extern int tv_param_height;
extern int tv_param_input;
-extern char *tv_param_outfmt;
+extern int tv_param_outfmt;
extern float tv_param_fps;
extern char **tv_param_channels;
extern int tv_param_noaudio;