summaryrefslogtreecommitdiffstats
path: root/libmpdemux/tv.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmpdemux/tv.c')
-rw-r--r--libmpdemux/tv.c56
1 files changed, 35 insertions, 21 deletions
diff --git a/libmpdemux/tv.c b/libmpdemux/tv.c
index 3268623436..f212252581 100644
--- a/libmpdemux/tv.c
+++ b/libmpdemux/tv.c
@@ -118,9 +118,27 @@ int demux_tv_fill_buffer(demuxer_t *demux, demux_stream_t *ds)
return 1;
}
- /* forward declarations */
-int tv_set_freq(tvi_handle_t *tvh, unsigned long freq);
-int tv_get_freq(tvi_handle_t *tvh, unsigned long *freq);
+static int norm_from_string(char* norm)
+{
+ if (!strcasecmp(norm, "pal"))
+ return TV_NORM_PAL;
+ else if (!strcasecmp(norm, "ntsc"))
+ return TV_NORM_NTSC;
+ else if (!strcasecmp(norm, "secam"))
+ return TV_NORM_SECAM;
+ else if (!strcasecmp(norm, "palnc"))
+ return TV_NORM_PALNC;
+ else if (!strcasecmp(norm, "palm"))
+ return TV_NORM_PALM;
+ else if (!strcasecmp(norm, "paln"))
+ return TV_NORM_PALN;
+ else if (!strcasecmp(norm, "ntscjp"))
+ return TV_NORM_NTSCJP;
+ else {
+ mp_msg(MSGT_TV, MSGL_V, "tv.c : norm_from_string(%s): Bogus norm parameter, setting PAL.\n", norm);
+ return TV_NORM_PAL;
+ }
+}
static int open_tv(tvi_handle_t *tvh)
{
@@ -162,24 +180,7 @@ static int open_tv(tvi_handle_t *tvh)
funcs->control(tvh->priv, TVI_CONTROL_SPC_SET_INPUT, &tv_param_input);
/* select video norm */
- if (!strcasecmp(tv_param_norm, "pal"))
- tvh->norm = TV_NORM_PAL;
- else if (!strcasecmp(tv_param_norm, "ntsc"))
- tvh->norm = TV_NORM_NTSC;
- else if (!strcasecmp(tv_param_norm, "secam"))
- tvh->norm = TV_NORM_SECAM;
- else if (!strcasecmp(tv_param_norm, "palnc"))
- tvh->norm = TV_NORM_PALNC;
- else if (!strcasecmp(tv_param_norm, "palm"))
- tvh->norm = TV_NORM_PALM;
- else if (!strcasecmp(tv_param_norm, "paln"))
- tvh->norm = TV_NORM_PALN;
- else if (!strcasecmp(tv_param_norm, "ntscjp"))
- tvh->norm = TV_NORM_NTSCJP;
- else {
- mp_msg(MSGT_TV, MSGL_V, "Bogus norm parameter, setting PAL.\n");
- tvh->norm = TV_NORM_PAL;
- }
+ tvh->norm = norm_from_string(tv_param_norm);
mp_msg(MSGT_TV, MSGL_V, "Selected norm: %s\n", tv_param_norm);
if (funcs->control(tvh->priv, TVI_CONTROL_TUN_SET_NORM, &tvh->norm) != TVI_CONTROL_TRUE) {
@@ -804,4 +805,17 @@ int tv_step_chanlist(tvi_handle_t *tvh)
{
return(1);
}
+
+int tv_set_norm(tvi_handle_t *tvh, char* norm)
+{
+ tvh->norm = norm_from_string(norm);
+
+ mp_msg(MSGT_TV, MSGL_V, "Selected norm: %s\n", tv_param_norm);
+ if (tvh->functions->control(tvh->priv, TVI_CONTROL_TUN_SET_NORM, &tvh->norm) != TVI_CONTROL_TRUE) {
+ mp_msg(MSGT_TV, MSGL_ERR, "Error: cannot set norm!\n");
+ return 0;
+ }
+ return(1);
+}
+
#endif /* USE_TV */