Mercurial > mplayer.hg
changeset 17862:ecb2023ee4b6
Try several formats instead of only YV12 if no format was explicitly
requested. Patch from Benjamin Zores <ben -at- geexbox -dot- org> with
a few whitespace changes.
author | albeu |
---|---|
date | Tue, 14 Mar 2006 00:45:06 +0000 |
parents | a9442aa34139 |
children | 8ec63246c118 |
files | libmpdemux/tv.c |
diffstat | 1 files changed, 22 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpdemux/tv.c Tue Mar 14 00:38:00 2006 +0000 +++ b/libmpdemux/tv.c Tue Mar 14 00:45:06 2006 +0000 @@ -53,7 +53,7 @@ int tv_param_width = -1; int tv_param_height = -1; int tv_param_input = 0; /* used in v4l and bttv */ -int tv_param_outfmt = IMGFMT_YV12; +int tv_param_outfmt = -1; float tv_param_fps = -1.0; char **tv_param_channels = NULL; int tv_param_audio_id = 0; @@ -165,6 +165,16 @@ { int i; tvi_functions_t *funcs = tvh->functions; + int tv_fmt_list[] = { + IMGFMT_YV12, + IMGFMT_I420, + IMGFMT_UYVY, + IMGFMT_YUY2, + IMGFMT_RGB32, + IMGFMT_RGB24, + IMGFMT_RGB16, + IMGFMT_RGB15 + }; if (funcs->control(tvh->priv, TVI_CONTROL_IS_VIDEO, 0) != TVI_CONTROL_TRUE) { @@ -172,6 +182,16 @@ return 0; } + if (tv_param_outfmt == -1) + for (i = 0; i < sizeof (tv_fmt_list) / sizeof (*tv_fmt_list); i++) + { + tv_param_outfmt = tv_fmt_list[i]; + if (funcs->control (tvh->priv, TVI_CONTROL_VID_SET_FORMAT, + &tv_param_outfmt) == TVI_CONTROL_TRUE) + break; + } + else + { switch(tv_param_outfmt) { case IMGFMT_YV12: @@ -194,6 +214,7 @@ mp_msg(MSGT_TV, MSGL_ERR, "==================================================================\n"); } 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);