Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
7258307b
Commit
7258307b
authored
Jul 26, 2005
by
Christophe Massiot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* Removed the satellite access module since it won't compile anyway.
Use --enable-dvb instead.
parent
fe24de0f
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
0 additions
and
950 deletions
+0
-950
configure.ac
configure.ac
+0
-13
modules/access/satellite/Modules.am
modules/access/satellite/Modules.am
+0
-7
modules/access/satellite/access.c
modules/access/satellite/access.c
+0
-534
modules/access/satellite/dvb.c
modules/access/satellite/dvb.c
+0
-261
modules/access/satellite/dvb.h
modules/access/satellite/dvb.h
+0
-40
modules/access/satellite/satellite.c
modules/access/satellite/satellite.c
+0
-95
No files found.
configure.ac
View file @
7258307b
...
@@ -1773,18 +1773,6 @@ then
...
@@ -1773,18 +1773,6 @@ then
fi
fi
fi
fi
dnl
dnl Satellite input module
dnl
AC_ARG_ENABLE(satellite,
[ --enable-satellite satellite card support (default disabled)],
[ if test "${enable_satellite}" = "yes"
then
AC_DEFINE(HAVE_SATELLITE, [],
[Define for the satellite plugin])
VLC_ADD_PLUGINS([satellite])
fi])
dnl
dnl
dnl DVB-S/DVB-T/DVB-C satellite/teresterial/cable input using v4l2
dnl DVB-S/DVB-T/DVB-C satellite/teresterial/cable input using v4l2
dnl
dnl
...
@@ -4491,7 +4479,6 @@ AC_CONFIG_FILES([
...
@@ -4491,7 +4479,6 @@ AC_CONFIG_FILES([
modules/access/dvb/Makefile
modules/access/dvb/Makefile
modules/access/mms/Makefile
modules/access/mms/Makefile
modules/access/pvr/Makefile
modules/access/pvr/Makefile
modules/access/satellite/Makefile
modules/access/v4l/Makefile
modules/access/v4l/Makefile
modules/access/cdda/Makefile
modules/access/cdda/Makefile
modules/access/vcd/Makefile
modules/access/vcd/Makefile
...
...
modules/access/satellite/Modules.am
deleted
100644 → 0
View file @
fe24de0f
SOURCES_satellite = \
satellite.c \
access.c \
dvb.c \
dvb.h \
$(NULL)
modules/access/satellite/access.c
deleted
100644 → 0
View file @
fe24de0f
/*****************************************************************************
* access.c: Satellite card input
*****************************************************************************
* Copyright (C) 1998-2003 the VideoLAN team
*
* Authors: Johan Bilien <jobi@via.ecp.fr>
* Christophe Massiot <massiot@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <vlc/vlc.h>
#include <vlc/input.h>
#include "../../demux/mpeg/system.h"
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <fcntl.h>
#include <sys/types.h>
#include <string.h>
#include <errno.h>
#ifdef STRNCASECMP_IN_STRINGS_H
# include <strings.h>
#endif
#include "dvb.h"
/* These are for the Dreambox port. I have no idea whether they're correct
* for other DVB adapters. --Meuuh */
#define SATELLITE_READ_ONCE (64 * 1024)
#define DMX_BUFFER_SIZE (1024 * 1024)
/*****************************************************************************
* Local prototypes
*****************************************************************************/
static
ssize_t
SatelliteRead
(
input_thread_t
*
p_input
,
byte_t
*
p_buffer
,
size_t
i_len
);
static
int
SatelliteSetArea
(
input_thread_t
*
,
input_area_t
*
);
static
int
SatelliteSetProgram
(
input_thread_t
*
,
pgrm_descriptor_t
*
);
static
void
SatelliteSeek
(
input_thread_t
*
,
off_t
);
typedef
struct
demux_handle_t
{
int
i_pid
;
int
i_handle
;
int
i_type
;
}
demux_handle_t
;
#define PAT_TYPE 1
#define PMT_TYPE 2
#define ES_TYPE 3
#define MAX_DEMUX 8
typedef
struct
thread_sat_data_t
{
int
i_handle
;
demux_handle_t
p_demux_handles
[
MAX_DEMUX
];
}
thread_sat_data_t
;
static
void
AllocateDemux
(
input_thread_t
*
p_input
,
int
i_pid
,
int
i_type
)
{
thread_sat_data_t
*
p_satellite
=
(
thread_sat_data_t
*
)
p_input
->
p_access_data
;
int
i_demux
;
int
i
;
i_demux
=
config_GetInt
(
p_input
,
"dvb-dmx"
);
/* Find first free slot */
for
(
i
=
0
;
i
<
MAX_DEMUX
;
i
++
)
{
if
(
!
p_satellite
->
p_demux_handles
[
i
].
i_type
)
{
if
(
ioctl_SetDMXFilter
(
i_demux
,
i_pid
,
&
p_satellite
->
p_demux_handles
[
i
].
i_handle
,
3
)
<
0
)
{
msg_Warn
(
p_input
,
"ioctl_SetDMXFilter failed (%d)"
,
i_pid
);
break
;
}
p_satellite
->
p_demux_handles
[
i
].
i_type
=
i_type
;
p_satellite
->
p_demux_handles
[
i
].
i_pid
=
i_pid
;
break
;
}
}
}
static
void
CloseProgram
(
input_thread_t
*
p_input
)
{
thread_sat_data_t
*
p_satellite
=
(
thread_sat_data_t
*
)
p_input
->
p_access_data
;
int
i
;
for
(
i
=
1
;
i
<
MAX_DEMUX
;
i
++
)
{
if
(
p_satellite
->
p_demux_handles
[
i
].
i_type
)
{
ioctl_UnsetDMXFilter
(
p_satellite
->
p_demux_handles
[
i
].
i_handle
);
p_satellite
->
p_demux_handles
[
i
].
i_type
=
0
;
}
}
}
/*****************************************************************************
* Open: open the dvr device
*****************************************************************************/
int
E_
(
Open
)
(
vlc_object_t
*
p_this
)
{
input_thread_t
*
p_input
=
(
input_thread_t
*
)
p_this
;
thread_sat_data_t
*
p_satellite
;
char
*
psz_parser
;
char
*
psz_next
;
int
i_freq
=
0
;
int
i_srate
=
0
;
vlc_bool_t
b_pol
=
0
;
int
i_fec
=
0
;
float
f_fec
=
1
.
/
2
;
vlc_bool_t
b_diseqc
;
int
i_lnb_lof1
;
int
i_lnb_lof2
;
int
i_lnb_slof
;
int
i_demux
;
char
psz_dvr
[
255
];
i_demux
=
config_GetInt
(
p_input
,
"dvb-dmx"
);
snprintf
(
psz_dvr
,
sizeof
(
psz_dvr
),
DVR
"%d"
,
i_demux
);
/* parse the options passed in command line : */
psz_parser
=
strdup
(
p_input
->
psz_name
);
if
(
!
psz_parser
)
{
return
(
-
1
);
}
p_input
->
pf_read
=
SatelliteRead
;
p_input
->
pf_set_program
=
SatelliteSetProgram
;
p_input
->
pf_set_area
=
SatelliteSetArea
;
p_input
->
pf_seek
=
SatelliteSeek
;
i_freq
=
(
int
)
strtol
(
psz_parser
,
&
psz_next
,
10
);
if
(
*
psz_next
)
{
psz_parser
=
psz_next
+
1
;
b_pol
=
(
vlc_bool_t
)
strtol
(
psz_parser
,
&
psz_next
,
10
);
if
(
*
psz_next
)
{
psz_parser
=
psz_next
+
1
;
i_fec
=
(
int
)
strtol
(
psz_parser
,
&
psz_next
,
10
);
if
(
*
psz_next
)
{
psz_parser
=
psz_next
+
1
;
i_srate
=
(
int
)
strtol
(
psz_parser
,
&
psz_next
,
10
);
}
}
}
if
(
i_freq
>
(
12999
*
1000
)
||
i_freq
<
(
10000
*
1000
)
)
{
msg_Warn
(
p_input
,
"invalid frequency, using default one"
);
i_freq
=
config_GetInt
(
p_input
,
"frequency"
);
if
(
i_freq
&&
(
i_freq
>
(
12999
*
1000
)
||
i_freq
<
(
10000
*
1000
))
)
{
msg_Err
(
p_input
,
"invalid default frequency"
);
return
-
1
;
}
}
if
(
i_freq
&&
(
i_srate
>
(
30000
*
1000
)
||
i_srate
<
(
1000
*
1000
))
)
{
msg_Warn
(
p_input
,
"invalid symbol rate, using default one"
);
i_srate
=
config_GetInt
(
p_input
,
"symbol-rate"
);
if
(
i_srate
>
(
30000
*
1000
)
||
i_srate
<
(
1000
*
1000
)
)
{
msg_Err
(
p_input
,
"invalid default symbol rate"
);
return
-
1
;
}
}
if
(
i_freq
&&
b_pol
&&
b_pol
!=
1
)
{
msg_Warn
(
p_input
,
"invalid polarization, using default one"
);
b_pol
=
config_GetInt
(
p_input
,
"polarization"
);
if
(
b_pol
&&
b_pol
!=
1
)
{
msg_Err
(
p_input
,
"invalid default polarization"
);
return
-
1
;
}
}
if
(
i_freq
&&
(
i_fec
>
7
||
i_fec
<
1
)
)
{
msg_Warn
(
p_input
,
"invalid FEC, using default one"
);
i_fec
=
config_GetInt
(
p_input
,
"fec"
);
if
(
i_fec
>
7
||
i_fec
<
1
)
{
msg_Err
(
p_input
,
"invalid default FEC"
);
return
-
1
;
}
}
if
(
i_freq
)
{
switch
(
i_fec
)
{
case
1
:
f_fec
=
1
.
/
2
;
break
;
case
2
:
f_fec
=
2
.
/
3
;
break
;
case
3
:
f_fec
=
3
.
/
4
;
break
;
case
4
:
f_fec
=
4
.
/
5
;
break
;
case
5
:
f_fec
=
5
.
/
6
;
break
;
case
6
:
f_fec
=
6
.
/
7
;
break
;
case
7
:
f_fec
=
7
.
/
8
;
break
;
default:
/* cannot happen */
break
;
}
}
/* Initialise structure */
p_satellite
=
malloc
(
sizeof
(
thread_sat_data_t
)
);
if
(
p_satellite
==
NULL
)
{
msg_Err
(
p_input
,
"out of memory"
);
return
-
1
;
}
memset
(
p_satellite
,
0
,
sizeof
(
thread_sat_data_t
)
);
p_input
->
p_access_data
=
(
void
*
)
p_satellite
;
/* Open the DVR device */
msg_Dbg
(
p_input
,
"opening DVR device `%s'"
,
psz_dvr
);
if
(
(
p_satellite
->
i_handle
=
open
(
psz_dvr
,
/*O_NONBLOCK | O_LARGEFILE*/
0
))
==
(
-
1
)
)
{
msg_Warn
(
p_input
,
"cannot open `%s' (%s)"
,
psz_dvr
,
strerror
(
errno
)
);
free
(
p_satellite
);
return
-
1
;
}
/* FIXME : this is from the Dreambox port. I have no idea whether it
* hurts or helps other DVB interfaces, so I just leave it here.
* Feel free to remove it if it breaks. --Meuuh */
ioctl_SetBufferSize
(
p_satellite
->
i_handle
,
DMX_BUFFER_SIZE
);
/* Get antenna configuration options */
b_diseqc
=
config_GetInt
(
p_input
,
"diseqc"
);
i_lnb_lof1
=
config_GetInt
(
p_input
,
"lnb-lof1"
);
i_lnb_lof2
=
config_GetInt
(
p_input
,
"lnb-lof2"
);
i_lnb_slof
=
config_GetInt
(
p_input
,
"lnb-slof"
);
/* Initialize the Satellite Card */
if
(
i_freq
)
{
int
i_tuner
=
config_GetInt
(
p_input
,
"dvb-tuner"
);
msg_Dbg
(
p_input
,
"initializing Sat Card with Freq: %d, Pol: %d, "
"FEC: %03f, Srate: %d"
,
i_freq
,
b_pol
,
f_fec
,
i_srate
);
if
(
ioctl_SECControl
(
i_tuner
,
i_freq
,
b_pol
,
i_lnb_slof
,
b_diseqc
)
<
0
)
{
msg_Err
(
p_input
,
"an error occurred when controling SEC"
);
close
(
p_satellite
->
i_handle
);
free
(
p_satellite
);
return
-
1
;
}
msg_Dbg
(
p_input
,
"initializing frontend device"
);
switch
(
ioctl_SetQPSKFrontend
(
i_tuner
,
i_freq
,
i_srate
,
f_fec
,
i_lnb_lof1
,
i_lnb_lof2
,
i_lnb_slof
))
{
case
-
2
:
msg_Err
(
p_input
,
"frontend returned an unexpected event"
);
close
(
p_satellite
->
i_handle
);
free
(
p_satellite
);
return
-
1
;
break
;
case
-
3
:
msg_Err
(
p_input
,
"frontend returned no event"
);
close
(
p_satellite
->
i_handle
);
free
(
p_satellite
);
return
-
1
;
break
;
case
-
4
:
msg_Err
(
p_input
,
"frontend: timeout when polling for event"
);
close
(
p_satellite
->
i_handle
);
free
(
p_satellite
);
return
-
1
;
break
;
case
-
5
:
msg_Err
(
p_input
,
"an error occured when polling frontend device"
);
close
(
p_satellite
->
i_handle
);
free
(
p_satellite
);
return
-
1
;
break
;
case
-
1
:
msg_Err
(
p_input
,
"frontend returned a failure event"
);
close
(
p_satellite
->
i_handle
);
free
(
p_satellite
);
return
-
1
;
break
;
default:
break
;
}
}
/* i_freq */
msg_Dbg
(
p_input
,
"setting filter on PAT"
);
AllocateDemux
(
p_input
,
0
,
PAT_TYPE
);
if
(
input_InitStream
(
p_input
,
sizeof
(
stream_ts_data_t
)
)
==
-
1
)
{
msg_Err
(
p_input
,
"could not initialize stream structure"
);
close
(
p_satellite
->
i_handle
);
free
(
p_satellite
);
return
(
-
1
);
}
vlc_mutex_lock
(
&
p_input
->
stream
.
stream_lock
);
p_input
->
stream
.
b_pace_control
=
1
;
p_input
->
stream
.
b_seekable
=
0
;
p_input
->
stream
.
p_selected_area
->
i_tell
=
0
;
vlc_mutex_unlock
(
&
p_input
->
stream
.
stream_lock
);
p_input
->
i_mtu
=
SATELLITE_READ_ONCE
;
p_input
->
stream
.
i_method
=
INPUT_METHOD_SATELLITE
;
return
0
;
}
/*****************************************************************************
* Close : Close the device
*****************************************************************************/
void
E_
(
Close
)
(
vlc_object_t
*
p_this
)
{
input_thread_t
*
p_input
=
(
input_thread_t
*
)
p_this
;
thread_sat_data_t
*
p_satellite
=
(
thread_sat_data_t
*
)
p_input
->
p_access_data
;
msg_Dbg
(
p_input
,
"unsetting filters on all pids"
);
CloseProgram
(
p_input
);
close
(
p_satellite
->
p_demux_handles
[
0
].
i_handle
);
close
(
p_satellite
->
i_handle
);
}
/*****************************************************************************
* SatelliteRead: reads data from the satellite card
*****************************************************************************/
static
ssize_t
SatelliteRead
(
input_thread_t
*
p_input
,
byte_t
*
p_buffer
,
size_t
i_len
)
{
thread_sat_data_t
*
p_satellite
=
(
thread_sat_data_t
*
)
p_input
->
p_access_data
;
ssize_t
i_ret
;
unsigned
int
i
;
/* if not set, set filters to the PMTs */
/* This is kludgy and consumes way too much CPU power - the access
* module should have a callback from the demux when a new program
* is encountered. --Meuuh */
if
(
!
p_satellite
->
p_demux_handles
[
1
].
i_type
)
{
int
i_program
=
config_GetInt
(
p_input
,
"program"
);
for
(
i
=
0
;
i
<
p_input
->
stream
.
i_pgrm_number
;
i
++
)
{
/* Only set a filter on the selected program : some boards
* (read: Dreambox) only have 8 filters, so you don't want to
* spend them on unwanted PMTs. --Meuuh */
if
(
(
!
i_program
||
p_input
->
stream
.
pp_programs
[
i
]
->
i_number
==
i_program
)
)
{
msg_Dbg
(
p_input
,
"setting filter on PMT pid %d"
,
p_input
->
stream
.
pp_programs
[
i
]
->
pp_es
[
0
]
->
i_id
);
AllocateDemux
(
p_input
,
p_input
->
stream
.
pp_programs
[
i
]
->
pp_es
[
0
]
->
i_id
,
PMT_TYPE
);
}
}
}
i_ret
=
read
(
p_satellite
->
i_handle
,
p_buffer
,
i_len
);
if
(
i_ret
<
0
)
{
# ifdef HAVE_ERRNO_H
msg_Err
(
p_input
,
"read failed (%s)"
,
strerror
(
errno
)
);
# else
msg_Err
(
p_input
,
"read failed"
);
# endif
}
return
i_ret
;
}
/*****************************************************************************
* SatelliteSetArea : Does nothing
*****************************************************************************/
static
int
SatelliteSetArea
(
input_thread_t
*
p_input
,
input_area_t
*
p_area
)
{
return
-
1
;
}
/*****************************************************************************
* SatelliteSetProgram : Sets the card filters according to the
* selected program,
* and makes the appropriate changes to stream structure.
*****************************************************************************/
int
SatelliteSetProgram
(
input_thread_t
*
p_input
,
pgrm_descriptor_t
*
p_new_prg
)
{
unsigned
int
i_es_index
;
vlc_value_t
val
;
if
(
p_input
->
stream
.
p_selected_program
)
{
for
(
i_es_index
=
0
;
/* 0 should be the PMT */
i_es_index
<
p_input
->
stream
.
p_selected_program
->
i_es_number
;
i_es_index
++
)
{
#define p_es p_input->stream.p_selected_program->pp_es[i_es_index]
if
(
p_es
->
p_dec
)
{
input_UnselectES
(
p_input
,
p_es
);
}
#undef p_es
}
}
msg_Dbg
(
p_input
,
"unsetting filters on all pids"
);
CloseProgram
(
p_input
);
msg_Dbg
(
p_input
,
"setting filter on PMT pid %d"
,
p_new_prg
->
pp_es
[
0
]
->
i_id
);
AllocateDemux
(
p_input
,
p_new_prg
->
pp_es
[
0
]
->
i_id
,
PMT_TYPE
);
for
(
i_es_index
=
1
;
i_es_index
<
p_new_prg
->
i_es_number
;
i_es_index
++
)
{
#define p_es p_new_prg->pp_es[i_es_index]
switch
(
p_es
->
i_cat
)
{
case
VIDEO_ES
:
msg_Dbg
(
p_input
,
"setting filter on video ES 0x%x"
,
p_es
->
i_id
);
/* Always set the filter. This may seem a little odd, but
* it allows you to stream the video with demuxstream
* without having a decoder or a stream output behind.
* The result is you'll sometimes filter a PID which you
* don't really want, but in the most common cases it
* should be OK. --Meuuh */
AllocateDemux
(
p_input
,
p_es
->
i_id
,
ES_TYPE
);
input_SelectES
(
p_input
,
p_es
);
break
;
case
AUDIO_ES
:
msg_Dbg
(
p_input
,
"setting filter on audio ES 0x%x"
,
p_es
->
i_id
);
AllocateDemux
(
p_input
,
p_es
->
i_id
,
ES_TYPE
);
input_SelectES
(
p_input
,
p_es
);
break
;
default:
/* Do not select private streams. This is to avoid the
* limit of 8 filters on the Dreambox and possibly on
* other boards. We should probably change that to
* have the DVB subtitles, but filtering all private
* streams including DVB tables and padding seems
* nonsense to me. --Meuuh */
#if 0
msg_Dbg(p_input, "setting filter on misc (0x%x) ES 0x%x",
p_es->i_cat,
p_es->i_id);
AllocateDemux( p_input, p_es->i_id, ES_TYPE );
input_SelectES( p_input , p_es );
#endif
break
;
#undef p_es
}
}
p_input
->
stream
.
p_selected_program
=
p_new_prg
;
/* Update the navigation variables without triggering a callback */
val
.
i_int
=
p_new_prg
->
i_number
;
var_Change
(
p_input
,
"program"
,
VLC_VAR_SETVALUE
,
&
val
,
NULL
);
return
0
;
}
/*****************************************************************************
* SatelliteSeek: does nothing (not a seekable stream
*****************************************************************************/
static
void
SatelliteSeek
(
input_thread_t
*
p_input
,
off_t
i_off
)
{
;
}
modules/access/satellite/dvb.c
deleted
100644 → 0
View file @
fe24de0f
/*****************************************************************************
* dvb.c : functions to control a DVB card under Linux
*****************************************************************************
* Copyright (C) 1998-2001 the VideoLAN team
*
* Authors: Damien Lucas <nitrox@via.ecp.fr>
* Johan Bilien <jobi@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include <vlc/vlc.h>
#include <sys/ioctl.h>
#include <stdio.h>
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
/* int16_t .. */
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/poll.h>
/* DVB Card Drivers */
#include <ost/sec.h>
#include <ost/dmx.h>
#include <ost/frontend.h>
#include "dvb.h"
/*****************************************************************************
* ioctl_SECControl : commands the SEC device
*****************************************************************************/
int
ioctl_SECControl
(
int
sec_nb
,
int
freq
,
int
pol
,
int
lnb_slof
,
int
diseqc
)
{
struct
secCommand
scmd
;
struct
secCmdSequence
scmds
;
int
sec
;
char
psz_sec
[
255
];
snprintf
(
psz_sec
,
sizeof
(
psz_sec
),
SEC
"%d"
,
sec_nb
);
if
((
sec
=
open
(
psz_sec
,
O_RDWR
))
<
0
)
{
return
-
1
;
}
/* Set the frequency of the transponder, taking into account the
local frequencies of the LNB */
scmds
.
continuousTone
=
(
freq
<
lnb_slof
)
?
SEC_TONE_OFF
:
SEC_TONE_ON
;
/* Set the polarity of the transponder by setting the correct
voltage on the universal LNB */
scmds
.
voltage
=
(
pol
)
?
SEC_VOLTAGE_18
:
SEC_VOLTAGE_13
;
/* In case we have a DiSEqC, set it to the correct address */
scmd
.
type
=
0
;
scmd
.
u
.
diseqc
.
addr
=
0x10
;
scmd
.
u
.
diseqc
.
cmd
=
0x38
;
scmd
.
u
.
diseqc
.
numParams
=
1
;
scmd
.
u
.
diseqc
.
params
[
0
]
=
0xF0
|
((
diseqc
*
4
)
&
0x0F
)
|
(
scmds
.
continuousTone
==
SEC_TONE_ON
?
1
:
0
)
|
(
scmds
.
voltage
==
SEC_VOLTAGE_18
?
2
:
0
);
scmds
.
miniCommand
=
SEC_MINI_NONE
;
scmds
.
numCommands
=
1
;
scmds
.
commands
=&
scmd
;
/* Send the data to the SEC device to prepare the LNB for tuning */
/*intf_Msg("Sec: Sending data\n");*/
if
(
ioctl
(
sec
,
SEC_SEND_SEQUENCE
,
&
scmds
)
<
0
)
{
return
-
1
;
}
close
(
sec
);
return
0
;
}
static
int
check_qpsk
(
int
);
/*****************************************************************************
* ioctl_SetQPSKFrontend : controls the FE device
*****************************************************************************/
int
ioctl_SetQPSKFrontend
(
int
fe_nb
,
int
freq
,
int
srate
,
int
fec
,
\
int
lnb_lof1
,
int
lnb_lof2
,
int
lnb_slof
)
{
FrontendParameters
fep
;
int
front
;
int
rc
;
char
psz_fe
[
255
];
snprintf
(
psz_fe
,
sizeof
(
psz_fe
),
FRONTEND
"%d"
,
fe_nb
);
/* Open the frontend device */
if
((
front
=
open
(
psz_fe
,
O_RDWR
))
<
0
)
{
return
-
1
;
}
/* Set the frequency of the transponder, taking into account the
local frequencies of the LNB */
fep
.
Frequency
=
(
freq
<
lnb_slof
)
?
freq
-
lnb_lof1
:
freq
-
lnb_lof2
;
/* Set symbol rate and FEC */
fep
.
u
.
qpsk
.
SymbolRate
=
srate
;
fep
.
u
.
qpsk
.
FEC_inner
=
FEC_AUTO
;
/* Now send it all to the frontend device */
if
(
ioctl
(
front
,
FE_SET_FRONTEND
,
&
fep
)
<
0
)
{
return
-
1
;
}
/* Check if it worked */
rc
=
check_qpsk
(
front
);
/* Close front end device */
close
(
front
);
return
rc
;
}
/******************************************************************
* Check completion of the frontend control sequence
******************************************************************/
static
int
check_qpsk
(
int
front
)
{
struct
pollfd
pfd
[
1
];
FrontendEvent
event
;
/* poll for QPSK event to check if tuning worked */
pfd
[
0
].
fd
=
front
;
pfd
[
0
].
events
=
POLLIN
;
if
(
poll
(
pfd
,
1
,
3000
))
{
if
(
pfd
[
0
].
revents
&
POLLIN
)
{
if
(
ioctl
(
front
,
FE_GET_EVENT
,
&
event
)
==
-
EBUFFEROVERFLOW
)
{
return
-
5
;
}
switch
(
event
.
type
)
{
case
FE_UNEXPECTED_EV
:
return
-
2
;
case
FE_FAILURE_EV
:
return
-
1
;
case
FE_COMPLETION_EV
:
break
;
}
}
else
{
/* should come here */
return
-
3
;
}
}
else
{
return
-
4
;
}
return
0
;
}
/*****************************************************************************
* ioctl_SetDMXAudioFilter : controls the demux to add a filter
*****************************************************************************/
int
ioctl_SetDMXFilter
(
int
dmx_nb
,
int
i_pid
,
int
*
pi_fd
,
int
i_type
)
{
struct
dmxPesFilterParams
s_filter_params
;
char
psz_dmx
[
255
];
snprintf
(
psz_dmx
,
sizeof
(
psz_dmx
),
DMX
"%d"
,
dmx_nb
);
/* We first open the device */
if
((
*
pi_fd
=
open
(
psz_dmx
,
O_RDWR
|
O_NONBLOCK
))
<
0
)
{
return
-
1
;
}
/* We fill the DEMUX structure : */
s_filter_params
.
pid
=
i_pid
;
s_filter_params
.
input
=
DMX_IN_FRONTEND
;
s_filter_params
.
output
=
DMX_OUT_TS_TAP
;
switch
(
i_type
)
{
/* AFAIK you shouldn't use DMX_PES_VIDEO and DMX_PES_AUDIO
* unless you want to use a hardware decoder. In all cases
* I know DMX_PES_OTHER is quite enough for what we want to
* do. In case you have problems, you can still try to
* reenable them here : --Meuuh */
#if 0
case 1:
s_filter_params.pesType = DMX_PES_VIDEO;
break;
case 2:
s_filter_params.pesType = DMX_PES_AUDIO;
break;
case 3:
#endif
default:
s_filter_params
.
pesType
=
DMX_PES_OTHER
;
break
;
}
s_filter_params
.
flags
=
DMX_IMMEDIATE_START
;
/* We then give the order to the device : */
if
(
ioctl
(
*
pi_fd
,
DMX_SET_PES_FILTER
,
&
s_filter_params
)
<
0
)
{
return
-
1
;
}
return
0
;
}
/*****************************************************************************
* ioctl_UnsetDMXFilter : removes a filter
*****************************************************************************/
int
ioctl_UnsetDMXFilter
(
int
demux
)
{
ioctl
(
demux
,
DMX_STOP
);
close
(
demux
);
return
0
;
}
/*****************************************************************************
* ioctl_SetBufferSize :
*****************************************************************************/
int
ioctl_SetBufferSize
(
int
handle
,
size_t
size
)
{
return
ioctl
(
handle
,
DMX_SET_BUFFER_SIZE
,
size
);
}
modules/access/satellite/dvb.h
deleted
100644 → 0
View file @
fe24de0f
/*****************************************************************************
* linux_dvb_tools.h : functions to control a DVB card under Linux
*****************************************************************************
* Copyright (C) 1998-2001 the VideoLAN team
*
* Authors: Johan Bilien <jobi@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Devices location
*****************************************************************************/
#define SEC "/dev/ost/sec"
#define DMX "/dev/ost/demux"
#define FRONTEND "/dev/ost/frontend"
#define DVR "/dev/ost/dvr"
/*****************************************************************************
* Prototypes
*****************************************************************************/
int
ioctl_SECControl
(
int
,
int
,
int
,
int
,
int
);
int
ioctl_SetQPSKFrontend
(
int
,
int
,
int
,
int
,
int
,
int
,
int
);
int
ioctl_SetDMXFilter
(
int
,
int
,
int
*
,
int
);
int
ioctl_UnsetDMXFilter
(
int
);
int
ioctl_SetBufferSize
(
int
,
size_t
);
modules/access/satellite/satellite.c
deleted
100644 → 0
View file @
fe24de0f
/*****************************************************************************
* satellite.c : Satellite input module for vlc
*****************************************************************************
* Copyright (C) 2000 the VideoLAN team
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <stdlib.h>
/* malloc(), free() */
#include <string.h>
/* strdup() */
#include <vlc/vlc.h>
/*****************************************************************************
* External prototypes
*****************************************************************************/
int
E_
(
Open
)
(
vlc_object_t
*
);
void
E_
(
Close
)
(
vlc_object_t
*
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
#define DEMUX_TEXT N_("Demux number")
#define DEMUX_LONGTEXT ""
#define TUNER_TEXT N_("Tuner number")
#define TUNER_LONGTEXT ""
#define FREQ_TEXT N_("Satellite default transponder frequency (kHz)")
#define FREQ_LONGTEXT ""
#define POL_TEXT N_("Satellite default transponder polarization")
#define POL_LONGTEXT ""
#define FEC_TEXT N_("Satellite default transponder FEC")
#define FEC_LONGTEXT ""
#define SRATE_TEXT N_("Satellite default transponder symbol rate (kHz)")
#define SRATE_LONGTEXT ""
#define DISEQC_TEXT N_("Use diseqc with antenna")
#define DISEQC_LONGTEXT ""
#define LNB_LOF1_TEXT N_("Antenna lnb_lof1 (kHz)")
#define LNB_LOF1_LONGTEXT ""
#define LNB_LOF2_TEXT N_("Antenna lnb_lof2 (kHz)")
#define LNB_LOF2_LONGTEXT ""
#define LNB_SLOF_TEXT N_("Antenna lnb_slof (kHz)")
#define LNB_SLOF_LONGTEXT ""
vlc_module_begin
();
set_description
(
_
(
"Satellite input"
)
);
set_category
(
CAT_INPUT
);
set_subcategory
(
SUBCAT_INPUT_ACCESS
);
add_integer
(
"dvb-dmx"
,
0
,
NULL
,
DEMUX_TEXT
,
DEMUX_LONGTEXT
,
VLC_FALSE
);
add_integer
(
"dvb-tuner"
,
0
,
NULL
,
TUNER_TEXT
,
TUNER_LONGTEXT
,
VLC_FALSE
);
add_integer
(
"frequency"
,
0
,
NULL
,
FREQ_TEXT
,
FREQ_LONGTEXT
,
VLC_FALSE
);
add_integer
(
"polarization"
,
0
,
NULL
,
POL_TEXT
,
POL_LONGTEXT
,
VLC_FALSE
);
add_integer
(
"fec"
,
3
,
NULL
,
FEC_TEXT
,
FEC_LONGTEXT
,
VLC_FALSE
);
add_integer
(
"symbol-rate"
,
27500000
,
NULL
,
SRATE_TEXT
,
SRATE_LONGTEXT
,
VLC_FALSE
);
add_bool
(
"diseqc"
,
0
,
NULL
,
DISEQC_TEXT
,
DISEQC_LONGTEXT
,
VLC_TRUE
);
add_integer
(
"lnb-lof1"
,
10000000
,
NULL
,
LNB_LOF1_TEXT
,
LNB_LOF1_LONGTEXT
,
VLC_TRUE
);
add_integer
(
"lnb-lof2"
,
10000000
,
NULL
,
LNB_LOF2_TEXT
,
LNB_LOF2_LONGTEXT
,
VLC_TRUE
);
add_integer
(
"lnb-slof"
,
11700000
,
NULL
,
LNB_SLOF_TEXT
,
LNB_SLOF_LONGTEXT
,
VLC_TRUE
);
set_capability
(
"access"
,
0
);
add_shortcut
(
"sat"
);
set_callbacks
(
E_
(
Open
),
E_
(
Close
)
);
vlc_module_end
();
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment