summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorhenry <henry@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-12-16 17:05:49 +0000
committerhenry <henry@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-12-16 17:05:49 +0000
commit0c71a7f53c47e29e853b09961084955698c4fae7 (patch)
tree6617aaee70708f7f0c30c4e88d42583e94ca8051 /libmpdemux
parentccf116f7ab81a91d5977e609a26f958189df57fc (diff)
downloadmpv-0c71a7f53c47e29e853b09961084955698c4fae7.tar.bz2
mpv-0c71a7f53c47e29e853b09961084955698c4fae7.tar.xz
support for exotic norms
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8478 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/tv.c12
-rw-r--r--libmpdemux/tv.h4
-rw-r--r--libmpdemux/tvi_v4l.c32
3 files changed, 43 insertions, 5 deletions
diff --git a/libmpdemux/tv.c b/libmpdemux/tv.c
index 2653c364fd..cbc820c8e4 100644
--- a/libmpdemux/tv.c
+++ b/libmpdemux/tv.c
@@ -159,6 +159,18 @@ static int open_tv(tvi_handle_t *tvh)
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;
+ }
mp_msg(MSGT_TV, MSGL_V, "Selected norm: %s\n", tv_param_norm);
funcs->control(tvh->priv, TVI_CONTROL_TUN_SET_NORM, &tvh->norm);
diff --git a/libmpdemux/tv.h b/libmpdemux/tv.h
index ca399ebb65..6afaf20a9a 100644
--- a/libmpdemux/tv.h
+++ b/libmpdemux/tv.h
@@ -154,6 +154,10 @@ int tv_step_chanlist(tvi_handle_t *tvh);
#define TV_NORM_PAL 1
#define TV_NORM_NTSC 2
#define TV_NORM_SECAM 3
+#define TV_NORM_PALNC 4
+#define TV_NORM_PALM 5
+#define TV_NORM_PALN 6
+#define TV_NORM_NTSCJP 7
#endif /* USE_TV */
diff --git a/libmpdemux/tvi_v4l.c b/libmpdemux/tvi_v4l.c
index aa27202b2d..0c43d21f02 100644
--- a/libmpdemux/tvi_v4l.c
+++ b/libmpdemux/tvi_v4l.c
@@ -980,15 +980,21 @@ static int control(priv_t *priv, int cmd, void *arg)
{
int req_mode = (int)*(void **)arg;
- if ((req_mode != TV_NORM_PAL) && (req_mode != TV_NORM_NTSC) && (req_mode != TV_NORM_SECAM)) {
+ if ((req_mode != TV_NORM_PAL) && (req_mode != TV_NORM_NTSC) && (req_mode != TV_NORM_SECAM)
+ && (req_mode != TV_NORM_PALNC) && (req_mode != TV_NORM_PALM) && (req_mode != TV_NORM_PALN)
+ && (req_mode != TV_NORM_NTSCJP)) {
mp_msg(MSGT_TV, MSGL_ERR, "Unknown norm!\n");
return(TVI_CONTROL_FALSE);
}
if (priv->channels[priv->act_channel].flags & VIDEO_VC_TUNER) {
control(priv, TVI_CONTROL_TUN_GET_TUNER, 0);
- if (((req_mode == TV_NORM_PAL) && !(priv->tuner.flags & VIDEO_TUNER_PAL)) ||
- ((req_mode == TV_NORM_NTSC) && !(priv->tuner.flags & VIDEO_TUNER_NTSC)) ||
+ if (((req_mode == TV_NORM_PAL
+ || req_mode == TV_NORM_PALNC
+ || req_mode == TV_NORM_PALN) && !(priv->tuner.flags & VIDEO_TUNER_PAL)) ||
+ ((req_mode == TV_NORM_NTSC
+ || req_mode == TV_NORM_NTSCJP
+ || req_mode == TV_NORM_PALM) && !(priv->tuner.flags & VIDEO_TUNER_NTSC)) ||
((req_mode == TV_NORM_SECAM) && !(priv->tuner.flags & VIDEO_TUNER_SECAM)))
{
mp_msg(MSGT_TV, MSGL_ERR, "Tuner isn't capable to set norm!\n");
@@ -997,9 +1003,13 @@ static int control(priv_t *priv, int cmd, void *arg)
switch(req_mode) {
case TV_NORM_PAL:
+ case TV_NORM_PALNC:
+ case TV_NORM_PALN:
priv->tuner.mode = VIDEO_MODE_PAL;
break;
case TV_NORM_NTSC:
+ case TV_NORM_NTSCJP:
+ case TV_NORM_PALM:
priv->tuner.mode = VIDEO_MODE_NTSC;
break;
case TV_NORM_SECAM:
@@ -1023,6 +1033,18 @@ static int control(priv_t *priv, int cmd, void *arg)
case TV_NORM_SECAM:
priv->channels[priv->act_channel].norm = VIDEO_MODE_SECAM;
break;
+ case TV_NORM_PALNC:
+ priv->channels[priv->act_channel].norm = 3;
+ break;
+ case TV_NORM_PALM:
+ priv->channels[priv->act_channel].norm = 4;
+ break;
+ case TV_NORM_PALN:
+ priv->channels[priv->act_channel].norm = 5;
+ break;
+ case TV_NORM_NTSCJP:
+ priv->channels[priv->act_channel].norm = 6;
+ break;
}
if (ioctl(priv->video_fd, VIDIOCSCHAN, &priv->channels[priv->act_channel]) == -1)
{
@@ -1035,11 +1057,11 @@ static int control(priv_t *priv, int cmd, void *arg)
return(TVI_CONTROL_FALSE);
}
- if(req_mode == TV_NORM_PAL || req_mode == TV_NORM_SECAM) {
+ if(req_mode == TV_NORM_PAL || req_mode == TV_NORM_SECAM || req_mode == TV_NORM_PALN || req_mode == TV_NORM_PALNC) {
priv->fps = PAL_FPS;
}
- if(req_mode == TV_NORM_NTSC) {
+ if(req_mode == TV_NORM_NTSC || req_mode == TV_NORM_NTSCJP || req_mode == TV_NORM_PALM) {
priv->fps = NTSC_FPS;
}