+++ /dev/null
-/*****************************************************************************
- * 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 )
-{
- ;
-}
-
+++ /dev/null
-/*****************************************************************************
- * 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);
-}
+++ /dev/null
-/*****************************************************************************
- * 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();
-