|
From: <lin...@us...> - 2002-07-06 08:43:19
|
Update of /cvsroot/dvbtools/dvbstream
In directory usw-pr-cvs1:/tmp/cvs-serv23720
Modified Files:
tune.c tune.h dvb_defaults.h dvbstream.c
Log Message:
added more tuning options from dvbtune
Index: tune.c
===================================================================
RCS file: /cvsroot/dvbtools/dvbstream/tune.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** tune.c 29 Jun 2002 10:09:46 -0000 1.5
--- tune.c 6 Jul 2002 08:43:12 -0000 1.6
***************
*** 32,36 ****
#include <ost/frontend.h>
! #include "dvb_defaults.h"
int OSTSelftest(int fd)
--- 32,36 ----
#include <ost/frontend.h>
! #include "tune.h"
int OSTSelftest(int fd)
***************
*** 143,147 ****
}
! int tune_it(int fd_frontend, int fd_sec, unsigned int freq, unsigned int srate, char pol, int tone, SpectralInversion specInv, unsigned int diseqc) {
int i,res;
int32_t strength;
--- 143,147 ----
}
! int tune_it(int fd_frontend, int fd_sec, unsigned int freq, unsigned int srate, char pol, int tone, SpectralInversion specInv, unsigned int diseqc,Modulation modulation,CodeRate HP_CodeRate,TransmitMode TransmissionMode,GuardInterval guardInterval, BandWidth bandWidth) {
int i,res;
int32_t strength;
***************
*** 154,157 ****
--- 154,170 ----
FrontendInfo fe_info;
+ /* discard stale frontend events */
+ /*
+ pfd[0].fd = fd_frontend;
+ pfd[0].events = POLLIN;
+
+ if (poll(pfd,1,500)){
+ if (pfd[0].revents & POLLIN){
+ while (1) {
+ if (ioctl (fd_frontend, FE_GET_EVENT, &event) == -1) { break; }
+ }
+ }
+ }
+ */
if ( (res = ioctl(fd_frontend,FE_GET_INFO, &fe_info) < 0)){
perror("FE_GET_INFO: ");
***************
*** 165,177 ****
switch(fe_info.type) {
case FE_OFDM:
! fprintf(stderr,"tuning DVB-T to %d\n",freq);
feparams.Frequency=freq;
feparams.Inversion=INVERSION_OFF;
! feparams.u.ofdm.bandWidth=BANDWIDTH_DEFAULT;
! feparams.u.ofdm.HP_CodeRate=HP_CODERATE_DEFAULT;
feparams.u.ofdm.LP_CodeRate=LP_CODERATE_DEFAULT;
! feparams.u.ofdm.Constellation=CONSTELLATION_DEFAULT;
! feparams.u.ofdm.TransmissionMode=TRANSMISSION_MODE_DEFAULT;
! feparams.u.ofdm.guardInterval=GUARD_INTERVAL_DEFAULT;
feparams.u.ofdm.HierarchyInformation=HIERARCHY_DEFAULT;
break;
--- 178,190 ----
switch(fe_info.type) {
case FE_OFDM:
! fprintf(stderr,"tuning DVB-T (%s) to %d\n",DVB_T_LOCATION,freq);
feparams.Frequency=freq;
feparams.Inversion=INVERSION_OFF;
! feparams.u.ofdm.bandWidth=bandWidth;
! feparams.u.ofdm.HP_CodeRate=HP_CodeRate;
feparams.u.ofdm.LP_CodeRate=LP_CODERATE_DEFAULT;
! feparams.u.ofdm.Constellation=modulation;
! feparams.u.ofdm.TransmissionMode=TransmissionMode;
! feparams.u.ofdm.guardInterval=guardInterval;
feparams.u.ofdm.HierarchyInformation=HIERARCHY_DEFAULT;
break;
Index: tune.h
===================================================================
RCS file: /cvsroot/dvbtools/dvbstream/tune.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** tune.h 27 Jun 2002 19:11:31 -0000 1.2
--- tune.h 6 Jul 2002 08:43:12 -0000 1.3
***************
*** 2,7 ****
#define _TUNE_H
! int open_fe(int* fd_frontend,int* fd_sec);
! int tune_it(int fd_frontend, int fd_sec, unsigned long freq, unsigned long srate, char pol);
#endif
--- 2,9 ----
#define _TUNE_H
! #include <ost/frontend.h>
! #include "dvb_defaults.h"
!
! int tune_it(int fd_frontend, int fd_sec, unsigned int freq, unsigned int srate, char pol, int tone, SpectralInversion specInv, unsigned int diseqc,Modulation modulation,CodeRate HP_CodeRate,TransmitMode TransmissionMode,GuardInterval guardInterval, BandWidth bandwidth);
#endif
Index: dvb_defaults.h
===================================================================
RCS file: /cvsroot/dvbtools/dvbstream/dvb_defaults.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** dvb_defaults.h 29 Jun 2002 10:09:46 -0000 1.2
--- dvb_defaults.h 6 Jul 2002 08:43:12 -0000 1.3
***************
*** 1,8 ****
/* dvb_defaults.h
! Idea provided by Tomi Ollila, implemented by Dave Chapman.
Copyright (C) Dave Chapman 2002
!
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
--- 1,8 ----
/* dvb_defaults.h
! Provided by Tomi Ollila
Copyright (C) Dave Chapman 2002
!
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
***************
*** 46,72 ****
//#define FINLAND2
! /* Firstly, lets define some world-wide defaults */
! #define BANDWIDTH_DEFAULT BANDWIDTH_8_MHZ
! #define CONSTELLATION_DEFAULT QAM_64
! #define HIERARCHY_DEFAULT HIERARCHY_NONE
! #define LP_CODERATE_DEFAULT FEC_1_2
!
! /* DVB-T */
!
! #ifdef UK
!
! /* UNITED KINGDOM settings */
! #define HP_CODERATE_DEFAULT FEC_2_3
! #define TRANSMISSION_MODE_DEFAULT TRANSMISSION_MODE_2K
! #define GUARD_INTERVAL_DEFAULT GUARD_INTERVAL_1_32
!
! #endif
#ifdef FINLAND
/* FINLAND settings 1 */
#define HP_CODERATE_DEFAULT FEC_2_3
#define TRANSMISSION_MODE_DEFAULT TRANSMISSION_MODE_8K
#define GUARD_INTERVAL_DEFAULT GUARD_INTERVAL_1_8
#endif
--- 46,61 ----
//#define FINLAND2
! /* UK defines are at the end, as a default option */
#ifdef FINLAND
/* FINLAND settings 1 */
+ #define DVB_T_LOCATION "Suomessa"
+ #define BANDWIDTH_DEFAULT BANDWIDTH_8_MHZ
#define HP_CODERATE_DEFAULT FEC_2_3
+ #define CONSTELLATION_DEFAULT QAM_64
#define TRANSMISSION_MODE_DEFAULT TRANSMISSION_MODE_8K
#define GUARD_INTERVAL_DEFAULT GUARD_INTERVAL_1_8
+ #define HIERARCHY_DEFAULT HIERARCHY_NONE
#endif
***************
*** 74,97 ****
#ifdef FINLAND2
! /* FINLAND settings 2 */
#define HP_CODERATE_DEFAULT FEC_1_2
#define TRANSMISSION_MODE_DEFAULT TRANSMISSION_MODE_2K
#define GUARD_INTERVAL_DEFAULT GUARD_INTERVAL_1_8
#endif
! #ifndef HP_CODERATE_DEFAULT
#warning No DVB-T country defined in dvb_defaults.h
#warning defaulting to UK
#warning Ignore this if using Satellite or Cable
! /* Default to the UK */
#define HP_CODERATE_DEFAULT FEC_2_3
#define TRANSMISSION_MODE_DEFAULT TRANSMISSION_MODE_2K
#define GUARD_INTERVAL_DEFAULT GUARD_INTERVAL_1_32
#endif
! #endif
--- 63,103 ----
#ifdef FINLAND2
! /* FINLAND settings 2 (someone verify there is such environment) */
! #define DVB_T_LOCATION "Suomessa II"
! #define BANDWIDTH_DEFAULT BANDWIDTH_8_MHZ
#define HP_CODERATE_DEFAULT FEC_1_2
+ #define CONSTELLATION_DEFAULT QAM_64
#define TRANSMISSION_MODE_DEFAULT TRANSMISSION_MODE_2K
#define GUARD_INTERVAL_DEFAULT GUARD_INTERVAL_1_8
+ #define HIERARCHY_DEFAULT HIERARCHY_NONE
#endif
! #if defined (UK) && defined (HP_CODERATE_DEFAULT)
! #error Multible countries defined
! #endif
+ #ifndef DVB_T_LOCATION
+
+ #ifndef UK
#warning No DVB-T country defined in dvb_defaults.h
#warning defaulting to UK
#warning Ignore this if using Satellite or Cable
+ #endif
! /* UNITED KINGDOM settings */
! #define DVB_T_LOCATION "in United Kingdom"
! #define BANDWIDTH_DEFAULT BANDWIDTH_8_MHZ
#define HP_CODERATE_DEFAULT FEC_2_3
+ #define CONSTELLATION_DEFAULT QAM_64
#define TRANSMISSION_MODE_DEFAULT TRANSMISSION_MODE_2K
#define GUARD_INTERVAL_DEFAULT GUARD_INTERVAL_1_32
+ #define HIERARCHY_DEFAULT HIERARCHY_NONE
#endif
+ #if HIERARCHY_DEFAULT == HIERARCHY_NONE && !defined (LP_CODERATE_DEFAULT)
+ #define LP_CODERATE_DEFAULT (0) /* unused if HIERARCHY_NONE */
+ #endif
! #endif
Index: dvbstream.c
===================================================================
RCS file: /cvsroot/dvbtools/dvbstream/dvbstream.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** dvbstream.c 27 Jun 2002 19:11:31 -0000 1.2
--- dvbstream.c 6 Jul 2002 08:43:12 -0000 1.3
***************
*** 78,81 ****
--- 78,90 ----
int Interrupted=0;
+ SpectralInversion specInv=INVERSION_AUTO;
+ int tone=-1;
+ Modulation modulation=CONSTELLATION_DEFAULT;
+ TransmitMode TransmissionMode=TRANSMISSION_MODE_DEFAULT;
+ BandWidth bandWidth=BANDWIDTH_DEFAULT;
+ GuardInterval guardInterval=GUARD_INTERVAL_DEFAULT;
+ CodeRate HP_CodeRate=HP_CODERATE_DEFAULT;
+ unsigned int diseqc=0;
+ char pol=0;
int open_fe(int* fd_frontend,int* fd_sec) {
***************
*** 178,182 ****
dmxPesType_t pestype;
unsigned long freq=0;
- char pol=0;
unsigned long srate=0;
--- 187,190 ----
***************
*** 296,300 ****
if (open_fe(&fd_frontend,&fd_sec)) {
fprintf(stderr,"Tuning to %ld,%ld,%c\n",freq,srate,pol);
! tune_it(fd_frontend,fd_sec,freq,srate,pol);
close(fd_frontend);
close(fd_sec);
--- 304,308 ----
if (open_fe(&fd_frontend,&fd_sec)) {
fprintf(stderr,"Tuning to %ld,%ld,%c\n",freq,srate,pol);
! tune_it(fd_frontend,fd_sec,freq,srate,pol,tone,specInv,diseqc,modulation,HP_CodeRate,TransmissionMode,guardInterval,bandWidth);
close(fd_frontend);
close(fd_sec);
***************
*** 391,395 ****
unsigned int secs = 0;
unsigned long freq=0;
- char pol=0;
unsigned long srate=0;
int count;
--- 399,402 ----
***************
*** 420,424 ****
if (argc==1) {
! fprintf(stderr,"Usage: dvbstream [-i ip] [-r port] [-f freq -p pol -s srate] [-t secs] [-o] [-ps] pid1 pid2 .. pid8\n");
return(-1);
} else {
--- 427,454 ----
if (argc==1) {
! fprintf(stderr,"Usage: dvbtune [OPTIONS] pid1 pid2 ... pid8\n\n");
! fprintf(stderr,"-i IP multicast address\n");
! fprintf(stderr,"-r IP multicast port\n");
! fprintf(stderr,"-o Stream to stdout instead of network\n");
! fprintf(stderr,"-ps Convert stream to Program Stream format (needs exactly 2 pids)\n");
! fprintf(stderr,"-v vpid Decode video PID (full cards only)\n");
! fprintf(stderr,"-a apid Decode audio PID (full cards only)\n");
! fprintf(stderr,"-t ttpid Decode teletext PID (full cards only)\n");
! fprintf(stderr,"\nStandard tuning options:\n\n");
! fprintf(stderr,"-f freq absolute Frequency (DVB-S in Hz or DVB-T in Hz)\n");
! fprintf(stderr," or L-band Frequency (DVB-S in Hz or DVB-T in Hz)\n");
! fprintf(stderr,"-p [H,V] Polarity (DVB-S only)\n");
! fprintf(stderr,"-s N Symbol rate (DVB-S or DVB-C)\n");
!
! fprintf(stderr,"\nAdvanced tuning options:\n\n");
! fprintf(stderr,"-c [0-3] Use DVB card #[0-3]\n");
! fprintf(stderr,"-qam X DVB-T modulation - 16%s, 32%s, 64%s, 128%s or 256%s\n",(CONSTELLATION_DEFAULT==QAM_16 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_32 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_64 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_128 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_256 ? " (default)" : ""));
! fprintf(stderr,"-gi N DVB-T guard interval 1_N (N=32%s, 16%s, 8%s or 4%s)\n",(GUARD_INTERVAL_DEFAULT==GUARD_INTERVAL_1_32 ? " (default)" : ""),(GUARD_INTERVAL_DEFAULT==GUARD_INTERVAL_1_16 ? " (default)" : ""),(GUARD_INTERVAL_DEFAULT==GUARD_INTERVAL_1_8 ? " (default)" : ""),(GUARD_INTERVAL_DEFAULT==GUARD_INTERVAL_1_4 ? " (default)" : ""));
! fprintf(stderr,"-cr N DVB-T code rate. N=AUTO%s, 1_2%s, 2_3%s, 3_4%s, 5_6%s, 7_8%s\n",(HP_CODERATE_DEFAULT==FEC_AUTO ? " (default)" : ""),(HP_CODERATE_DEFAULT==FEC_1_2 ? " (default)" : ""),(HP_CODERATE_DEFAULT==FEC_2_3 ? " (default)" : ""),(HP_CODERATE_DEFAULT==FEC_3_4 ? " (default)" : ""),(HP_CODERATE_DEFAULT==FEC_5_6 ? " (default)" : ""),(HP_CODERATE_DEFAULT==FEC_7_8 ? " (default)" : ""));
! fprintf(stderr,"-bw N DVB-T bandwidth (Mhz) - N=6%s, 7%s or 8%s\n",(BANDWIDTH_DEFAULT==BANDWIDTH_6_MHZ ? " (default)" : ""),(BANDWIDTH_DEFAULT==BANDWIDTH_7_MHZ ? " (default)" : ""),(BANDWIDTH_DEFAULT==BANDWIDTH_8_MHZ ? " (default)" : ""));
! fprintf(stderr,"-tm N DVB-T transmission mode - N=2%s or 8%s\n",(TRANSMISSION_MODE_DEFAULT==TRANSMISSION_MODE_2K ? " (default)" : ""),(TRANSMISSION_MODE_DEFAULT==TRANSMISSION_MODE_8K ? " (default)" : ""));
!
! fprintf(stderr,"\n");
! fprintf(stderr,"NOTE: Use pid1=8192 to broadcast whole TS stream from a budget card\n");
return(-1);
} else {
***************
*** 452,457 ****
to_stdout = 1;
} else if (strcmp(argv[i],"-t")==0) {
! i++;
! secs=atoi(argv[i]);
} else if (strcmp(argv[i],"-c")==0) {
i++;
--- 482,487 ----
to_stdout = 1;
} else if (strcmp(argv[i],"-t")==0) {
! i++;
! secs=atoi(argv[i]);
} else if (strcmp(argv[i],"-c")==0) {
i++;
***************
*** 466,469 ****
--- 496,559 ----
} else if (strcmp(argv[i],"-t")==0) {
pestype=DMX_PES_TELETEXT;
+ } else if (strcmp(argv[i],"-qam")==0) {
+ i++;
+ switch(atoi(argv[i])) {
+ case 16: modulation=QAM_16; break;
+ case 32: modulation=QAM_32; break;
+ case 64: modulation=QAM_64; break;
+ case 128: modulation=QAM_128; break;
+ case 256: modulation=QAM_256; break;
+ default:
+ fprintf(stderr,"Invalid QAM rate: %s\n",argv[i]);
+ exit(0);
+ }
+ } else if (strcmp(argv[i],"-gi")==0) {
+ i++;
+ switch(atoi(argv[i])) {
+ case 32: guardInterval=GUARD_INTERVAL_1_32; break;
+ case 16: guardInterval=GUARD_INTERVAL_1_16; break;
+ case 8: guardInterval=GUARD_INTERVAL_1_8; break;
+ case 4: guardInterval=GUARD_INTERVAL_1_4; break;
+ default:
+ fprintf(stderr,"Invalid Guard Interval: %s\n",argv[i]);
+ exit(0);
+ }
+ } else if (strcmp(argv[i],"-tm")==0) {
+ i++;
+ switch(atoi(argv[i])) {
+ case 8: TransmissionMode=TRANSMISSION_MODE_8K; break;
+ case 2: TransmissionMode=TRANSMISSION_MODE_2K; break;
+ default:
+ fprintf(stderr,"Invalid Transmission Mode: %s\n",argv[i]);
+ exit(0);
+ }
+ } else if (strcmp(argv[i],"-bw")==0) {
+ i++;
+ switch(atoi(argv[i])) {
+ case 8: bandWidth=BANDWIDTH_8_MHZ; break;
+ case 7: bandWidth=BANDWIDTH_7_MHZ; break;
+ case 6: bandWidth=BANDWIDTH_6_MHZ; break;
+ default:
+ fprintf(stderr,"Invalid DVB-T bandwidth: %s\n",argv[i]);
+ exit(0);
+ }
+ } else if (strcmp(argv[i],"-cr")==0) {
+ i++;
+ if (strcmp(argv[i],"AUTO")) {
+ HP_CodeRate=FEC_AUTO;
+ } else if (strcmp(argv[i],"1_2")) {
+ HP_CodeRate=FEC_1_2;
+ } else if (strcmp(argv[i],"2_3")) {
+ HP_CodeRate=FEC_2_3;
+ } else if (strcmp(argv[i],"3_4")) {
+ HP_CodeRate=FEC_3_4;
+ } else if (strcmp(argv[i],"5_6")) {
+ HP_CodeRate=FEC_5_6;
+ } else if (strcmp(argv[i],"7_8")) {
+ HP_CodeRate=FEC_7_8;
+ } else {
+ fprintf(stderr,"Invalid Code Rate: %s\n",argv[i]);
+ exit(0);
+ }
} else {
if ((ch=(char*)strstr(argv[i],":"))!=NULL) {
***************
*** 504,513 ****
if ( (freq>100000000)) {
if (open_fe(&fd_frontend,0)) {
! tune_it(fd_frontend,0,freq,0,0);
close(fd_frontend);
}
} else if ((freq!=0) && (pol!=0) && (srate!=0)) {
if (open_fe(&fd_frontend,&fd_sec)) {
! tune_it(fd_frontend,fd_sec,freq,srate,pol);
close(fd_frontend);
close(fd_sec);
--- 594,603 ----
if ( (freq>100000000)) {
if (open_fe(&fd_frontend,0)) {
! tune_it(fd_frontend,0,freq,0,0,tone,specInv,diseqc,modulation,HP_CodeRate,TransmissionMode,guardInterval,bandWidth);
close(fd_frontend);
}
} else if ((freq!=0) && (pol!=0) && (srate!=0)) {
if (open_fe(&fd_frontend,&fd_sec)) {
! tune_it(fd_frontend,fd_sec,freq,srate,pol,tone,specInv,diseqc,modulation,HP_CodeRate,TransmissionMode,guardInterval,bandWidth);
close(fd_frontend);
close(fd_sec);
|