2005-04-16 12:51:09 +00:00
|
|
|
/* Imported from the dvbstream project
|
|
|
|
*
|
2006-06-22 13:34:00 +00:00
|
|
|
* Modified for use with MPlayer, for details see the changelog at
|
|
|
|
* http://svn.mplayerhq.hu/mplayer/trunk/
|
2005-04-16 12:51:09 +00:00
|
|
|
* $Id$
|
|
|
|
*/
|
2003-03-16 20:13:28 +00:00
|
|
|
|
2008-02-22 09:09:46 +00:00
|
|
|
#ifndef MPLAYER_DVBIN_H
|
|
|
|
#define MPLAYER_DVBIN_H
|
2003-03-16 20:13:28 +00:00
|
|
|
|
2010-01-04 18:58:35 +00:00
|
|
|
#include "config.h"
|
2003-08-11 00:02:46 +00:00
|
|
|
#include "stream.h"
|
|
|
|
|
2006-07-14 22:07:05 +00:00
|
|
|
#define SLOF (11700*1000UL)
|
|
|
|
#define LOF1 (9750*1000UL)
|
|
|
|
#define LOF2 (10600*1000UL)
|
|
|
|
|
2010-06-21 14:39:24 +00:00
|
|
|
#include <inttypes.h>
|
2010-03-02 19:57:17 +00:00
|
|
|
#include <linux/dvb/dmx.h>
|
|
|
|
#include <linux/dvb/frontend.h>
|
|
|
|
#include <linux/dvb/version.h>
|
2003-03-16 20:13:28 +00:00
|
|
|
|
2005-01-06 09:43:10 +00:00
|
|
|
#undef DVB_ATSC
|
|
|
|
#if defined(DVB_API_VERSION_MINOR)
|
2009-02-22 14:12:33 +00:00
|
|
|
|
|
|
|
/* kernel headers >=2.6.28 have version 5.
|
|
|
|
*
|
|
|
|
* FIXME: are there any real differences between 3.1 and 5?
|
|
|
|
*/
|
|
|
|
|
|
|
|
#if (DVB_API_VERSION == 3 && DVB_API_VERSION_MINOR >= 1) || DVB_API_VERSION == 5
|
2005-01-06 09:43:10 +00:00
|
|
|
#define DVB_ATSC 1
|
|
|
|
#endif
|
2009-02-22 14:12:33 +00:00
|
|
|
|
2005-01-06 09:43:10 +00:00
|
|
|
#endif
|
2003-03-16 20:13:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
#define DVB_CHANNEL_LOWER -1
|
|
|
|
#define DVB_CHANNEL_HIGHER 1
|
|
|
|
|
2004-07-12 20:52:02 +00:00
|
|
|
#ifndef DMX_FILTER_SIZE
|
|
|
|
#define DMX_FILTER_SIZE 16
|
|
|
|
#endif
|
2003-03-16 20:13:28 +00:00
|
|
|
|
|
|
|
typedef struct {
|
2014-04-13 16:00:51 +00:00
|
|
|
char *name;
|
|
|
|
int freq, srate, diseqc, tone;
|
|
|
|
char pol;
|
|
|
|
int tpid, dpid1, dpid2, progid, ca, pids[DMX_FILTER_SIZE], pids_cnt;
|
|
|
|
fe_spectral_inversion_t inv;
|
|
|
|
fe_modulation_t mod;
|
|
|
|
fe_transmit_mode_t trans;
|
|
|
|
fe_bandwidth_t bw;
|
|
|
|
fe_guard_interval_t gi;
|
|
|
|
fe_code_rate_t cr, cr_lp;
|
|
|
|
fe_hierarchy_t hier;
|
2003-03-16 20:13:28 +00:00
|
|
|
} dvb_channel_t;
|
|
|
|
|
|
|
|
typedef struct {
|
2014-04-13 16:00:51 +00:00
|
|
|
uint16_t NUM_CHANNELS;
|
|
|
|
uint16_t current;
|
|
|
|
dvb_channel_t *channels;
|
2003-03-16 20:13:28 +00:00
|
|
|
} dvb_channels_list;
|
|
|
|
|
2004-04-26 21:22:33 +00:00
|
|
|
typedef struct {
|
2014-04-13 16:00:51 +00:00
|
|
|
int type;
|
|
|
|
dvb_channels_list *list;
|
|
|
|
char *name;
|
|
|
|
int devno;
|
2004-04-26 21:22:33 +00:00
|
|
|
} dvb_card_config_t;
|
|
|
|
|
|
|
|
typedef struct {
|
2014-04-13 16:00:51 +00:00
|
|
|
int count;
|
|
|
|
dvb_card_config_t *cards;
|
|
|
|
void *priv;
|
2004-04-26 21:22:33 +00:00
|
|
|
} dvb_config_t;
|
2003-03-16 20:13:28 +00:00
|
|
|
|
|
|
|
typedef struct {
|
2013-12-21 19:36:45 +00:00
|
|
|
struct mp_log *log;
|
stream: remove fd member
Stream implementations could set this to a unix file descriptor. The
generic stream code could use it as fallback for a few things. This
was confusing and insane. In most cases, the stream implementations
defined all callbacks, so setting the fd member didn't have any
advantages, other than avoiding defining a private struct to store it.
It appears that even if the stream implementation used close() on the
fd (or something equivalent), stream.c would close() it a second time
(and on windows, even would call closesocket()), which should be proof
for the insanity of this code.
For stream_file.c, additionally make sure we don't close stdin or
stdout if "-" is used as filename.
For stream_vcd.c, remove the control() code. This code most likely
didn't make the slightest sense, because it used a different type
for stream->priv. It also leaked memory. Maybe it worked, but it's
incorrect and insignificant anyway, so kill it. This code was added
with commit 9521c19 (svn commit 31019).
Untested for all protocols other than stream_file.c.
2013-07-12 20:07:07 +00:00
|
|
|
int fd;
|
2014-04-13 16:00:51 +00:00
|
|
|
int card;
|
|
|
|
int fe_fd;
|
|
|
|
int sec_fd;
|
|
|
|
int demux_fd[3], demux_fds[DMX_FILTER_SIZE], demux_fds_cnt;
|
|
|
|
int dvr_fd;
|
|
|
|
|
|
|
|
dvb_config_t *config;
|
|
|
|
dvb_channels_list *list;
|
|
|
|
int tuner_type;
|
|
|
|
int is_on;
|
|
|
|
int retry;
|
|
|
|
int timeout;
|
|
|
|
int last_freq;
|
2013-08-02 15:02:34 +00:00
|
|
|
|
|
|
|
char *cfg_prog;
|
|
|
|
int cfg_card;
|
|
|
|
int cfg_timeout;
|
2003-03-16 20:13:28 +00:00
|
|
|
} dvb_priv_t;
|
|
|
|
|
|
|
|
|
2014-04-13 16:00:51 +00:00
|
|
|
#define TUNER_SAT 1
|
|
|
|
#define TUNER_TER 2
|
|
|
|
#define TUNER_CBL 3
|
|
|
|
#define TUNER_ATSC 4
|
2003-03-16 20:13:28 +00:00
|
|
|
|
2008-12-03 23:01:03 +00:00
|
|
|
int dvb_step_channel(stream_t *, int);
|
|
|
|
int dvb_set_channel(stream_t *, int, int);
|
2013-12-21 19:36:45 +00:00
|
|
|
dvb_config_t *dvb_get_config(stream_t *);
|
2008-12-03 23:01:03 +00:00
|
|
|
void dvb_free_config(dvb_config_t *config);
|
2003-03-16 20:13:28 +00:00
|
|
|
|
2008-02-22 09:09:46 +00:00
|
|
|
#endif /* MPLAYER_DVBIN_H */
|