Mercurial > mplayer.hg
annotate stream/stream_tv.c @ 24787:02535b3216c5
Avoid text deformation and subtitles moving outside the screen in pan-and-scan
mode.
For this, crop amounts are passed from vo_gl as negative margins sizes. They
are used to calculate aspect ratio. They are ignored when calculating subtitle
positions, so subtitles will stay on screen most of the time.
Based on a patch by Jindrich Makovicka [makovick gmail com].
author | eugeni |
---|---|
date | Fri, 19 Oct 2007 18:16:23 +0000 |
parents | 8383cea01fff |
children | c1d17bd6683c |
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) |
23667
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
84 static m_option_t stream_opts_fields[] = { |
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 |
568e9190f631
Implemented tv://[<channel>][/<input_id>] url syntax
voroshil
parents:
19312
diff
changeset
|
90 static struct m_struct_st stream_opts = { |
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 |
11ec1cb3a7ea
add an explicit tv stream input instead of the previous hack in stream_null
ben
parents:
diff
changeset
|
116 stream_info_t stream_info_tv = { |
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 }; |