annotate stream/stream_dvb.c @ 21033:087cad309e9c

if in the list of pids appears at least one 8192 (while TS) remove all other pid filters and don't add pid 0, either
author nicodvb
date Sun, 19 Nov 2006 12:05:11 +0000
parents 89b78ea6bc70
children 5357da9f0690
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19296
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
1 /*
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
2
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
3 dvbstream
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
4 (C) Dave Chapman <dave@dchapman.com> 2001, 2002.
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
5
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
6 The latest version can be found at http://www.linuxstb.org/dvbstream
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
7
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
8 Modified for use with MPlayer, for details see the changelog at
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
9 http://svn.mplayerhq.hu/mplayer/trunk/
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
10 $Id$
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
11
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
12 Copyright notice:
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
13
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
14 This program is free software; you can redistribute it and/or modify
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
15 it under the terms of the GNU General Public License as published by
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
16 the Free Software Foundation; either version 2 of the License, or
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
17 (at your option) any later version.
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
18
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
19 This program is distributed in the hope that it will be useful,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
22 GNU General Public License for more details.
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
23
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
24 You should have received a copy of the GNU General Public License
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
25 along with this program; if not, write to the Free Software
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
26 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
27
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
28 */
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
29
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
30 #include "config.h"
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
31 #include <stdio.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
32 #include <stdlib.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
33 #include <string.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
34 #include <ctype.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
35 #include <sys/ioctl.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
36 #include <sys/time.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
37 #include <sys/poll.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
38 #include <unistd.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
39 #include <fcntl.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
40 #include <string.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
41 #include <errno.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
42 #include <fcntl.h>
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
43
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
44 #include "stream.h"
19312
ab8d6b6deb63 proper inclusion of demuxer.h (including libmpdemux in Makefile only was to make previous split easier)
ben
parents: 19296
diff changeset
45 #include "libmpdemux/demuxer.h"
19296
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
46 #include "help_mp.h"
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
47 #include "m_option.h"
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
48 #include "m_struct.h"
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
49
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
50 #include "dvbin.h"
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
51
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
52
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
53 #define MAX_CHANNELS 8
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
54 #define CHANNEL_LINE_LEN 256
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
55 #define min(a, b) ((a) <= (b) ? (a) : (b))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
56
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
57
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
58 //TODO: CAMBIARE list_ptr e da globale a per_priv
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
59
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
60
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
61 static struct stream_priv_s
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
62 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
63 char *prog;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
64 int card;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
65 char *type;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
66 int vid, aid;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
67 int timeout;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
68 char *file;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
69 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
70 stream_defaults =
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
71 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
72 "", 1, "", 0, 0, 30, NULL
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
73 };
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
74
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
75 #define ST_OFF(f) M_ST_OFF(struct stream_priv_s, f)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
76
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
77 /// URL definition
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
78 static m_option_t stream_params[] = {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
79 {"prog", ST_OFF(prog), CONF_TYPE_STRING, 0, 0 ,0, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
80 {"card", ST_OFF(card), CONF_TYPE_INT, M_OPT_RANGE, 1, 4, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
81 {"type", ST_OFF(type), CONF_TYPE_STRING, 0, 0 ,0, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
82 {"vid", ST_OFF(vid), CONF_TYPE_INT, 0, 0 ,0, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
83 {"aid", ST_OFF(aid), CONF_TYPE_INT, 0, 0 ,0, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
84 {"timeout",ST_OFF(timeout), CONF_TYPE_INT, M_OPT_RANGE, 1, 30, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
85 {"file", ST_OFF(file), CONF_TYPE_STRING, 0, 0 ,0, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
86
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
87 {"hostname", ST_OFF(prog), CONF_TYPE_STRING, 0, 0, 0, NULL },
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
88 {"username", ST_OFF(card), CONF_TYPE_INT, M_OPT_RANGE, 1, 4, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
89 {NULL, NULL, 0, 0, 0, 0, NULL}
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
90 };
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
91
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
92 static struct m_struct_st stream_opts = {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
93 "dvbin",
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
94 sizeof(struct stream_priv_s),
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
95 &stream_defaults,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
96 stream_params
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
97 };
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
98
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
99
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
100
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
101 m_option_t dvbin_opts_conf[] = {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
102 {"prog", &stream_defaults.prog, CONF_TYPE_STRING, 0, 0 ,0, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
103 {"card", &stream_defaults.card, CONF_TYPE_INT, M_OPT_RANGE, 1, 4, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
104 {"type", "DVB card type is autodetected and can't be overridden\n", CONF_TYPE_PRINT, CONF_NOCFG, 0 ,0, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
105 {"vid", &stream_defaults.vid, CONF_TYPE_INT, 0, 0 ,0, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
106 {"aid", &stream_defaults.aid, CONF_TYPE_INT, 0, 0 ,0, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
107 {"timeout", &stream_defaults.timeout, CONF_TYPE_INT, M_OPT_RANGE, 1, 30, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
108 {"file", &stream_defaults.file, CONF_TYPE_STRING, 0, 0 ,0, NULL},
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
109
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
110 {NULL, NULL, 0, 0, 0, 0, NULL}
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
111 };
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
112
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
113
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
114
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
115
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
116 extern int dvb_set_ts_filt(int fd, uint16_t pid, dmx_pes_type_t pestype);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
117 extern int dvb_demux_stop(int fd);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
118 extern int dvb_get_tuner_type(int fd);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
119 int dvb_open_devices(dvb_priv_t *priv, int n, int demux_cnt, int *pids);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
120 int dvb_fix_demuxes(dvb_priv_t *priv, int cnt, int *pids);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
121
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
122 extern int dvb_tune(dvb_priv_t *priv, int freq, char pol, int srate, int diseqc, int tone,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
123 fe_spectral_inversion_t specInv, fe_modulation_t modulation, fe_guard_interval_t guardInterval,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
124 fe_transmit_mode_t TransmissionMode, fe_bandwidth_t bandWidth, fe_code_rate_t HP_CodeRate,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
125 fe_code_rate_t LP_CodeRate, fe_hierarchy_t hier, int timeout);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
126 extern char *dvb_dvrdev[4], *dvb_demuxdev[4], *dvb_frontenddev[4];
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
127
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
128 static dvb_config_t *dvb_config = NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
129
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
130
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
131 static dvb_channels_list *dvb_get_channels(char *filename, int type)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
132 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
133 dvb_channels_list *list;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
134 FILE *f;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
135 char line[CHANNEL_LINE_LEN], *colon;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
136
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
137 int fields, cnt, pcnt, k;
21033
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
138 int has8192;
19296
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
139 dvb_channel_t *ptr, *tmp, chn;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
140 char tmp_lcr[256], tmp_hier[256], inv[256], bw[256], cr[256], mod[256], transm[256], gi[256], vpid_str[256], apid_str[256];
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
141 const char *cbl_conf = "%d:%255[^:]:%d:%255[^:]:%255[^:]:%255[^:]:%255[^:]\n";
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
142 const char *sat_conf = "%d:%c:%d:%d:%255[^:]:%255[^:]\n";
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
143 const char *ter_conf = "%d:%255[^:]:%255[^:]:%255[^:]:%255[^:]:%255[^:]:%255[^:]:%255[^:]:%255[^:]:%255[^:]:%255[^:]\n";
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
144 const char *atsc_conf = "%d:%255[^:]:%255[^:]:%255[^:]\n";
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
145
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
146 mp_msg(MSGT_DEMUX, MSGL_V, "CONFIG_READ FILE: %s, type: %d\n", filename, type);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
147 if((f=fopen(filename, "r"))==NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
148 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
149 mp_msg(MSGT_DEMUX, MSGL_FATAL, "CAN'T READ CONFIG FILE %s\n", filename);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
150 return NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
151 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
152
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
153 list = malloc(sizeof(dvb_channels_list));
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
154 if(list == NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
155 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
156 fclose(f);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
157 mp_msg(MSGT_DEMUX, MSGL_V, "DVB_GET_CHANNELS: couldn't malloc enough memory\n");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
158 return NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
159 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
160
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
161 ptr = &chn;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
162 list->NUM_CHANNELS = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
163 list->channels = NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
164 while(! feof(f))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
165 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
166 if( fgets(line, CHANNEL_LINE_LEN, f) == NULL )
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
167 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
168
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
169 if((line[0] == '#') || (strlen(line) == 0))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
170 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
171
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
172 colon = index(line, ':');
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
173 if(colon)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
174 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
175 k = colon - line;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
176 if(!k)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
177 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
178 ptr->name = (char*) malloc(k+1);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
179 if(! ptr->name)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
180 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
181 strncpy(ptr->name, line, k);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
182 ptr->name[k] = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
183 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
184 else
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
185 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
186 k++;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
187 apid_str[0] = vpid_str[0] = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
188 ptr->pids_cnt = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
189 ptr->freq = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
190 if(type == TUNER_TER)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
191 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
192 fields = sscanf(&line[k], ter_conf,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
193 &ptr->freq, inv, bw, cr, tmp_lcr, mod,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
194 transm, gi, tmp_hier, vpid_str, apid_str);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
195 mp_msg(MSGT_DEMUX, MSGL_V,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
196 "TER, NUM: %d, NUM_FIELDS: %d, NAME: %s, FREQ: %d",
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
197 list->NUM_CHANNELS, fields, ptr->name, ptr->freq);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
198 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
199 else if(type == TUNER_CBL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
200 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
201 fields = sscanf(&line[k], cbl_conf,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
202 &ptr->freq, inv, &ptr->srate,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
203 cr, mod, vpid_str, apid_str);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
204 mp_msg(MSGT_DEMUX, MSGL_V,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
205 "CBL, NUM: %d, NUM_FIELDS: %d, NAME: %s, FREQ: %d, SRATE: %d",
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
206 list->NUM_CHANNELS, fields, ptr->name, ptr->freq, ptr->srate);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
207 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
208 #ifdef DVB_ATSC
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
209 else if(type == TUNER_ATSC)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
210 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
211 fields = sscanf(&line[k], atsc_conf,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
212 &ptr->freq, mod, vpid_str, apid_str);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
213 mp_msg(MSGT_DEMUX, MSGL_V,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
214 "ATSC, NUM: %d, NUM_FIELDS: %d, NAME: %s, FREQ: %d\n",
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
215 list->NUM_CHANNELS, fields, ptr->name, ptr->freq);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
216 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
217 #endif
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
218 else //SATELLITE
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
219 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
220 fields = sscanf(&line[k], sat_conf,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
221 &ptr->freq, &ptr->pol, &ptr->diseqc, &ptr->srate, vpid_str, apid_str);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
222 ptr->pol = toupper(ptr->pol);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
223 ptr->freq *= 1000UL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
224 ptr->srate *= 1000UL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
225 ptr->tone = -1;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
226 ptr->inv = INVERSION_AUTO;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
227 ptr->cr = FEC_AUTO;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
228 if((ptr->diseqc > 4) || (ptr->diseqc < 0))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
229 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
230 if(ptr->diseqc > 0)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
231 ptr->diseqc--;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
232 mp_msg(MSGT_DEMUX, MSGL_V,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
233 "SAT, NUM: %d, NUM_FIELDS: %d, NAME: %s, FREQ: %d, SRATE: %d, POL: %c, DISEQC: %d",
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
234 list->NUM_CHANNELS, fields, ptr->name, ptr->freq, ptr->srate, ptr->pol, ptr->diseqc);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
235 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
236
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
237 if(vpid_str[0])
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
238 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
239 pcnt = sscanf(vpid_str, "%d+%d+%d+%d+%d+%d+%d", &ptr->pids[0], &ptr->pids[1], &ptr->pids[2], &ptr->pids[3],
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
240 &ptr->pids[4], &ptr->pids[5], &ptr->pids[6]);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
241 if(pcnt > 0)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
242 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
243 ptr->pids_cnt = pcnt;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
244 fields++;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
245 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
246 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
247
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
248 if(apid_str[0])
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
249 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
250 cnt = ptr->pids_cnt;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
251 pcnt = sscanf(apid_str, "%d+%d+%d+%d+%d+%d+%d+%d", &ptr->pids[cnt], &ptr->pids[cnt+1], &ptr->pids[cnt+2],
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
252 &ptr->pids[cnt+3], &ptr->pids[cnt+4], &ptr->pids[cnt+5], &ptr->pids[cnt+6], &ptr->pids[cnt+7]);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
253 if(pcnt > 0)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
254 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
255 ptr->pids_cnt += pcnt;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
256 fields++;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
257 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
258 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
259
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
260 if((fields < 2) || (ptr->pids_cnt <= 0) || (ptr->freq == 0) || (strlen(ptr->name) == 0))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
261 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
262
21033
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
263 has8192 = 0;
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
264 for(cnt = 0; cnt < ptr->pids_cnt; cnt++)
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
265 {
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
266 if(ptr->pids[cnt] == 8192)
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
267 {
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
268 has8192 = 1;
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
269 break;
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
270 }
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
271 }
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
272 if(has8192)
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
273 {
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
274 ptr->pids[0] = 8192;
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
275 ptr->pids_cnt = 1;
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
276 }
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
277 else
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
278 {
19296
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
279 ptr->pids[ptr->pids_cnt] = 0; //PID 0 is the PAT
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
280 ptr->pids_cnt++;
21033
087cad309e9c if in the list of pids appears at least one 8192 (while TS) remove all other pid filters
nicodvb
parents: 20660
diff changeset
281 }
19296
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
282 mp_msg(MSGT_DEMUX, MSGL_V, " PIDS: ");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
283 for(cnt = 0; cnt < ptr->pids_cnt; cnt++)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
284 mp_msg(MSGT_DEMUX, MSGL_V, " %d ", ptr->pids[cnt]);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
285 mp_msg(MSGT_DEMUX, MSGL_V, "\n");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
286
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
287 if((type == TUNER_TER) || (type == TUNER_CBL))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
288 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
289 if(! strcmp(inv, "INVERSION_ON"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
290 ptr->inv = INVERSION_ON;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
291 else if(! strcmp(inv, "INVERSION_OFF"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
292 ptr->inv = INVERSION_OFF;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
293 else
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
294 ptr->inv = INVERSION_AUTO;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
295
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
296
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
297 if(! strcmp(cr, "FEC_1_2"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
298 ptr->cr =FEC_1_2;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
299 else if(! strcmp(cr, "FEC_2_3"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
300 ptr->cr =FEC_2_3;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
301 else if(! strcmp(cr, "FEC_3_4"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
302 ptr->cr =FEC_3_4;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
303 #ifdef HAVE_DVB_HEAD
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
304 else if(! strcmp(cr, "FEC_4_5"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
305 ptr->cr =FEC_4_5;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
306 else if(! strcmp(cr, "FEC_6_7"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
307 ptr->cr =FEC_6_7;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
308 else if(! strcmp(cr, "FEC_8_9"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
309 ptr->cr =FEC_8_9;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
310 #endif
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
311 else if(! strcmp(cr, "FEC_5_6"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
312 ptr->cr =FEC_5_6;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
313 else if(! strcmp(cr, "FEC_7_8"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
314 ptr->cr =FEC_7_8;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
315 else if(! strcmp(cr, "FEC_NONE"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
316 ptr->cr =FEC_NONE;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
317 else ptr->cr =FEC_AUTO;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
318 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
319
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
320
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
321 if((type == TUNER_TER) || (type == TUNER_CBL) || (type == TUNER_ATSC))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
322 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
323 if(! strcmp(mod, "QAM_128"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
324 ptr->mod = QAM_128;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
325 else if(! strcmp(mod, "QAM_256"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
326 ptr->mod = QAM_256;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
327 else if(! strcmp(mod, "QAM_64"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
328 ptr->mod = QAM_64;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
329 else if(! strcmp(mod, "QAM_32"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
330 ptr->mod = QAM_32;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
331 else if(! strcmp(mod, "QAM_16"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
332 ptr->mod = QAM_16;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
333 #ifdef DVB_ATSC
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
334 else if(! strcmp(mod, "VSB_8") || ! strcmp(mod, "8VSB"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
335 ptr->mod = VSB_8;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
336 else if(! strcmp(mod, "VSB_16") || !strcmp(mod, "16VSB"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
337 ptr->mod = VSB_16;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
338
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
339 ptr->inv = INVERSION_AUTO;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
340 #endif
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
341 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
342
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
343 if(type == TUNER_TER)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
344 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
345 if(! strcmp(bw, "BANDWIDTH_6_MHZ"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
346 ptr->bw = BANDWIDTH_6_MHZ;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
347 else if(! strcmp(bw, "BANDWIDTH_7_MHZ"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
348 ptr->bw = BANDWIDTH_7_MHZ;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
349 else if(! strcmp(bw, "BANDWIDTH_8_MHZ"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
350 ptr->bw = BANDWIDTH_8_MHZ;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
351
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
352
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
353 if(! strcmp(transm, "TRANSMISSION_MODE_2K"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
354 ptr->trans = TRANSMISSION_MODE_2K;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
355 else if(! strcmp(transm, "TRANSMISSION_MODE_8K"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
356 ptr->trans = TRANSMISSION_MODE_8K;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
357
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
358
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
359 if(! strcmp(gi, "GUARD_INTERVAL_1_32"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
360 ptr->gi = GUARD_INTERVAL_1_32;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
361 else if(! strcmp(gi, "GUARD_INTERVAL_1_16"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
362 ptr->gi = GUARD_INTERVAL_1_16;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
363 else if(! strcmp(gi, "GUARD_INTERVAL_1_8"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
364 ptr->gi = GUARD_INTERVAL_1_8;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
365 else ptr->gi = GUARD_INTERVAL_1_4;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
366
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
367 if(! strcmp(tmp_lcr, "FEC_1_2"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
368 ptr->cr_lp =FEC_1_2;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
369 else if(! strcmp(tmp_lcr, "FEC_2_3"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
370 ptr->cr_lp =FEC_2_3;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
371 else if(! strcmp(tmp_lcr, "FEC_3_4"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
372 ptr->cr_lp =FEC_3_4;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
373 #ifdef HAVE_DVB_HEAD
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
374 else if(! strcmp(tmp_lcr, "FEC_4_5"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
375 ptr->cr_lp =FEC_4_5;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
376 else if(! strcmp(tmp_lcr, "FEC_6_7"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
377 ptr->cr_lp =FEC_6_7;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
378 else if(! strcmp(tmp_lcr, "FEC_8_9"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
379 ptr->cr_lp =FEC_8_9;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
380 #endif
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
381 else if(! strcmp(tmp_lcr, "FEC_5_6"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
382 ptr->cr_lp =FEC_5_6;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
383 else if(! strcmp(tmp_lcr, "FEC_7_8"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
384 ptr->cr_lp =FEC_7_8;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
385 else if(! strcmp(tmp_lcr, "FEC_NONE"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
386 ptr->cr_lp =FEC_NONE;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
387 else ptr->cr_lp =FEC_AUTO;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
388
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
389
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
390 if(! strcmp(tmp_hier, "HIERARCHY_1"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
391 ptr->hier = HIERARCHY_1;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
392 else if(! strcmp(tmp_hier, "HIERARCHY_2"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
393 ptr->hier = HIERARCHY_2;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
394 else if(! strcmp(tmp_hier, "HIERARCHY_4"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
395 ptr->hier = HIERARCHY_4;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
396 #ifdef HAVE_DVB_HEAD
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
397 else if(! strcmp(tmp_hier, "HIERARCHY_AUTO"))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
398 ptr->hier = HIERARCHY_AUTO;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
399 #endif
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
400 else ptr->hier = HIERARCHY_NONE;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
401 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
402
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
403 tmp = (dvb_channel_t*)realloc(list->channels, sizeof(dvb_channel_t) * (list->NUM_CHANNELS + 1));
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
404 if(tmp == NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
405 break;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
406
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
407 list->channels = tmp;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
408 memcpy(&(list->channels[list->NUM_CHANNELS]), ptr, sizeof(dvb_channel_t));
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
409 list->NUM_CHANNELS++;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
410 if(sizeof(dvb_channel_t) * list->NUM_CHANNELS >= 1024*1024)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
411 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
412 mp_msg(MSGT_DEMUX, MSGL_V, "dvbin.c, > 1MB allocated for channels struct, dropping the rest of the file\r\n");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
413 break;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
414 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
415 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
416
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
417 fclose(f);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
418 if(list->NUM_CHANNELS == 0)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
419 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
420 if(list->channels != NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
421 free(list->channels);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
422 free(list);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
423 return NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
424 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
425
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
426 list->current = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
427 return list;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
428 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
429
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
430
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
431
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
432 static int dvb_streaming_read(stream_t *stream, char *buffer, int size)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
433 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
434 struct pollfd pfds[1];
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
435 int pos=0, tries, rk, fd;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
436 dvb_priv_t *priv = (dvb_priv_t *) stream->priv;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
437
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
438 mp_msg(MSGT_DEMUX, MSGL_DBG3, "dvb_streaming_read(%d)\n", size);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
439
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
440 tries = priv->retry + 1;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
441
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
442 fd = stream->fd;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
443 while(pos < size)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
444 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
445 pfds[0].fd = fd;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
446 pfds[0].events = POLLIN | POLLPRI;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
447
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
448 rk = size - pos;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
449 if(poll(pfds, 1, 500) <= 0)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
450 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
451 errno = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
452 mp_msg(MSGT_DEMUX, MSGL_ERR, "dvb_streaming_read, attempt N. %d failed with errno %d when reading %d bytes\n", tries, errno, size-pos);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
453 if(--tries > 0)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
454 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
455 else
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
456 break;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
457 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
458 if((rk = read(fd, &buffer[pos], rk)) > 0)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
459 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
460 pos += rk;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
461 mp_msg(MSGT_DEMUX, MSGL_DBG3, "ret (%d) bytes\n", pos);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
462 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
463 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
464
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
465
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
466 if(! pos)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
467 mp_msg(MSGT_DEMUX, MSGL_ERR, "dvb_streaming_read, return %d bytes\n", pos);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
468
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
469 return pos;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
470 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
471
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
472 static void dvbin_close(stream_t *stream);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
473
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
474 int dvb_set_channel(dvb_priv_t *priv, int card, int n)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
475 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
476 dvb_channels_list *new_list;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
477 dvb_channel_t *channel;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
478 stream_t *stream = (stream_t*) priv->stream;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
479 char buf[4096];
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
480 dvb_config_t *conf = (dvb_config_t *) priv->config;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
481 int devno;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
482 int i;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
483
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
484 if((card < 0) || (card > conf->count))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
485 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
486 mp_msg(MSGT_DEMUX, MSGL_ERR, "dvb_set_channel: INVALID CARD NUMBER: %d vs %d, abort\n", card, conf->count);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
487 return 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
488 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
489
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
490 devno = conf->cards[card].devno;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
491 new_list = conf->cards[card].list;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
492 if((n > new_list->NUM_CHANNELS) || (n < 0))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
493 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
494 mp_msg(MSGT_DEMUX, MSGL_ERR, "dvb_set_channel: INVALID CHANNEL NUMBER: %d, for card %d, abort\n", n, card);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
495 return 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
496 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
497 channel = &(new_list->channels[n]);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
498
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
499 if(priv->is_on) //the fds are already open and we have to stop the demuxers
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
500 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
501 for(i = 0; i < priv->demux_fds_cnt; i++)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
502 dvb_demux_stop(priv->demux_fds[i]);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
503
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
504 priv->retry = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
505 while(dvb_streaming_read(stream, buf, 4096) > 0); //empty both the stream's and driver's buffer
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
506 if(priv->card != card)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
507 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
508 dvbin_close(stream);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
509 if(! dvb_open_devices(priv, devno, channel->pids_cnt, channel->pids))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
510 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
511 mp_msg(MSGT_DEMUX, MSGL_ERR, "DVB_SET_CHANNEL, COULDN'T OPEN DEVICES OF CARD: %d, EXIT\n", card);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
512 return 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
513 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
514 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
515 else //close all demux_fds with pos > pids required for the new channel or open other demux_fds if we have too few
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
516 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
517 if(! dvb_fix_demuxes(priv, channel->pids_cnt, channel->pids))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
518 return 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
519 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
520 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
521 else
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
522 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
523 if(! dvb_open_devices(priv, devno, channel->pids_cnt, channel->pids))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
524 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
525 mp_msg(MSGT_DEMUX, MSGL_ERR, "DVB_SET_CHANNEL2, COULDN'T OPEN DEVICES OF CARD: %d, EXIT\n", card);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
526 return 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
527 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
528 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
529
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
530 dvb_config->priv = priv;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
531 priv->card = card;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
532 priv->list = new_list;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
533 priv->retry = 5;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
534 new_list->current = n;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
535 stream->fd = priv->dvr_fd;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
536 mp_msg(MSGT_DEMUX, MSGL_V, "DVB_SET_CHANNEL: new channel name=%s, card: %d, channel %d\n", channel->name, card, n);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
537
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
538 stream->eof=1;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
539 stream_reset(stream);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
540
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
541
20659
31b525f90395 nonsense removal: compare old and new frequency in order to skip tuning
nicodvb
parents: 19312
diff changeset
542 if(channel->freq != priv->last_freq)
19296
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
543 if (! dvb_tune(priv, channel->freq, channel->pol, channel->srate, channel->diseqc, channel->tone,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
544 channel->inv, channel->mod, channel->gi, channel->trans, channel->bw, channel->cr, channel->cr_lp, channel->hier, priv->timeout))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
545 return 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
546
20659
31b525f90395 nonsense removal: compare old and new frequency in order to skip tuning
nicodvb
parents: 19312
diff changeset
547 priv->last_freq = channel->freq;
19296
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
548 priv->is_on = 1;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
549
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
550 //sets demux filters and restart the stream
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
551 for(i = 0; i < channel->pids_cnt; i++)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
552 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
553 if(! dvb_set_ts_filt(priv->demux_fds[i], channel->pids[i], DMX_PES_OTHER))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
554 return 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
555 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
556
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
557 return 1;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
558 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
559
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
560
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
561
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
562 int dvb_step_channel(dvb_priv_t *priv, int dir)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
563 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
564 int new_current;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
565 dvb_channels_list *list;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
566
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
567 mp_msg(MSGT_DEMUX, MSGL_V, "DVB_STEP_CHANNEL dir %d\n", dir);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
568
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
569 if(priv == NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
570 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
571 mp_msg(MSGT_DEMUX, MSGL_ERR, "dvb_step_channel: NULL priv_ptr, quit\n");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
572 return 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
573 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
574
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
575 list = priv->list;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
576 if(list == NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
577 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
578 mp_msg(MSGT_DEMUX, MSGL_ERR, "dvb_step_channel: NULL list_ptr, quit\n");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
579 return 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
580 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
581
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
582 new_current = (list->NUM_CHANNELS + list->current + (dir == DVB_CHANNEL_HIGHER ? 1 : -1)) % list->NUM_CHANNELS;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
583
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
584 return dvb_set_channel(priv, priv->card, new_current);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
585 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
586
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
587
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
588
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
589
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
590 extern char *get_path(const char *);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
591
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
592 static void dvbin_close(stream_t *stream)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
593 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
594 int i;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
595 dvb_priv_t *priv = (dvb_priv_t *) stream->priv;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
596
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
597 for(i = priv->demux_fds_cnt-1; i >= 0; i--)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
598 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
599 priv->demux_fds_cnt--;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
600 mp_msg(MSGT_DEMUX, MSGL_V, "DVBIN_CLOSE, close(%d), fd=%d, COUNT=%d\n", i, priv->demux_fds[i], priv->demux_fds_cnt);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
601 close(priv->demux_fds[i]);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
602 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
603 close(priv->dvr_fd);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
604
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
605 close(priv->fe_fd);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
606 #ifdef HAVE_DVB
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
607 close(priv->sec_fd);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
608 #endif
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
609
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
610 priv->is_on = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
611 dvb_config->priv = NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
612 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
613
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
614
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
615 static int dvb_streaming_start(dvb_priv_t *priv, struct stream_priv_s *opts, int tuner_type, char *progname)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
616 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
617 int i;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
618 dvb_channel_t *channel = NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
619 stream_t *stream = (stream_t*) priv->stream;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
620
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
621 mp_msg(MSGT_DEMUX, MSGL_V, "\r\ndvb_streaming_start(PROG: %s, CARD: %d, VID: %d, AID: %d, TYPE: %s, FILE: %s)\r\n",
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
622 opts->prog, opts->card, opts->vid, opts->aid, opts->type, opts->file);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
623
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
624 priv->is_on = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
625
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
626 i = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
627 while((channel == NULL) && i < priv->list->NUM_CHANNELS)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
628 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
629 if(! strcmp(priv->list->channels[i].name, progname))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
630 channel = &(priv->list->channels[i]);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
631
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
632 i++;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
633 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
634
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
635 if(channel != NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
636 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
637 priv->list->current = i-1;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
638 mp_msg(MSGT_DEMUX, MSGL_V, "PROGRAM NUMBER %d: name=%s, freq=%u\n", i-1, channel->name, channel->freq);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
639 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
640 else
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
641 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
642 mp_msg(MSGT_DEMUX, MSGL_ERR, "\n\nDVBIN: no such channel \"%s\"\n\n", progname);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
643 return 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
644 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
645
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
646
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
647 if(!dvb_set_channel(priv, priv->card, priv->list->current))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
648 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
649 mp_msg(MSGT_DEMUX, MSGL_ERR, "ERROR, COULDN'T SET CHANNEL %i: ", priv->list->current);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
650 dvbin_close(stream);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
651 return 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
652 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
653
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
654 mp_msg(MSGT_DEMUX, MSGL_V, "SUCCESSFUL EXIT from dvb_streaming_start\n");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
655
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
656 return 1;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
657 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
658
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
659
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
660
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
661
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
662 static int dvb_open(stream_t *stream, int mode, void *opts, int *file_format)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
663 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
664 // I don't force the file format bacause, although it's almost always TS,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
665 // there are some providers that stream an IP multicast with M$ Mpeg4 inside
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
666 struct stream_priv_s* p = (struct stream_priv_s*)opts;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
667 dvb_priv_t *priv;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
668 char *progname;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
669 int tuner_type = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
670
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
671
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
672 if(mode != STREAM_READ)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
673 return STREAM_UNSUPORTED;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
674
20660
89b78ea6bc70 use calloc() instead of malloc()
nicodvb
parents: 20659
diff changeset
675 stream->priv = (dvb_priv_t*) calloc(1, sizeof(dvb_priv_t));
19296
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
676 if(stream->priv == NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
677 return STREAM_ERROR;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
678
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
679 priv = (dvb_priv_t *)stream->priv;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
680 priv->stream = stream;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
681 dvb_config = dvb_get_config();
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
682 if(dvb_config == NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
683 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
684 free(priv);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
685 mp_msg(MSGT_DEMUX, MSGL_ERR, "DVB CONFIGURATION IS EMPTY, exit\n");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
686 return STREAM_ERROR;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
687 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
688 dvb_config->priv = priv;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
689 priv->config = dvb_config;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
690
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
691 if(p->card < 1 || p->card > priv->config->count)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
692 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
693 free(priv);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
694 mp_msg(MSGT_DEMUX, MSGL_ERR, "NO CONFIGURATION FOUND FOR CARD N. %d, exit\n", p->card);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
695 return STREAM_ERROR;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
696 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
697 priv->card = p->card - 1;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
698 priv->timeout = p->timeout;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
699
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
700 tuner_type = priv->config->cards[priv->card].type;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
701
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
702 if(tuner_type == 0)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
703 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
704 free(priv);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
705 mp_msg(MSGT_DEMUX, MSGL_V, "OPEN_DVB: UNKNOWN OR UNDETECTABLE TUNER TYPE, EXIT\n");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
706 return STREAM_ERROR;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
707 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
708
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
709
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
710 priv->tuner_type = tuner_type;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
711
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
712 mp_msg(MSGT_DEMUX, MSGL_V, "OPEN_DVB: prog=%s, card=%d, type=%d, vid=%d, aid=%d\n",
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
713 p->prog, priv->card+1, priv->tuner_type, p->vid, p->aid);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
714
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
715 priv->list = priv->config->cards[priv->card].list;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
716
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
717 if((! strcmp(p->prog, "")) && (priv->list != NULL))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
718 progname = priv->list->channels[0].name;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
719 else
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
720 progname = p->prog;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
721
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
722
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
723 if(! dvb_streaming_start(priv, p, tuner_type, progname))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
724 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
725 free(stream->priv);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
726 stream->priv = NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
727 return STREAM_ERROR;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
728 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
729
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
730 stream->type = STREAMTYPE_DVB;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
731 stream->fill_buffer = dvb_streaming_read;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
732 stream->close = dvbin_close;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
733 m_struct_free(&stream_opts, opts);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
734
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
735 *file_format = DEMUXER_TYPE_MPEG_TS;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
736
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
737 return STREAM_OK;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
738 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
739
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
740 #define MAX_CARDS 4
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
741 dvb_config_t *dvb_get_config(void)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
742 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
743 int i, fd, type, size;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
744 char filename[30], *conf_file, *name;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
745 dvb_channels_list *list;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
746 dvb_card_config_t *cards = NULL, *tmp;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
747 dvb_config_t *conf = NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
748
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
749 if(dvb_config != NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
750 return dvb_config;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
751
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
752 conf = (dvb_config_t*) malloc(sizeof(dvb_config_t));
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
753 if(conf == NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
754 return NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
755
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
756 conf->priv = NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
757 conf->count = 0;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
758 conf->cards = NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
759 for(i=0; i<MAX_CARDS; i++)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
760 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
761 sprintf(filename, "/dev/dvb/adapter%d/frontend0", i);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
762 fd = open(filename, O_RDWR | O_NONBLOCK);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
763 if(fd < 0)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
764 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
765 mp_msg(MSGT_DEMUX, MSGL_V, "DVB_CONFIG, can't open device %s, skipping\n", filename);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
766 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
767 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
768
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
769 type = dvb_get_tuner_type(fd);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
770 close(fd);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
771 if(type != TUNER_SAT && type != TUNER_TER && type != TUNER_CBL && type != TUNER_ATSC)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
772 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
773 mp_msg(MSGT_DEMUX, MSGL_V, "DVB_CONFIG, can't detect tuner type of card %d, skipping\n", i);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
774 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
775 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
776
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
777 switch(type)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
778 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
779 case TUNER_TER:
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
780 conf_file = get_path("channels.conf.ter");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
781 break;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
782 case TUNER_CBL:
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
783 conf_file = get_path("channels.conf.cbl");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
784 break;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
785 case TUNER_SAT:
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
786 conf_file = get_path("channels.conf.sat");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
787 break;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
788 case TUNER_ATSC:
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
789 conf_file = get_path("channels.conf.atsc");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
790 break;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
791 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
792
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
793 if((access(conf_file, F_OK | R_OK) != 0))
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
794 conf_file = get_path("channels.conf");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
795
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
796 list = dvb_get_channels(conf_file, type);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
797 if(list == NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
798 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
799
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
800 size = sizeof(dvb_card_config_t) * (conf->count + 1);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
801 tmp = realloc(conf->cards, size);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
802
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
803 if(tmp == NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
804 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
805 fprintf(stderr, "DVB_CONFIG, can't realloc %d bytes, skipping\n", size);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
806 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
807 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
808 cards = tmp;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
809
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
810 name = (char*) malloc(20);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
811 if(name==NULL)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
812 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
813 fprintf(stderr, "DVB_CONFIG, can't realloc 20 bytes, skipping\n");
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
814 continue;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
815 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
816
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
817 conf->cards = cards;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
818 conf->cards[conf->count].devno = i;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
819 conf->cards[conf->count].list = list;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
820 conf->cards[conf->count].type = type;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
821 sprintf(name, "DVB-%c card n. %d", type==TUNER_TER ? 'T' : (type==TUNER_CBL ? 'C' : 'S'), conf->count+1);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
822 conf->cards[conf->count].name = name;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
823 conf->count++;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
824 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
825
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
826 if(conf->count == 0)
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
827 {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
828 free(conf);
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
829 conf = NULL;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
830 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
831
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
832 dvb_config = conf;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
833 return conf;
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
834 }
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
835
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
836
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
837
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
838 stream_info_t stream_info_dvb = {
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
839 "Dvb Input",
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
840 "dvbin",
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
841 "Nico",
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
842 "based on the code from ??? (probably Arpi)",
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
843 dvb_open,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
844 { "dvb", NULL },
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
845 &stream_opts,
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
846 1 // Urls are an option string
3583e8ff4da4 renamed dvbin.c to stream_dvb.c for consistency
ben
parents:
diff changeset
847 };