annotate libmpdemux/dvbin.c @ 16429:84174804804b

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