annotate libmpdemux/tv.c @ 8534:922ce27eb683

This patch adds support for vertical subtitle alignment control. Possible values are top, center, and bottom, with bottom being the default. Alignment is relevant when it comes to positioning subtitles with one line (or fewer lines) of text relative to multi-line subtitles. It is implemented as a new command (sub_alignment) that without an argument cycles the alignment (between top, center, and bottom), or with an argument sets the alignment (0 for top, 1 for center, 2 for bottom). The key 'i' is bound to this command. patch by Oskar Liljeblad (oskar@osk.mine.nu)
author arpi
date Mon, 23 Dec 2002 01:37:43 +0000
parents 47cf94058137
children 14ab71b47a58
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
1 /*
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
2 TV Interface for MPlayer
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
3
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
4 (C) Alex Beregszaszi <alex@naxine.org>
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
5
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
6 API idea based on libvo2
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
7
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
8 Feb 19, 2002: Significant rewrites by Charles R. Henrich (henrich@msu.edu)
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
9 to add support for audio, and bktr *BSD support.
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
10
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
11 */
98769cea155c added tv subsystem
alex
parents:
diff changeset
12
98769cea155c added tv subsystem
alex
parents:
diff changeset
13 #include <stdio.h>
98769cea155c added tv subsystem
alex
parents:
diff changeset
14 #include <stdlib.h>
98769cea155c added tv subsystem
alex
parents:
diff changeset
15 #include <unistd.h>
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
16 #include <string.h>
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
17 #include <sys/time.h>
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
18
98769cea155c added tv subsystem
alex
parents:
diff changeset
19 #include "config.h"
98769cea155c added tv subsystem
alex
parents:
diff changeset
20
2819
2e58962dc9fe cleaned up some warnings, and tv_param_on moved out from #ifdef USE_TV
alex
parents: 2818
diff changeset
21 int tv_param_on = 0;
2e58962dc9fe cleaned up some warnings, and tv_param_on moved out from #ifdef USE_TV
alex
parents: 2818
diff changeset
22
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
23 #ifdef USE_TV
98769cea155c added tv subsystem
alex
parents:
diff changeset
24 #include "mp_msg.h"
98769cea155c added tv subsystem
alex
parents:
diff changeset
25 #include "help_mp.h"
98769cea155c added tv subsystem
alex
parents:
diff changeset
26
98769cea155c added tv subsystem
alex
parents:
diff changeset
27 #include "stream.h"
98769cea155c added tv subsystem
alex
parents:
diff changeset
28 #include "demuxer.h"
98769cea155c added tv subsystem
alex
parents:
diff changeset
29 #include "stheader.h"
2830
596a6ba3520f never include files from public headers...
arpi
parents: 2819
diff changeset
30
596a6ba3520f never include files from public headers...
arpi
parents: 2819
diff changeset
31 #include "../libao2/afmt.h"
8254
772d6d27fd66 warning patch by (Dominik Mierzejewski <dominik at rangers dot eu dot org>)
michael
parents: 8123
diff changeset
32 #include "../libao2/audio_out.h"
2830
596a6ba3520f never include files from public headers...
arpi
parents: 2819
diff changeset
33 #include "../libvo/img_format.h"
596a6ba3520f never include files from public headers...
arpi
parents: 2819
diff changeset
34 #include "../libvo/fastmemcpy.h"
596a6ba3520f never include files from public headers...
arpi
parents: 2819
diff changeset
35
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
36 #include "tv.h"
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
37
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
38 #include "frequencies.h"
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
39
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
40 /* some default values */
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
41 int tv_param_audiorate = 44100;
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
42 int tv_param_noaudio = 0;
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
43 int tv_param_immediate = 0;
2837
c63562f5f56f tuning worx (can set frequency)
alex
parents: 2830
diff changeset
44 char *tv_param_freq = NULL;
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
45 char *tv_param_channel = NULL;
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
46 char *tv_param_norm = "pal";
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
47 char *tv_param_chanlist = "europe-east";
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
48 char *tv_param_device = NULL;
98769cea155c added tv subsystem
alex
parents:
diff changeset
49 char *tv_param_driver = "dummy";
98769cea155c added tv subsystem
alex
parents:
diff changeset
50 int tv_param_width = -1;
98769cea155c added tv subsystem
alex
parents:
diff changeset
51 int tv_param_height = -1;
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
52 int tv_param_input = 0; /* used in v4l and bttv */
2817
cc93d9786954 added support for -tv outfmt
alex
parents: 2813
diff changeset
53 char *tv_param_outfmt = "yv12";
3285
bd7bff4cb453 add tv fps support
alex
parents: 3284
diff changeset
54 float tv_param_fps = -1.0;
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
55 #ifdef HAVE_TV_V4L
7163
a193df8b275b v4l audio fixes by Jindrich Makovicka <makovick@KMLinux.fjfi.cvut.cz>
alex
parents: 7058
diff changeset
56 int tv_param_amode = -1;
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
57 int tv_param_audio_id = 0;
7163
a193df8b275b v4l audio fixes by Jindrich Makovicka <makovick@KMLinux.fjfi.cvut.cz>
alex
parents: 7058
diff changeset
58 int tv_param_volume = 60000;
a193df8b275b v4l audio fixes by Jindrich Makovicka <makovick@KMLinux.fjfi.cvut.cz>
alex
parents: 7058
diff changeset
59 int tv_param_bass = -1;
a193df8b275b v4l audio fixes by Jindrich Makovicka <makovick@KMLinux.fjfi.cvut.cz>
alex
parents: 7058
diff changeset
60 int tv_param_treble = -1;
a193df8b275b v4l audio fixes by Jindrich Makovicka <makovick@KMLinux.fjfi.cvut.cz>
alex
parents: 7058
diff changeset
61 int tv_param_balance = -1;
a193df8b275b v4l audio fixes by Jindrich Makovicka <makovick@KMLinux.fjfi.cvut.cz>
alex
parents: 7058
diff changeset
62 int tv_param_forcechan = -1;
7835
d489890c59d3 add an option to force audio recording when a tv card reports no audio sources
henry
parents: 7807
diff changeset
63 int tv_param_force_audio = 0;
7905
b062996d9794 added an option for specifying the size of capture buffer
henry
parents: 7835
diff changeset
64 int tv_param_buffer_size = -1;
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
65 #ifdef HAVE_ALSA9
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
66 int tv_param_alsa = 0;
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
67 #endif
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
68 char* tv_param_adevice = NULL;
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
69 #endif
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
70
98769cea155c added tv subsystem
alex
parents:
diff changeset
71 /* ================== DEMUX_TV ===================== */
98769cea155c added tv subsystem
alex
parents:
diff changeset
72 /*
98769cea155c added tv subsystem
alex
parents:
diff changeset
73 Return value:
98769cea155c added tv subsystem
alex
parents:
diff changeset
74 0 = EOF(?) or no stream
98769cea155c added tv subsystem
alex
parents:
diff changeset
75 1 = successfully read a packet
98769cea155c added tv subsystem
alex
parents:
diff changeset
76 */
98769cea155c added tv subsystem
alex
parents:
diff changeset
77 /* fill demux->video and demux->audio */
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
78
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7318
diff changeset
79 int demux_tv_fill_buffer(demuxer_t *demux, demux_stream_t *ds)
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
80 {
7408
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
81 tvi_handle_t *tvh=(tvi_handle_t*)(demux->priv);
2813
d6d88771f5ef demuxer fixed
arpi
parents: 2810
diff changeset
82 demux_packet_t* dp;
7472
c4434bdf6e51 tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents: 7408
diff changeset
83 u_int len=0;
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
84
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
85 /* ================== ADD AUDIO PACKET =================== */
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
86
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
87 if (ds==demux->audio && tv_param_noaudio == 0 &&
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
88 tvh->functions->control(tvh->priv,
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
89 TVI_CONTROL_IS_AUDIO, 0) == TVI_CONTROL_TRUE)
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
90 {
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
91 len = tvh->functions->get_audio_framesize(tvh->priv);
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
92
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
93 dp=new_demux_packet(len);
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
94 dp->pts=tvh->functions->grab_audio_frame(tvh->priv, dp->buffer,len);
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
95 ds_add_packet(demux->audio,dp);
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
96 }
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
97
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
98 /* ================== ADD VIDEO PACKET =================== */
98769cea155c added tv subsystem
alex
parents:
diff changeset
99
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
100 if (ds==demux->video && tvh->functions->control(tvh->priv,
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
101 TVI_CONTROL_IS_VIDEO, 0) == TVI_CONTROL_TRUE)
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
102 {
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
103 len = tvh->functions->get_video_framesize(tvh->priv);
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
104 dp=new_demux_packet(len);
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
105 dp->pts=tvh->functions->grab_video_frame(tvh->priv, dp->buffer, len);
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
106 ds_add_packet(demux->video,dp);
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
107 }
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
108
98769cea155c added tv subsystem
alex
parents:
diff changeset
109 return 1;
98769cea155c added tv subsystem
alex
parents:
diff changeset
110 }
98769cea155c added tv subsystem
alex
parents:
diff changeset
111
8123
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7905
diff changeset
112 /* forward declarations */
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7905
diff changeset
113 int tv_set_freq(tvi_handle_t *tvh, unsigned long freq);
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7905
diff changeset
114 int tv_get_freq(tvi_handle_t *tvh, unsigned long *freq);
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7905
diff changeset
115
7408
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
116 static int open_tv(tvi_handle_t *tvh)
2931
bce9c945b29c tv interface update
alex
parents: 2842
diff changeset
117 {
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
118 int i;
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
119 tvi_functions_t *funcs = tvh->functions;
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
120 int picture_format = 0;
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
121
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
122 if (funcs->control(tvh->priv, TVI_CONTROL_IS_VIDEO, 0) != TVI_CONTROL_TRUE)
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
123 {
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
124 mp_msg(MSGT_TV, MSGL_ERR, "Error: no video input present!\n");
3728
499ce786c30d As nobody fixed this yet:
pl
parents: 3703
diff changeset
125 return 0;
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
126 }
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
127
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
128 if (!strcasecmp(tv_param_outfmt, "yv12"))
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
129 picture_format = IMGFMT_YV12;
3703
3717145636b5 i420 support
alex
parents: 3612
diff changeset
130 else if (!strcasecmp(tv_param_outfmt, "i420"))
3717145636b5 i420 support
alex
parents: 3612
diff changeset
131 picture_format = IMGFMT_I420;
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
132 else if (!strcasecmp(tv_param_outfmt, "uyvy"))
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
133 picture_format = IMGFMT_UYVY;
4350
70ac7ab2a982 yuy2 reported as working
alex
parents: 4242
diff changeset
134 else if (!strcasecmp(tv_param_outfmt, "yuy2"))
70ac7ab2a982 yuy2 reported as working
alex
parents: 4242
diff changeset
135 picture_format = IMGFMT_YUY2;
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
136 else if (!strcasecmp(tv_param_outfmt, "rgb32"))
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
137 picture_format = IMGFMT_RGB32;
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
138 else if (!strcasecmp(tv_param_outfmt, "rgb24"))
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
139 picture_format = IMGFMT_RGB24;
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
140 else if (!strcasecmp(tv_param_outfmt, "rgb16"))
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
141 picture_format = IMGFMT_RGB16;
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
142 else if (!strcasecmp(tv_param_outfmt, "rgb15"))
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
143 picture_format = IMGFMT_RGB15;
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
144 else
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
145 {
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
146 mp_msg(MSGT_TV, MSGL_ERR, "Unknown format given: %s\n", tv_param_outfmt);
7318
85897ab199a4 changed message leveles (too many non-sense info messages)
alex
parents: 7163
diff changeset
147 mp_msg(MSGT_TV, MSGL_V, "Using default: Planar YV12\n");
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
148 picture_format = IMGFMT_YV12;
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
149 }
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
150 funcs->control(tvh->priv, TVI_CONTROL_VID_SET_FORMAT, &picture_format);
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
151
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
152 /* set some params got from cmdline */
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
153 funcs->control(tvh->priv, TVI_CONTROL_SPC_SET_INPUT, &tv_param_input);
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
154
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
155 /* select video norm */
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
156 if (!strcasecmp(tv_param_norm, "pal"))
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
157 tvh->norm = TV_NORM_PAL;
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
158 else if (!strcasecmp(tv_param_norm, "ntsc"))
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
159 tvh->norm = TV_NORM_NTSC;
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
160 else if (!strcasecmp(tv_param_norm, "secam"))
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
161 tvh->norm = TV_NORM_SECAM;
8487
e93ac55da5ae 1000L for messing up cvs
henry
parents: 8486
diff changeset
162 else if (!strcasecmp(tv_param_norm, "palnc"))
e93ac55da5ae 1000L for messing up cvs
henry
parents: 8486
diff changeset
163 tvh->norm = TV_NORM_PALNC;
e93ac55da5ae 1000L for messing up cvs
henry
parents: 8486
diff changeset
164 else if (!strcasecmp(tv_param_norm, "palm"))
e93ac55da5ae 1000L for messing up cvs
henry
parents: 8486
diff changeset
165 tvh->norm = TV_NORM_PALM;
e93ac55da5ae 1000L for messing up cvs
henry
parents: 8486
diff changeset
166 else if (!strcasecmp(tv_param_norm, "paln"))
e93ac55da5ae 1000L for messing up cvs
henry
parents: 8486
diff changeset
167 tvh->norm = TV_NORM_PALN;
e93ac55da5ae 1000L for messing up cvs
henry
parents: 8486
diff changeset
168 else if (!strcasecmp(tv_param_norm, "ntscjp"))
e93ac55da5ae 1000L for messing up cvs
henry
parents: 8486
diff changeset
169 tvh->norm = TV_NORM_NTSCJP;
8477
b5dce4fa1c48 support for exotic norms
henry
parents: 8254
diff changeset
170 else {
b5dce4fa1c48 support for exotic norms
henry
parents: 8254
diff changeset
171 mp_msg(MSGT_TV, MSGL_V, "Bogus norm parameter, setting PAL.\n");
b5dce4fa1c48 support for exotic norms
henry
parents: 8254
diff changeset
172 tvh->norm = TV_NORM_PAL;
b5dce4fa1c48 support for exotic norms
henry
parents: 8254
diff changeset
173 }
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
174
7318
85897ab199a4 changed message leveles (too many non-sense info messages)
alex
parents: 7163
diff changeset
175 mp_msg(MSGT_TV, MSGL_V, "Selected norm: %s\n", tv_param_norm);
8486
c268bbb804d9 handle bogus norm parameter; check for errors when setting norm
henry
parents: 8477
diff changeset
176 if (funcs->control(tvh->priv, TVI_CONTROL_TUN_SET_NORM, &tvh->norm) != TVI_CONTROL_TRUE) {
c268bbb804d9 handle bogus norm parameter; check for errors when setting norm
henry
parents: 8477
diff changeset
177 mp_msg(MSGT_TV, MSGL_ERR, "Error: cannot set norm!\n");
c268bbb804d9 handle bogus norm parameter; check for errors when setting norm
henry
parents: 8477
diff changeset
178 return 0;
c268bbb804d9 handle bogus norm parameter; check for errors when setting norm
henry
parents: 8477
diff changeset
179 }
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
180
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
181 /* limits on w&h are norm-dependent -- JM */
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
182 /* set width */
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
183 if (tv_param_width != -1)
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
184 {
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
185 if (funcs->control(tvh->priv, TVI_CONTROL_VID_CHK_WIDTH, &tv_param_width) == TVI_CONTROL_TRUE)
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
186 funcs->control(tvh->priv, TVI_CONTROL_VID_SET_WIDTH, &tv_param_width);
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
187 else
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
188 {
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
189 mp_msg(MSGT_TV, MSGL_ERR, "Unable set requested width: %d\n", tv_param_width);
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
190 funcs->control(tvh->priv, TVI_CONTROL_VID_GET_WIDTH, &tv_param_width);
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
191 }
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
192 }
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
193
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
194 /* set height */
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
195 if (tv_param_height != -1)
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
196 {
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
197 if (funcs->control(tvh->priv, TVI_CONTROL_VID_CHK_HEIGHT, &tv_param_height) == TVI_CONTROL_TRUE)
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
198 funcs->control(tvh->priv, TVI_CONTROL_VID_SET_HEIGHT, &tv_param_height);
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
199 else
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
200 {
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
201 mp_msg(MSGT_TV, MSGL_ERR, "Unable set requested height: %d\n", tv_param_height);
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
202 funcs->control(tvh->priv, TVI_CONTROL_VID_GET_HEIGHT, &tv_param_height);
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
203 }
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
204 }
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
205
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
206 if (funcs->control(tvh->priv, TVI_CONTROL_IS_TUNER, 0) != TVI_CONTROL_TRUE)
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
207 {
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
208 mp_msg(MSGT_TV, MSGL_WARN, "Selected input hasn't got a tuner!\n");
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
209 goto done;
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
210 }
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
211
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
212 /* select channel list */
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
213 for (i = 0; chanlists[i].name != NULL; i++)
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
214 {
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
215 if (!strcasecmp(chanlists[i].name, tv_param_chanlist))
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
216 {
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
217 tvh->chanlist = i;
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
218 tvh->chanlist_s = chanlists[i].list;
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
219 break;
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
220 }
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
221 }
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
222
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
223 if (tvh->chanlist == -1)
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
224 mp_msg(MSGT_TV, MSGL_WARN, "Unable to find selected channel list! (%s)\n",
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
225 tv_param_chanlist);
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
226 else
7318
85897ab199a4 changed message leveles (too many non-sense info messages)
alex
parents: 7163
diff changeset
227 mp_msg(MSGT_TV, MSGL_V, "Selected channel list: %s (including %d channels)\n",
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
228 chanlists[tvh->chanlist].name, chanlists[tvh->chanlist].count);
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
229
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
230 if (tv_param_freq && tv_param_channel)
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
231 {
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
232 mp_msg(MSGT_TV, MSGL_WARN, "You can't set frequency and channel simultanly!\n");
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
233 goto done;
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
234 }
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
235
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
236 /* we need to set frequency */
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
237 if (tv_param_freq)
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
238 {
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
239 unsigned long freq = atof(tv_param_freq)*16;
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
240
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
241 /* set freq in MHz */
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
242 funcs->control(tvh->priv, TVI_CONTROL_TUN_SET_FREQ, &freq);
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
243
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
244 funcs->control(tvh->priv, TVI_CONTROL_TUN_GET_FREQ, &freq);
7318
85897ab199a4 changed message leveles (too many non-sense info messages)
alex
parents: 7163
diff changeset
245 mp_msg(MSGT_TV, MSGL_V, "Selected frequency: %lu (%.3f)\n",
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
246 freq, (float)freq/16);
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
247 }
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
248
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
249 if (tv_param_channel)
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
250 {
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
251 struct CHANLIST cl;
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
252
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
253 mp_msg(MSGT_TV, MSGL_V, "Requested channel: %s\n", tv_param_channel);
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
254 for (i = 0; i < chanlists[tvh->chanlist].count; i++)
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
255 {
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
256 cl = tvh->chanlist_s[i];
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
257 // printf("count%d: name: %s, freq: %d\n",
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
258 // i, cl.name, cl.freq);
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
259 if (!strcasecmp(cl.name, tv_param_channel))
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
260 {
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
261 tvh->channel = i;
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
262 mp_msg(MSGT_TV, MSGL_INFO, "Selected channel: %s (freq: %.3f)\n",
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
263 cl.name, (float)cl.freq/1000);
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
264 tv_set_freq(tvh, (unsigned long)(((float)cl.freq/1000)*16));
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
265 break;
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
266 }
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
267 }
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
268 }
7806
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
269
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
270 /* grep frequency in chanlist */
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
271 {
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
272 unsigned long i2;
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
273 int freq;
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
274
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
275 tv_get_freq(tvh, &i2);
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
276
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
277 freq = (int) (((float)(i2/16))*1000)+250;
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
278
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
279 for (i = 0; i < chanlists[tvh->chanlist].count; i++)
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
280 {
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
281 if (tvh->chanlist_s[i].freq == freq)
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
282 {
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
283 tvh->channel = i+1;
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
284 break;
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
285 }
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
286 }
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
287 }
3284
702e399a4b3e update (audio support is coming:)
alex
parents: 3249
diff changeset
288
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
289 done:
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
290 /* also start device! */
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
291 return 1;
2931
bce9c945b29c tv interface update
alex
parents: 2842
diff changeset
292 }
bce9c945b29c tv interface update
alex
parents: 2842
diff changeset
293
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7318
diff changeset
294 int demux_open_tv(demuxer_t *demuxer)
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
295 {
7408
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
296 tvi_handle_t *tvh;
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
297 sh_video_t *sh_video;
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
298 sh_audio_t *sh_audio = NULL;
7408
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
299 tvi_functions_t *funcs;
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
300
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
301 if(!(tvh=tv_begin())) return 0;
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
302 if (!tv_init(tvh)) return 0;
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
303 if (!open_tv(tvh)){
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
304 tv_uninit(tvh);
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
305 return 0;
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
306 }
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
307 funcs = tvh->functions;
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
308 demuxer->priv=tvh;
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
309
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
310 sh_video = new_sh_video(demuxer, 0);
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
311
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
312 /* get IMAGE FORMAT */
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
313 funcs->control(tvh->priv, TVI_CONTROL_VID_GET_FORMAT, &sh_video->format);
2810
1f0bcdb49910 tv update
alex
parents: 2802
diff changeset
314 // if (IMGFMT_IS_RGB(sh_video->format) || IMGFMT_IS_BGR(sh_video->format))
3398
a73b02e35e70 give the IMGFMT_ for sh_video->format not 0x0
alex
parents: 3285
diff changeset
315 // sh_video->format = 0x0;
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
316
09d5c9834580 tv update
alex
parents: 2790
diff changeset
317 /* set FPS and FRAMETIME */
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
318
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
319 if(!sh_video->fps)
98769cea155c added tv subsystem
alex
parents:
diff changeset
320 {
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
321 int tmp;
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
322 if (funcs->control(tvh->priv, TVI_CONTROL_VID_GET_FPS, &tmp) != TVI_CONTROL_TRUE)
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
323 sh_video->fps = 25.0f; /* on PAL */
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
324 else sh_video->fps = tmp;
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
325 }
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
326
3285
bd7bff4cb453 add tv fps support
alex
parents: 3284
diff changeset
327 if (tv_param_fps != -1.0f)
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
328 sh_video->fps = tv_param_fps;
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
329
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
330 sh_video->frametime = 1.0f/sh_video->fps;
98769cea155c added tv subsystem
alex
parents:
diff changeset
331
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
332 /* If playback only mode, go to immediate mode, fail silently */
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
333 if(tv_param_immediate == 1)
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
334 {
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
335 funcs->control(tvh->priv, TVI_CONTROL_IMMEDIATE, 0);
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
336 tv_param_noaudio = 1;
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
337 }
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
338
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
339 /* set width */
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
340 funcs->control(tvh->priv, TVI_CONTROL_VID_GET_WIDTH, &sh_video->disp_w);
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
341
98769cea155c added tv subsystem
alex
parents:
diff changeset
342 /* set height */
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
343 funcs->control(tvh->priv, TVI_CONTROL_VID_GET_HEIGHT, &sh_video->disp_h);
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
344
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
345 demuxer->video->sh = sh_video;
98769cea155c added tv subsystem
alex
parents:
diff changeset
346 sh_video->ds = demuxer->video;
98769cea155c added tv subsystem
alex
parents:
diff changeset
347 demuxer->video->id = 0;
2932
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
348
fa3224774679 splitted demux_open_tv into two parts: stream_open_tv and demux_open_tv to support caching
alex
parents: 2931
diff changeset
349 // demuxer->seekable = 0;
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
350
98769cea155c added tv subsystem
alex
parents:
diff changeset
351 /* here comes audio init */
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
352
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
353 if (tv_param_noaudio == 0 && funcs->control(tvh->priv, TVI_CONTROL_IS_AUDIO, 0) == TVI_CONTROL_TRUE)
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
354 {
09d5c9834580 tv update
alex
parents: 2790
diff changeset
355 int audio_format;
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
356 int sh_audio_format;
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
357
09d5c9834580 tv update
alex
parents: 2790
diff changeset
358 /* yeah, audio is present */
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
359
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
360 funcs->control(tvh->priv, TVI_CONTROL_AUD_SET_SAMPLERATE,
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
361 &tv_param_audiorate);
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
362
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
363 if (funcs->control(tvh->priv, TVI_CONTROL_AUD_GET_FORMAT, &audio_format) != TVI_CONTROL_TRUE)
09d5c9834580 tv update
alex
parents: 2790
diff changeset
364 goto no_audio;
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
365
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
366 switch(audio_format)
09d5c9834580 tv update
alex
parents: 2790
diff changeset
367 {
09d5c9834580 tv update
alex
parents: 2790
diff changeset
368 case AFMT_U8:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
369 case AFMT_S8:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
370 case AFMT_U16_LE:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
371 case AFMT_U16_BE:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
372 case AFMT_S16_LE:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
373 case AFMT_S16_BE:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
374 case AFMT_S32_LE:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
375 case AFMT_S32_BE:
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
376 sh_audio_format = 0x1; /* PCM */
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
377 break;
09d5c9834580 tv update
alex
parents: 2790
diff changeset
378 case AFMT_IMA_ADPCM:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
379 case AFMT_MU_LAW:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
380 case AFMT_A_LAW:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
381 case AFMT_MPEG:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
382 case AFMT_AC3:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
383 default:
6161
c50ea0721e78 applied 64bit patch from Ulrich Hecht <uli at suse dot de>
alex
parents: 5923
diff changeset
384 mp_msg(MSGT_TV, MSGL_ERR, "Audio type '%s (%x)' unsupported!\n",
c50ea0721e78 applied 64bit patch from Ulrich Hecht <uli at suse dot de>
alex
parents: 5923
diff changeset
385 audio_out_format_name(audio_format), audio_format);
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
386 goto no_audio;
09d5c9834580 tv update
alex
parents: 2790
diff changeset
387 }
09d5c9834580 tv update
alex
parents: 2790
diff changeset
388
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
389 sh_audio = new_sh_audio(demuxer, 0);
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
390
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
391 funcs->control(tvh->priv, TVI_CONTROL_AUD_GET_SAMPLERATE,
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
392 &sh_audio->samplerate);
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
393 funcs->control(tvh->priv, TVI_CONTROL_AUD_GET_SAMPLESIZE,
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
394 &sh_audio->samplesize);
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
395 funcs->control(tvh->priv, TVI_CONTROL_AUD_GET_CHANNELS,
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
396 &sh_audio->channels);
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
397
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
398 sh_audio->format = sh_audio_format;
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
399 sh_audio->sample_format = audio_format;
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
400
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
401 sh_audio->i_bps = sh_audio->o_bps =
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
402 sh_audio->samplerate * sh_audio->samplesize *
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
403 sh_audio->channels;
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
404
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
405 // emulate WF for win32 codecs:
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
406 sh_audio->wf = (WAVEFORMATEX *)malloc(sizeof(WAVEFORMATEX));
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
407 sh_audio->wf->wFormatTag = sh_audio->format;
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
408 sh_audio->wf->nChannels = sh_audio->channels;
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
409 sh_audio->wf->wBitsPerSample = sh_audio->samplesize * 8;
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
410 sh_audio->wf->nSamplesPerSec = sh_audio->samplerate;
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
411 sh_audio->wf->nBlockAlign = sh_audio->samplesize * sh_audio->channels;
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
412 sh_audio->wf->nAvgBytesPerSec = sh_audio->i_bps;
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
413
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
414 mp_msg(MSGT_DECVIDEO, MSGL_V, " TV audio: %d channels, %d bits, %d Hz\n",
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
415 sh_audio->wf->nChannels, sh_audio->wf->wBitsPerSample,
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 5087
diff changeset
416 sh_audio->wf->nSamplesPerSec);
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
417
09d5c9834580 tv update
alex
parents: 2790
diff changeset
418 demuxer->audio->sh = sh_audio;
09d5c9834580 tv update
alex
parents: 2790
diff changeset
419 sh_audio->ds = demuxer->audio;
09d5c9834580 tv update
alex
parents: 2790
diff changeset
420 demuxer->audio->id = 0;
09d5c9834580 tv update
alex
parents: 2790
diff changeset
421 }
09d5c9834580 tv update
alex
parents: 2790
diff changeset
422 no_audio:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
423
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7318
diff changeset
424 if(!(funcs->start(tvh->priv))){
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7318
diff changeset
425 // start failed :(
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7318
diff changeset
426 tv_uninit(tvh);
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7318
diff changeset
427 return 0;
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7318
diff changeset
428 }
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7318
diff changeset
429 return 1;
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
430 }
98769cea155c added tv subsystem
alex
parents:
diff changeset
431
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7318
diff changeset
432 int demux_close_tv(demuxer_t *demuxer)
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
433 {
7408
0c6948b8100f stream layer cleanup part 2
arpi
parents: 7329
diff changeset
434 tvi_handle_t *tvh=(tvi_handle_t*)(demuxer->priv);
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
435 return(tvh->functions->uninit(tvh->priv));
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
436 }
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
437
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
438 /* ================== STREAM_TV ===================== */
6161
c50ea0721e78 applied 64bit patch from Ulrich Hecht <uli at suse dot de>
alex
parents: 5923
diff changeset
439 tvi_handle_t *tvi_init_dummy(char *device);
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
440 tvi_handle_t *tvi_init_v4l(char *device, char *adevice);
6161
c50ea0721e78 applied 64bit patch from Ulrich Hecht <uli at suse dot de>
alex
parents: 5923
diff changeset
441 tvi_handle_t *tvi_init_bsdbt848(char *device);
c50ea0721e78 applied 64bit patch from Ulrich Hecht <uli at suse dot de>
alex
parents: 5923
diff changeset
442
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
443 tvi_handle_t *tv_begin(void)
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
444 {
98769cea155c added tv subsystem
alex
parents:
diff changeset
445 if (!strcmp(tv_param_driver, "dummy"))
6161
c50ea0721e78 applied 64bit patch from Ulrich Hecht <uli at suse dot de>
alex
parents: 5923
diff changeset
446 return tvi_init_dummy(tv_param_device);
3249
49a0d462dffe init_v4l only present if HAVE_TV_V4L
alex
parents: 2941
diff changeset
447 #ifdef HAVE_TV_V4L
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
448 if (!strcmp(tv_param_driver, "v4l"))
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6161
diff changeset
449 return tvi_init_v4l(tv_param_device, tv_param_adevice);
3249
49a0d462dffe init_v4l only present if HAVE_TV_V4L
alex
parents: 2941
diff changeset
450 #endif
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
451 #ifdef HAVE_TV_BSDBT848
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
452 if (!strcmp(tv_param_driver, "bsdbt848"))
6161
c50ea0721e78 applied 64bit patch from Ulrich Hecht <uli at suse dot de>
alex
parents: 5923
diff changeset
453 return tvi_init_bsdbt848(tv_param_device);
5087
1d54c3a27093 audio support and pts based packet handling by Charles Henrich
alex
parents: 4350
diff changeset
454 #endif
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
455
98769cea155c added tv subsystem
alex
parents:
diff changeset
456 mp_msg(MSGT_TV, MSGL_ERR, "No such driver: %s\n", tv_param_driver);
98769cea155c added tv subsystem
alex
parents:
diff changeset
457 return(NULL);
98769cea155c added tv subsystem
alex
parents:
diff changeset
458 }
98769cea155c added tv subsystem
alex
parents:
diff changeset
459
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
460 int tv_init(tvi_handle_t *tvh)
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
461 {
2818
9f68d309f8cb printf's changed into mp_msg
alex
parents: 2817
diff changeset
462 mp_msg(MSGT_TV, MSGL_INFO, "Selected driver: %s\n", tvh->info->short_name);
9f68d309f8cb printf's changed into mp_msg
alex
parents: 2817
diff changeset
463 mp_msg(MSGT_TV, MSGL_INFO, " name: %s\n", tvh->info->name);
9f68d309f8cb printf's changed into mp_msg
alex
parents: 2817
diff changeset
464 mp_msg(MSGT_TV, MSGL_INFO, " author: %s\n", tvh->info->author);
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
465 if (tvh->info->comment)
2818
9f68d309f8cb printf's changed into mp_msg
alex
parents: 2817
diff changeset
466 mp_msg(MSGT_TV, MSGL_INFO, " comment: %s\n", tvh->info->comment);
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
467
3815
622a9ade4517 updated
alex
parents: 3728
diff changeset
468 return(tvh->functions->init(tvh->priv));
2837
c63562f5f56f tuning worx (can set frequency)
alex
parents: 2830
diff changeset
469 }
c63562f5f56f tuning worx (can set frequency)
alex
parents: 2830
diff changeset
470
c63562f5f56f tuning worx (can set frequency)
alex
parents: 2830
diff changeset
471 int tv_uninit(tvi_handle_t *tvh)
c63562f5f56f tuning worx (can set frequency)
alex
parents: 2830
diff changeset
472 {
c63562f5f56f tuning worx (can set frequency)
alex
parents: 2830
diff changeset
473 return(tvh->functions->uninit(tvh->priv));
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
474 }
2937
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
475
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
476 /* utilities for mplayer (not mencoder!!) */
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
477 int tv_set_color_options(tvi_handle_t *tvh, int opt, int value)
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
478 {
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
479 tvi_functions_t *funcs = tvh->functions;
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
480
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
481 switch(opt)
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
482 {
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
483 case TV_COLOR_BRIGHTNESS:
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
484 funcs->control(tvh->priv, TVI_CONTROL_VID_SET_BRIGHTNESS, &value);
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
485 break;
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
486 case TV_COLOR_HUE:
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
487 funcs->control(tvh->priv, TVI_CONTROL_VID_SET_HUE, &value);
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
488 break;
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
489 case TV_COLOR_SATURATION:
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
490 funcs->control(tvh->priv, TVI_CONTROL_VID_SET_SATURATION, &value);
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
491 break;
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
492 case TV_COLOR_CONTRAST:
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
493 funcs->control(tvh->priv, TVI_CONTROL_VID_SET_CONTRAST, &value);
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
494 break;
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
495 default:
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
496 mp_msg(MSGT_TV, MSGL_WARN, "Unknown color option (%d) specified!\n", opt);
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
497 }
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
498
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
499 return(1);
4307478ad922 added support for setting color values
alex
parents: 2932
diff changeset
500 }
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
501
7806
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
502 int tv_get_freq(tvi_handle_t *tvh, unsigned long *freq)
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
503 {
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
504 if (tvh->functions->control(tvh->priv, TVI_CONTROL_IS_TUNER, 0) == TVI_CONTROL_TRUE)
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
505 {
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
506 tvh->functions->control(tvh->priv, TVI_CONTROL_TUN_GET_FREQ, freq);
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
507 mp_msg(MSGT_TV, MSGL_V, "Current frequency: %lu (%.3f)\n",
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
508 *freq, (float)*freq/16);
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
509 }
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
510 return(1);
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
511 }
6a6f6b8b2ac7 set position in channel list on startup. note: hope one day we will get cleaned the int->float->int sutff ;)
alex
parents: 7472
diff changeset
512
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
513 int tv_set_freq(tvi_handle_t *tvh, unsigned long freq)
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
514 {
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
515 if (tvh->functions->control(tvh->priv, TVI_CONTROL_IS_TUNER, 0) == TVI_CONTROL_TRUE)
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
516 {
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
517 // unsigned long freq = atof(tv_param_freq)*16;
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
518
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
519 /* set freq in MHz */
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
520 tvh->functions->control(tvh->priv, TVI_CONTROL_TUN_SET_FREQ, &freq);
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
521
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
522 tvh->functions->control(tvh->priv, TVI_CONTROL_TUN_GET_FREQ, &freq);
7318
85897ab199a4 changed message leveles (too many non-sense info messages)
alex
parents: 7163
diff changeset
523 mp_msg(MSGT_TV, MSGL_V, "Current frequency: %lu (%.3f)\n",
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
524 freq, (float)freq/16);
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
525 }
7472
c4434bdf6e51 tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents: 7408
diff changeset
526 return(1);
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
527 }
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
528
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
529 int tv_step_channel(tvi_handle_t *tvh, int direction)
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
530 {
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
531 struct CHANLIST cl;
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
532
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
533 if (direction == TV_CHANNEL_LOWER)
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
534 {
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
535 if (tvh->channel-1 >= 0)
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
536 {
5923
4241047fb315 patch by J¸«ärgen Appel <jappel@linux01.gwdg.de>:
pl
parents: 5572
diff changeset
537 cl = tvh->chanlist_s[--tvh->channel];
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
538 mp_msg(MSGT_TV, MSGL_INFO, "Selected channel: %s (freq: %.3f)\n",
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
539 cl.name, (float)cl.freq/1000);
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
540 tv_set_freq(tvh, (unsigned long)(((float)cl.freq/1000)*16));
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
541 }
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
542 }
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
543
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
544 if (direction == TV_CHANNEL_HIGHER)
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
545 {
4242
bbfbe9bbb956 fixed channel changing with frequencies.c
alex
parents: 3815
diff changeset
546 if (tvh->channel+1 < chanlists[tvh->chanlist].count)
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
547 {
5923
4241047fb315 patch by J¸«ärgen Appel <jappel@linux01.gwdg.de>:
pl
parents: 5572
diff changeset
548 cl = tvh->chanlist_s[++tvh->channel];
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
549 mp_msg(MSGT_TV, MSGL_INFO, "Selected channel: %s (freq: %.3f)\n",
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
550 cl.name, (float)cl.freq/1000);
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
551 tv_set_freq(tvh, (unsigned long)(((float)cl.freq/1000)*16));
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
552 }
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
553 }
7472
c4434bdf6e51 tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents: 7408
diff changeset
554 return(1);
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
555 }
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
556
8494
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
557 int tv_set_channel(tvi_handle_t *tvh, char *channel)
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
558 {
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
559 int i;
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
560 struct CHANLIST cl;
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
561
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
562 for (i = 0; i < chanlists[tvh->chanlist].count; i++)
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
563 {
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
564 cl = tvh->chanlist_s[i];
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
565 // printf("count%d: name: %s, freq: %d\n",
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
566 // i, cl.name, cl.freq);
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
567 if (!strcasecmp(cl.name, channel))
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
568 {
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
569 tvh->channel = i;
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
570 mp_msg(MSGT_TV, MSGL_INFO, "Selected channel: %s (freq: %.3f)\n",
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
571 cl.name, (float)cl.freq/1000);
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
572 tv_set_freq(tvh, (unsigned long)(((float)cl.freq/1000)*16));
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
573 break;
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
574 }
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
575 }
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
576 }
47cf94058137 add a TV_SET_CNANNEL command
henry
parents: 8487
diff changeset
577
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
578 int tv_step_norm(tvi_handle_t *tvh)
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
579 {
7472
c4434bdf6e51 tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents: 7408
diff changeset
580 return(1);
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
581 }
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
582
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
583 int tv_step_chanlist(tvi_handle_t *tvh)
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
584 {
7472
c4434bdf6e51 tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents: 7408
diff changeset
585 return(1);
2941
60c1b7c0ea21 added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents: 2937
diff changeset
586 }
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
587 #endif /* USE_TV */