summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/man/en/mplayer.15
-rw-r--r--stream/stream_tv.c37
-rw-r--r--stream/tvi_vbi.c0
3 files changed, 37 insertions, 5 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1
index b29a878e83..3fbf16f269 100644
--- a/DOCS/man/en/mplayer.1
+++ b/DOCS/man/en/mplayer.1
@@ -70,7 +70,7 @@ vcd://track[/device]
.
.br
.B mplayer
-tv://[channel]
+tv://[channel][/input_id]
[options]
.
.br
@@ -1728,7 +1728,8 @@ Can be used with \-vid and \-aid.
This option tunes various properties of the TV capture module.
For watching TV with MPlayer, use 'tv://' or 'tv://<channel_number>'
or even 'tv://<channel_name> (see option channels for channel_name below)
-as a movie URL.
+as a movie URL. You can also use 'tv:///<input_id>' to start watching
+movie from Composite or S-Video input (see option input for details).
.sp 1
Available options are:
.RSs
diff --git a/stream/stream_tv.c b/stream/stream_tv.c
index de1c48f72f..2bcde2b80d 100644
--- a/stream/stream_tv.c
+++ b/stream/stream_tv.c
@@ -24,17 +24,48 @@
#include "stream.h"
#include "libmpdemux/demuxer.h"
+#include "m_option.h"
+#include "m_struct.h"
+
+#include <stdio.h>
+
+static struct stream_priv_s {
+ /* if channels parameter exist here will be channel number otherwise - frequency */
+ int input;
+ char* channel;
+} stream_priv_dflts = {
+ 0,
+ NULL
+};
+
+#define ST_OFF(f) M_ST_OFF(struct stream_priv_s,f)
+static m_option_t stream_opts_fields[] = {
+ {"hostname", ST_OFF(channel), CONF_TYPE_STRING, 0, 0 ,0, NULL},
+ {"filename", ST_OFF(input), CONF_TYPE_INT, 0, 0 ,0, NULL},
+ { NULL, NULL, 0, 0, 0, 0, NULL }
+};
+
+static struct m_struct_st stream_opts = {
+ "tv",
+ sizeof(struct stream_priv_s),
+ &stream_priv_dflts,
+ stream_opts_fields
+};
static int
tv_stream_open (stream_t *stream, int mode, void *opts, int *file_format)
{
extern char* tv_param_channel;
+ extern int tv_param_input;
+ struct stream_priv_s* p=(struct stream_priv_s*)opts;
stream->type = STREAMTYPE_TV;
*file_format = DEMUXER_TYPE_TV;
- if (strlen (stream->url) > 5 && stream->url[5] != '\0')
- tv_param_channel = strdup (stream->url + 5);
+ tv_param_input=p->input;
+ if (p->channel)
+ tv_param_channel=strdup (p->channel);
+fprintf(stderr,"%p\n",p->channel) ;
return STREAM_OK;
}
@@ -45,6 +76,6 @@ stream_info_t stream_info_tv = {
"",
tv_stream_open,
{ "tv", NULL },
- NULL,
+ &stream_opts,
1
};
diff --git a/stream/tvi_vbi.c b/stream/tvi_vbi.c
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/stream/tvi_vbi.c