Mercurial > mplayer.hg
annotate stream/stream_tv.c @ 27559:21590d0bb4e6
The yuv->rgb tables are too small for clipping to be avoidable,
thus revert the respective optimization. The table generator code
has to be rewritten anyway one day by some volunteer because it is
not LGPL, fixing the GPL table generator thus seems like wasted time.
author | michael |
---|---|
date | Fri, 12 Sep 2008 21:25:42 +0000 |
parents | a26e50cae389 |
children | 0f1b5b68af32 |
rev | line source |
---|---|
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
1 /* |
26737
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
2 * stream layer for TV Input, based on previous work from Albeu |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
3 * |
26737
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
4 * Copyright (C) 2006 Benjamin Zores |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
5 * |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
6 * This file is part of MPlayer. |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
7 * |
26737
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
8 * MPlayer is free software; you can redistribute it and/or modify |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
9 * it under the terms of the GNU General Public License as published by |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
10 * the Free Software Foundation; either version 2 of the License, or |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
11 * (at your option) any later version. |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
12 * |
26737
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
13 * MPlayer is distributed in the hope that it will be useful, |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
16 * GNU General Public License for more details. |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
17 * |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
18 * You should have received a copy of the GNU General Public License along |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
19 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
a26e50cae389
Use standard license headers with standard formatting.
diego
parents:
25691
diff
changeset
|
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
21 */ |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
22 |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
23 #include "config.h" |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
24 |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
25 #include <stdlib.h> |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
26 #include <string.h> |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
27 |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
28 #include "stream.h" |
19312
ab8d6b6deb63
proper inclusion of demuxer.h (including libmpdemux in Makefile only was to make previous split easier)
ben
parents:
19295
diff
changeset
|
29 #include "libmpdemux/demuxer.h" |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
30 #include "m_option.h" |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
31 #include "m_struct.h" |
23882 | 32 #include "tv.h" |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
33 |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
34 #include <stdio.h> |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
35 |
23882 | 36 tv_param_t stream_tv_defaults = { |
37 NULL, //freq | |
38 NULL, //channel | |
39 "europe-east", //chanlist | |
40 "pal", //norm | |
41 0, //automute | |
42 -1, //normid | |
43 NULL, //device | |
24403 | 44 NULL, //driver |
23882 | 45 -1, //width |
46 -1, //height | |
47 0, //input, used in v4l and bttv | |
48 -1, //outfmt | |
49 -1.0, //fps | |
50 NULL, //channels | |
51 0, //noaudio; | |
52 0, //immediate; | |
53 44100, //audiorate; | |
54 0, //audio_id | |
55 -1, //amode | |
56 -1, //volume | |
57 -1, //bass | |
58 -1, //treble | |
59 -1, //balance | |
60 -1, //forcechan | |
61 0, //force_audio | |
62 -1, //buffer_size | |
63 0, //mjpeg | |
64 2, //decimation | |
65 90, //quality | |
66 0, //alsa | |
67 NULL, //adevice | |
68 0, //brightness | |
69 0, //contrast | |
70 0, //hue | |
71 0, //saturation | |
24553
d6bba2781d01
Implement setting gain control for video devices (usually webcams)
voroshil
parents:
24403
diff
changeset
|
72 -1, //gain |
23900 | 73 NULL, //tdevice |
74 0, //tformat | |
24105
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
23900
diff
changeset
|
75 100, //tpage |
24290 | 76 0, //tlang |
24105
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
23900
diff
changeset
|
77 0, //scan_autostart |
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
23900
diff
changeset
|
78 50, //scan_threshold |
24744 | 79 0.5, //scan_period |
80 0, //hidden_video_renderer; | |
81 0, //hidden_vp_renderer; | |
82 0, //system_clock; | |
83 0 //normalize_audio_chunks; | |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
84 }; |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
85 |
23882 | 86 #define ST_OFF(f) M_ST_OFF(tv_param_t,f) |
25242 | 87 static const m_option_t stream_opts_fields[] = { |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
88 {"hostname", ST_OFF(channel), CONF_TYPE_STRING, 0, 0 ,0, NULL}, |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
89 {"filename", ST_OFF(input), CONF_TYPE_INT, 0, 0 ,0, NULL}, |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
90 { NULL, NULL, 0, 0, 0, 0, NULL } |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
91 }; |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
92 |
25691 | 93 static const struct m_struct_st stream_opts = { |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
94 "tv", |
23882 | 95 sizeof(tv_param_t), |
96 &stream_tv_defaults, | |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
97 stream_opts_fields |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
98 }; |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
99 |
23882 | 100 static void |
101 tv_stream_close (stream_t *stream) | |
102 { | |
103 if(stream->priv) | |
104 m_struct_free(&stream_opts,stream->priv); | |
105 stream->priv=NULL; | |
106 } | |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
107 static int |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
108 tv_stream_open (stream_t *stream, int mode, void *opts, int *file_format) |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
109 { |
23678 | 110 |
19295
f6316aa3a7f2
conversion from stream_null to stream_tv was missing stream type
ben
parents:
19273
diff
changeset
|
111 stream->type = STREAMTYPE_TV; |
23882 | 112 stream->priv = opts; |
113 stream->close=tv_stream_close; | |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
114 *file_format = DEMUXER_TYPE_TV; |
23678 | 115 |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
116 return STREAM_OK; |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
117 } |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
118 |
25211 | 119 const stream_info_t stream_info_tv = { |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
120 "TV Input", |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
121 "tv", |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
122 "Benjamin Zores, Albeu", |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
123 "", |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
124 tv_stream_open, |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
125 { "tv", NULL }, |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
126 &stream_opts, |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
127 1 |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
128 }; |