Mercurial > mplayer.hg
annotate stream/stream_tv.c @ 25934:f0e227951c06
Make sure the -wid window does not get notified when we destroy our attached child window.
Previous behaviour seems to cause QT to do something stupid which makes
DestroyWindow hang (SMPlayer is an application where this happened).
author | reimar |
---|---|
date | Sat, 09 Feb 2008 14:47:10 +0000 |
parents | 68015115f63a |
children | a26e50cae389 |
rev | line source |
---|---|
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
1 /* |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
2 * Copyright (C) 2006 Benjamin Zores |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
3 * Stream layer for TV Input, based on previous work from Albeu |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
4 * |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
5 * This program is free software; you can redistribute it and/or modify |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
6 * it under the terms of the GNU General Public License as published by |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
7 * the Free Software Foundation; either version 2 of the License, or |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
8 * (at your option) any later version. |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
9 * |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
10 * This program is distributed in the hope that it will be useful, |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
13 * GNU General Public License for more details. |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
14 * |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
16 * along with this program; if not, write to the Free Software Foundation, |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
17 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
18 */ |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
19 |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
20 #include "config.h" |
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 #include <stdlib.h> |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
23 #include <string.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 "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
|
26 #include "libmpdemux/demuxer.h" |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
27 #include "m_option.h" |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
28 #include "m_struct.h" |
23882 | 29 #include "tv.h" |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
30 |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
31 #include <stdio.h> |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
32 |
23882 | 33 tv_param_t stream_tv_defaults = { |
34 NULL, //freq | |
35 NULL, //channel | |
36 "europe-east", //chanlist | |
37 "pal", //norm | |
38 0, //automute | |
39 -1, //normid | |
40 NULL, //device | |
24403 | 41 NULL, //driver |
23882 | 42 -1, //width |
43 -1, //height | |
44 0, //input, used in v4l and bttv | |
45 -1, //outfmt | |
46 -1.0, //fps | |
47 NULL, //channels | |
48 0, //noaudio; | |
49 0, //immediate; | |
50 44100, //audiorate; | |
51 0, //audio_id | |
52 -1, //amode | |
53 -1, //volume | |
54 -1, //bass | |
55 -1, //treble | |
56 -1, //balance | |
57 -1, //forcechan | |
58 0, //force_audio | |
59 -1, //buffer_size | |
60 0, //mjpeg | |
61 2, //decimation | |
62 90, //quality | |
63 0, //alsa | |
64 NULL, //adevice | |
65 0, //brightness | |
66 0, //contrast | |
67 0, //hue | |
68 0, //saturation | |
24553
d6bba2781d01
Implement setting gain control for video devices (usually webcams)
voroshil
parents:
24403
diff
changeset
|
69 -1, //gain |
23900 | 70 NULL, //tdevice |
71 0, //tformat | |
24105
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
23900
diff
changeset
|
72 100, //tpage |
24290 | 73 0, //tlang |
24105
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
23900
diff
changeset
|
74 0, //scan_autostart |
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
23900
diff
changeset
|
75 50, //scan_threshold |
24744 | 76 0.5, //scan_period |
77 0, //hidden_video_renderer; | |
78 0, //hidden_vp_renderer; | |
79 0, //system_clock; | |
80 0 //normalize_audio_chunks; | |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
81 }; |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
82 |
23882 | 83 #define ST_OFF(f) M_ST_OFF(tv_param_t,f) |
25242 | 84 static const m_option_t stream_opts_fields[] = { |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
85 {"hostname", ST_OFF(channel), CONF_TYPE_STRING, 0, 0 ,0, NULL}, |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
86 {"filename", ST_OFF(input), CONF_TYPE_INT, 0, 0 ,0, NULL}, |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
87 { NULL, NULL, 0, 0, 0, 0, NULL } |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
88 }; |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
89 |
25691 | 90 static const struct m_struct_st stream_opts = { |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
91 "tv", |
23882 | 92 sizeof(tv_param_t), |
93 &stream_tv_defaults, | |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
94 stream_opts_fields |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
95 }; |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
96 |
23882 | 97 static void |
98 tv_stream_close (stream_t *stream) | |
99 { | |
100 if(stream->priv) | |
101 m_struct_free(&stream_opts,stream->priv); | |
102 stream->priv=NULL; | |
103 } | |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
104 static int |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
105 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
|
106 { |
23678 | 107 |
19295
f6316aa3a7f2
conversion from stream_null to stream_tv was missing stream type
ben
parents:
19273
diff
changeset
|
108 stream->type = STREAMTYPE_TV; |
23882 | 109 stream->priv = opts; |
110 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
|
111 *file_format = DEMUXER_TYPE_TV; |
23678 | 112 |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
113 return STREAM_OK; |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
114 } |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
115 |
25211 | 116 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
|
117 "TV Input", |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
118 "tv", |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
119 "Benjamin Zores, Albeu", |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
120 "", |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
121 tv_stream_open, |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
122 { "tv", NULL }, |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
123 &stream_opts, |
19273
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
124 1 |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
125 }; |