diff options
author | Guenter Bartsch <guenter@users.sourceforge.net> | 2003-01-12 23:20:37 +0000 |
---|---|---|
committer | Guenter Bartsch <guenter@users.sourceforge.net> | 2003-01-12 23:20:37 +0000 |
commit | eaac42f1becbbcc62317e9bf81e07608aaad62fd (patch) | |
tree | 6aa81bcbf245576653928f43aac4a6627dbdd30c | |
parent | 74d0944f178bc53557b814de4a90d01034890e9a (diff) | |
download | xine-lib-eaac42f1becbbcc62317e9bf81e07608aaad62fd.tar.gz xine-lib-eaac42f1becbbcc62317e9bf81e07608aaad62fd.tar.bz2 |
DVB plugin updated to new api. thanks to Micael Beronius, Chris Purnell for their great work
CVS patchset: 3884
CVS date: 2003/01/12 23:20:37
-rw-r--r-- | AUTHORS | 3 | ||||
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | doc/README.dvb | 62 | ||||
-rw-r--r-- | doc/dvb_channels | 1878 | ||||
-rw-r--r-- | src/input/Makefile.am | 4 | ||||
-rw-r--r-- | src/input/dvb/Makefile.am (renamed from src/input/ost/Makefile.am) | 4 | ||||
-rw-r--r-- | src/input/dvb/dmx.h | 172 | ||||
-rw-r--r-- | src/input/dvb/frontend.h | 262 | ||||
-rw-r--r-- | src/input/input_dvb.c | 625 | ||||
-rw-r--r-- | src/input/ost/README | 9 | ||||
-rw-r--r-- | src/input/ost/ca.h | 84 | ||||
-rw-r--r-- | src/input/ost/demux.h | 346 | ||||
-rw-r--r-- | src/input/ost/dmx.h | 143 | ||||
-rw-r--r-- | src/input/ost/frontend.h | 211 | ||||
-rw-r--r-- | src/input/ost/sec.h | 118 |
16 files changed, 835 insertions, 3091 deletions
@@ -318,5 +318,8 @@ Anders D. Wiehe <anders@wiehe.org> Zoltán Böszörményi <zboszor@freemail.hu> tremendous help in porting sputext to 1.0 API +Micael Beronius <micael.beronius@telia.com> +Chris Purnell <cjp@lost.org.uk> + DVB plugin port to new API, DVB-C support, updates, fixes (let us know if we've forgotten anyone) @@ -11,7 +11,8 @@ * Dialogic ADPCM audio decoder * reporting of unhandled codecs * NSF audio decoding via Nosefart - + * DVB plugin updated to new DVB API, DVB-C and DVB-T support + xine-lib (1-beta2) * what a GOOM! post plugin * Digital TV (DVB) input plugin (experimental) diff --git a/configure.ac b/configure.ac index b8f67e9cf..ec30f8b87 100644 --- a/configure.ac +++ b/configure.ac @@ -1188,7 +1188,7 @@ src/dxr3/Makefile src/input/Makefile src/input/libdvdnav/Makefile src/input/libdvdread/Makefile -src/input/ost/Makefile +src/input/dvb/Makefile src/input/librtsp/Makefile src/input/libreal/Makefile src/liba52/Makefile diff --git a/doc/README.dvb b/doc/README.dvb index 3c487c395..c3a77b99d 100644 --- a/doc/README.dvb +++ b/doc/README.dvb @@ -5,19 +5,24 @@ xine Digital TV (DVB) xine can be used to watch digital television. xine supports Digital TV (Digital Video Broadcasting - DVB) cards -using the Linux DVB driver from Convergence (so far this has only been -tested using a Hauppauge WinTV Nova DVB-S card). +using the Linux DVB driver from Convergence (http://www.linuxtv.org). +DVB-S (direct satellite reception), DVB-C (Cable) and DVB-T (Teresstrical) +cards should be supported (e.g. the Hauppauge WinTV Nova DVB-S card). driver download and installation -------------------------------- -Download and install the latest drivers from www.linuxtv.org. You will -need kernel sources configured for your configuration for a successfull build, -preferably in /usr/src/linux. Once you have that, unpack the driver sources +Download and install the drivers from http://www.linuxtv.org CVS: -# tar xfvz siemens_dvb-0.9.4.tar.gz +# cvs -d :pserver:anonymous@linuxtv.org:/cvs/linuxtv login -and compile the driver +[empty password] + +# cvs -d :pserver:anonymous@linuxtv.org:/cvs/linuxtv co DVB + +You will need kernel sources configured for your configuration for +a successfull build, preferably in /usr/src/linux. Once you have that +you should be ready to compile the driver # cd DVB/driver # make @@ -27,9 +32,12 @@ if that doesn't fail, do a # make insmod to load the generated modules into your running kernel. If everything went -fine, you should have a line like +fine, you should have something like -dvb: 1 dvb(s) found! +DVB: registering new adapter (TT-Budget/WinTV-NOVA-S PCI). +PCI: Found IRQ 10 for device 00:0d.0 +PCI: Sharing IRQ 10 with 00:0c.0 +DVB: registering frontend 0:0 (stv0299 based (e.g. Alps BSRU6 or LG TDQB-S00x))... in your dmesg. @@ -38,40 +46,14 @@ install a channel list ---------------------- xine's dvb input plugin needs a channel/transponder list that fits your -satellite equipment. If you happen to live in central europe and want to -watch free channels from the astra 1a position you're lucky - you can simply -copy the dvb_channels file that comes with libxine (doc directory) - -$ mkdir ~/.xine -$ cp doc/dvb_channels ~/.xine - -otherwise you'll probably want to write your own channels file. The file -format is very simple: for each station add three lines: - -Program Name -A BBBBBBBB C DDDDDDDD E FFF GGG -(empty line) - -with - -A - diseqc number - -B - Frequency - -C - LNB voltage (H/V polarisation switch) - (4: horizontal, 2: vertical polarisation) - -D - Symbol Rate - -E - FEC - -F - vpid (video program id) +dvb equipment. xine now uses the channels.conf format of szap, czap and +tzap as appropriate for DVB-S, DVB-C and DVB-T. -G - apid (audio program id) +You should be able to find example channel config files in -once you have written a working dvb_channels file for your location/satellite, -you might want to share it with others on the xine-user mailing list :-) +DVB/apps/szap +as checked out from CVS. using xine to watch digital television -------------------------------------- diff --git a/doc/dvb_channels b/doc/dvb_channels deleted file mode 100644 index b0932d158..000000000 --- a/doc/dvb_channels +++ /dev/null @@ -1,1878 +0,0 @@ -ARD Das Erste -0 11837000 4 27500000 2 101 102 -EinsMuXx -0 12109000 4 27500000 2 301 302 -EinsExtra -0 12109000 4 27500000 2 101 102 -EinsFestival -0 12109000 4 27500000 2 201 202 -ZDF -0 11954000 4 27500000 2 110 120 -ZDFtheaterkanal -0 11954000 4 27500000 2 1110 1120 -RTL Television -0 12188000 4 27500000 2 163 104 -SAT.1-CH -0 12148000 4 27500000 2 255 256 -ProSieben -0 12483000 2 27502000 2 255 256 -RTL2 -0 12188000 4 27500000 2 166 128 -VOX -0 12188000 4 27500000 2 167 136 -KABEL1 -0 12483000 2 27502000 2 511 512 -Super RTL -0 12188000 4 27500000 2 165 120 -Tele 5 -0 12480000 2 27500000 3 1535 1536 -NEUN LIVE Television -0 12483000 2 27502000 2 767 768 -TW1 -0 12692000 4 22000000 3 166 167 -XXP -2 11095000 4 27500000 2 33 44 -N24 -0 12483000 2 27500000 2 2047 2048 -n-tv -0 12670000 2 22000000 3 162 96 -CNN Int. -0 12168000 2 27500000 2 165 100 -EuroNews -0 11954000 4 27500000 2 2221 2233 -FOX news -2 10983000 2 27500000 2 523 751 -CNBC -0 11954000 4 27500000 2 510 520 -CNBC Europe -0 12610000 2 22000000 3 944 945 -Sky News -0 12552000 2 22000000 3 305 306 -Phoenix -0 11837000 4 27500000 2 901 902 -WorldNet Europe -2 12484000 2 8300000 3 4260 4220 -WorldNet -2 12484000 2 8300000 3 4560 4520 -DW TV America -2 11143000 2 5500000 7 33 4010 -DW TV Afghanistan -2 11143000 2 5500000 7 111 112 -DW-TV -0 10788000 2 22000000 3 305 306 -EbS - Europe by Satellite -2 12476000 4 27500000 3 101 202 -NBC Europe -2 11054000 4 27500000 5 550 551 -NBC -2 11054000 4 27500000 3 550 551 -Gay TV -2 12149000 2 27500000 3 36 37 -Fashion TV -2 12245000 4 27500000 3 123 133 -Bahn TV -0 12633000 4 22000000 5 201 301 -BR-alpha -0 11837000 4 27500000 2 701 702 -Bibel TV -0 10832000 4 22000000 5 32 33 -K-TV -2 11604000 4 27500000 5 711 712 -LibertyTV.com -0 12610000 2 22000000 5 941 943 -Motors TV -0 12610000 2 22000000 5 191 194 -RTL TELE Letzebuerg -0 12552000 2 22000000 3 168 144 -Nordliicht TV -0 12552000 2 22000000 3 168 144 -Duna TV -2 12149000 2 27500000 3 96 97 -EWTN Europe -2 10723000 4 29900000 3 1001 1201 -MTA International -2 10723000 4 29900000 3 1004 1304 -arte -0 11837000 4 27500000 2 401 402 -Bloomberg TV Germany -0 12552000 2 22000000 3 162 99 -Bloomberg English TV -2 11647000 4 27500000 2 1560 1520 -ZDFdokukanal -0 11954000 4 27500000 2 660 670 -ZDFinfokanal -0 11954000 4 27500000 2 610 620 -MTV Central -0 12699000 2 22000000 3 3031 3032 -MTV Germany -0 11739000 2 27500000 3 3031 3032 -MTV Pop -0 11739000 2 27500000 3 3081 3082 -VIVA -0 12670000 2 22000000 3 309 310 -VIVA PLUS -0 12552000 2 22000000 3 171 172 -DeeJay TV -2 11604000 4 27500000 5 160 161 -VIVA Polska -2 11604000 4 27500000 5 190 191 -102&5 Hit Channel -2 11623000 2 27500000 3 224 244 -123 Sat -2 11623000 2 27500000 3 230 250 -Channel X / Ultra Blue TV -2 11623000 2 27500000 3 223 243 -TV NRW -2 11604000 4 27500000 5 111 112 -Arte German -2 11060000 2 6510000 5 98 99 -3sat -0 11954000 4 27500000 2 210 220 -SFB1 -0 12109000 4 27500000 2 601 602 -SR Fernsehen Suedwes -0 11837000 4 27500000 2 501 502 -SÜDWEST BW -0 11837000 4 27500000 2 801 802 -WDR FERNSEHEN -0 11837000 4 27500000 2 601 602 -Bayerisches FS -0 11837000 4 27500000 2 201 202 -hessen fernsehen -0 11837000 4 27500000 2 301 302 -MDR FERNSEHEN -0 12109000 4 27500000 2 401 402 -NDR Fernsehen -0 12109000 4 27500000 2 2401 2402 -ORB-Fernsehen -0 12109000 4 27500000 2 501 502 -SUEDWEST RP -0 12109000 4 27500000 2 3101 3102 -tv.nrw -2 11604000 4 27500000 3 111 112 -ONTV Regional -0 12148000 4 27500000 2 2303 2304 -Eurosport -0 11954000 4 27500000 2 410 420 -Iraq -2 12654000 4 27500000 2 1960 1920 -Tele5 -0 10832000 4 22000000 3 58 65 -TV POLONIA -2 10719000 2 27500000 2 163 92 -ALLOCINE INFO -0 11739000 2 27500000 2 167 108 -Chamber TV -0 12552000 2 22000000 3 55 56 -LCP -0 12207000 2 27500000 2 165 100 -TEST -0 12188000 4 27500000 2 50 51 -FEED -0 12437000 4 27500000 2 308 256 -RTL2 AUSTRIA -2 11054000 4 27500000 2 520 521 -ProSieben Schweiz -0 12051000 2 27500000 2 289 290 -RTL Television -2 11054000 4 27500000 2 160 80 -RAI 1 -2 10788000 2 22000000 3 289 290 -ESC1 - EGYPTE -0 10788000 2 22000000 3 163 104 -Canal Algerie -0 10788000 2 22000000 3 168 138 -Test-R -0 11837000 4 27500000 2 901 902 -RTM - MAROC -0 10788000 2 22000000 2 162 96 -RTPI -0 10788000 2 22000000 2 300 301 -TV 5 -0 10788000 2 22000000 2 164 112 -TV7 -0 10788000 2 22000000 2 166 128 -Polonia 1 -0 10832000 4 22000000 2 54 57 -Tango TV -0 10832000 4 22000000 2 61 62 -TV Puls -0 10832000 4 22000000 2 59 60 -FRANCE 5 -0 11608000 2 22000000 2 160 80 -ANDALUCÍA TV -0 11686000 2 22000000 2 162 88 -Canal Canarias -0 11686000 2 22000000 2 160 80 -ETB SAT -0 11686000 2 22000000 2 163 92 -TM SAT/LA OTRA -0 11686000 2 22000000 2 164 96 -TVC INT. -0 11686000 2 22000000 2 161 84 -Kabel 1 Austria -0 12051000 2 27500000 2 166 167 -Kabel 1 Schweiz -0 12051000 2 27500000 2 162 163 -ProSieben Austria -0 12051000 2 27500000 2 161 84 -SAT.1 A -0 12051000 2 27500000 2 800 801 -FRANCE 5 -0 12207000 2 27500000 2 160 80 -AB SAT / XXL -0 12266000 4 27500000 2 164 96 -MOTEURS -0 12266000 4 27500000 2 160 80 -CA TV -0 12324000 2 27500000 2 165 100 -LE SESAME C+ -0 12324000 2 27500000 2 165 1965 -MOSAIQUE -0 12324000 2 27500000 2 162 0 -RealityTV -0 12382000 4 27500000 2 169 110 -K13 -0 12402000 2 27500000 2 163 92 -ANDALUCÍA TV -0 12441000 2 27500000 2 162 88 -Canal Canarias -0 12441000 2 27500000 2 160 80 -ETB SAT -0 12441000 2 27500000 2 163 92 -TAQUILLA 0 -0 12441000 2 27500000 2 166 104 -TM SAT/LA OTRA -0 12441000 2 27500000 2 164 96 -TVC INT. -0 12441000 2 27500000 2 161 84 -DSF -0 12483000 2 27502000 2 1023 1024 -Sonnenklar TV -0 12090000 2 27500000 2 1023 1024 -Home Shopping Europe -0 12483000 2 27502000 2 1279 1280 -RTL Shop -0 12188000 4 27500000 2 168 137 -QVC GERMANY -0 12552000 2 22000000 3 165 166 -Travel -0 12168000 2 27500000 2 163 92 -Promo -2 12169000 4 27500000 2 521 740 -ASTRA Mosaik -0 12552000 2 22000000 5 175 176 -ASTRA-Mosaic 2 -0 12552000 2 22000000 5 179 120 -ASTRA-Mosaic 3 -0 12552000 2 22000000 5 182 169 -ASTRA-Mosaic 4 -0 12552000 2 22000000 5 185 170 -ASTRA-Mosaic 5 -0 12552000 2 22000000 5 163 164 -BVN -0 12574000 4 22000000 2 164 96 -Liberty TV.com -0 12610000 2 22000000 2 941 943 -RTBF SAT -0 12610000 2 22000000 2 48 49 -TV5 Europe -0 12610000 2 22000000 2 45 46 -Wishline -0 12610000 2 22000000 2 214 215 -No-ZAP TV -0 12640000 4 22000000 2 160 80 -TV-NIEP II -0 12670000 2 22000000 2 77 78 -BL-SPIEL 1 -0 11719000 4 27500000 2 255 256 -BL-SPIEL 2 -0 11719000 4 27500000 2 2047 2048 -BL-SPIEL 3 -0 11719000 4 27500000 2 2303 2304 -BL-SPIEL 4 -0 11719000 4 27500000 2 2559 2560 -BL-SPIEL 5 -0 11719000 4 27500000 2 2815 2816 -BL-SPIEL 6 -0 11719000 4 27500000 2 3071 3072 -F1 Box -0 11719000 4 27500000 2 2559 2560 -F1 Cockpit -0 11719000 4 27500000 2 2303 2304 -F1 Info -0 11719000 4 27500000 2 3071 3072 -F1 Portal -0 11719000 4 27500000 2 255 256 -F1 Super -0 11719000 4 27500000 2 2047 2048 -F1 Verfolger -0 11719000 4 27500000 2 2815 2816 -PREM EROTIK 2 -0 11719000 4 27500000 2 1535 1536 -PREM EROTIK 3 -0 11719000 4 27500000 2 1791 1792 -PREM EROTIK 4 -0 11719000 4 27500000 2 3583 3584 -PREMIERE DIREKT 1 -0 11719000 4 27500000 2 1023 1024 -PREMIERE DIREKT 2 -0 11719000 4 27500000 2 767 768 -PREMIERE DIREKT 3 -0 11719000 4 27500000 2 511 512 -PREMIERE DIREKT 3 -0 11719000 4 27500000 2 1279 1280 -PREMIERE SPORT 1 -0 11719000 4 27500000 2 255 256 -CINE CINEMA 16/9 -0 11739000 2 27500000 2 160 80 -CLUB TELEACHAT -0 11739000 2 27500000 2 162 88 -GOURMET TV -0 11739000 2 27500000 2 170 120 -KTO -0 11739000 2 27500000 2 163 92 -MATCH TV -0 11739000 2 27500000 2 165 100 -MCM -0 11739000 2 27500000 2 161 84 -MCM 2 -0 11739000 2 27500000 2 164 96 -MCM AFRICA -0 11739000 2 27500000 2 166 104 -NAT GEOGRAPHIC -0 11739000 2 27500000 2 169 116 -TiJi -0 11739000 2 27500000 2 168 112 -13 TH STREET -0 11758000 4 27500000 2 2303 2304 -BEATE-UHSE.TV -0 11758000 4 27500000 2 1023 1024 -CLASSICA -0 11758000 4 27500000 2 767 768 -FOX KIDS -0 11758000 4 27500000 2 1279 1280 -GOLDSTAR TV -0 11758000 4 27500000 2 3839 3840 -HEIMATKANAL -0 11758000 4 27500000 2 1535 1536 -JUNIOR -0 11758000 4 27500000 2 255 256 -K-TOON -0 11758000 4 27500000 2 511 512 -CANAL J -0 11778000 2 27500000 2 167 108 -CUISINE.TV -0 11778000 2 27500000 2 165 100 -EUROSPORT -0 11778000 2 27500000 2 160 80 -LCI -0 11778000 2 27500000 2 166 104 -PARIS PREMIERE -0 11778000 2 27500000 2 163 92 -PLANETE -0 11778000 2 27500000 2 162 88 -SANTE - VIE PLUS -0 11778000 2 27500000 2 168 112 -SANTE-VIE -0 11778000 2 27500000 2 168 112 -TMC -0 11778000 2 27500000 2 161 84 -VOYAGE -0 11778000 2 27500000 2 164 96 -PREMIERE 1 -0 11797000 4 27500000 2 511 512 -PREMIERE 2 -0 11797000 4 27500000 2 1791 1792 -PREMIERE 3 -0 11797000 4 27500000 2 2303 2304 -PREMIERE 4 -0 11797000 4 27500000 2 767 768 -PREMIERE 5 -0 11797000 4 27500000 2 1279 1280 -PREMIERE 6 -0 11797000 4 27500000 2 1535 1536 -PREMIERE 7 -0 11797000 4 27500000 2 1023 1024 -PREMIERE START -0 11797000 4 27500000 2 255 256 -BLOOMBERG TV -0 11817000 2 27500000 2 163 92 -CANAL JIMMY -0 11817000 2 27500000 2 165 100 -CINECINEMAS 2 -0 11817000 2 27500000 2 161 84 -CINECINEMAS 3 -0 11817000 2 27500000 2 162 88 -i TELEVISION -0 11817000 2 27500000 2 169 116 -LA CHAINE METEO -0 11817000 2 27500000 2 167 108 -MEZZO -0 11817000 2 27500000 2 166 104 -MEZZO[esp] -0 11817000 2 27500000 2 166 104 -PATHE SPORT: -0 11817000 2 27500000 2 168 112 -SEASONS -0 11817000 2 27500000 2 160 80 -CANAL+ -0 11856000 2 27500000 2 160 80 -CANAL+ 16/9 -0 11856000 2 27500000 2 163 92 -CANAL+ BLEU -0 11856000 2 27500000 2 161 84 -CANAL+ JAUNE -0 11856000 2 27500000 2 162 88 -CANAL+ VERT -0 11856000 2 27500000 2 167 108 -CINE CLASSICS -0 11856000 2 27500000 2 2047 0 -CINECINEMAS 1 -0 11856000 2 27500000 2 165 100 -DISNEY CHANNEL -0 11856000 2 27500000 2 166 104 -EQUIDIA -0 11856000 2 27500000 2 168 112 -PMU sur Canal+ -0 11856000 2 27500000 2 160 80 -40 LATINO -0 11934000 2 27500000 2 160 80 -CANAL+ ...30 -0 11934000 2 27500000 2 167 108 -CINECLASSICS -0 11934000 2 27500000 2 162 88 -CNN+ -0 11934000 2 27500000 2 172 128 -EUROSPORTNEWS -0 11934000 2 27500000 2 173 132 -FOX NEWS -0 11934000 2 27500000 2 168 112 -MÉTEO -0 11934000 2 27500000 2 169 116 -Nat Geographic -0 11934000 2 27500000 2 170 120 -REAL MADRID TV -0 11934000 2 27500000 2 171 124 -40 LATINO -0 11941000 2 27500000 2 160 80 -CANAL+ ...30 -0 11941000 2 27500000 2 167 108 -CINECLASSICS -0 11941000 2 27500000 2 162 88 -40 TV -0 11973000 2 27500000 2 165 100 -CANAL+ -0 11973000 2 27500000 2 160 80 -CANAL+ AZUL -0 11973000 2 27500000 2 161 84 -CANAL+ ROJO -0 11973000 2 27500000 2 162 88 -DISCOVERY -0 11973000 2 27500000 2 166 104 -DISNEY CHANNEL -0 11973000 2 27500000 2 163 92 -SPORTMANÍA -0 11973000 2 27500000 2 164 96 -SPORTMANÍA -0 11973000 2 27500000 2 164 96 -ATV -0 11992000 4 27500000 2 163 90 -Avante -0 11992000 4 27500000 2 162 88 -Discovery Cze -0 11992000 4 27500000 2 170 112 -Eurosport -0 11992000 4 27500000 2 160 80 -ExtremeSports -0 11992000 4 27500000 2 165 98 -Hallmark Cze -0 11992000 4 27500000 2 702 703 -M2 -0 11992000 4 27500000 2 164 96 -MTV Europe -0 11992000 4 27500000 2 168 108 -Private Gold -0 11992000 4 27500000 2 167 106 -SpektrumInt. -0 11992000 4 27500000 2 169 110 -TV3 -0 11992000 4 27500000 2 166 104 -CANAL EVENEMENT -0 12012000 2 27500000 2 162 88 -ESPN CLASSIC -0 12012000 2 27500000 2 169 116 -FRANCE 2 -0 12012000 2 27500000 2 160 80 -FRANCE 3 -0 12012000 2 27500000 2 161 84 -MCM AFRICA -0 12012000 2 27500000 2 166 104 -TELE MELODY -0 12012000 2 27500000 2 167 108 -[18] -0 12012000 2 27500000 2 2047 0 -DISCOVERY CHANNEL -0 12031000 4 27500000 2 1791 1792 -KRIMI &CO -0 12031000 4 27500000 2 1535 1536 -PREMIERE DIREKT 1 -0 12031000 4 27500000 2 511 512 -PREMIERE DIREKT 2 -0 12031000 4 27500000 2 255 256 -PREMIERE DIREKT 4 -0 12031000 4 27500000 2 2815 2816 -PREMIERE EROTIK -0 12031000 4 27500000 2 1279 1280 -PREMIERE NOSTALGIE -0 12031000 4 27500000 2 2559 2560 -PREMIERE SERIE -0 12031000 4 27500000 2 1023 1024 -PREMIERE SPORT 2 -0 12031000 4 27500000 2 3839 3840 -BL-KONFERENZ -0 12070000 4 27500000 2 255 256 -BL-SPIEL 7 -0 12070000 4 27500000 2 3071 3072 -BL-SPIEL 8 -0 12070000 4 27500000 2 3071 3072 -BL-SPIEL 9 -0 12070000 4 27500000 2 3071 3072 -DISNEY CHANNEL -0 12090000 2 27500000 2 767 768 -PLANET -0 12090000 2 27500000 2 1279 1280 -STUDIO UNIVERSAL -0 12090000 2 27500000 2 255 256 -K1 -0 12129000 2 27500000 2 160 80 -K10 -0 12129000 2 27500000 2 169 116 -K11 -0 12129000 2 27500000 2 166 104 -K12 -0 12129000 2 27500000 2 167 108 -K2 -0 12129000 2 27500000 2 161 84 -K3 -0 12129000 2 27500000 2 162 88 -K4 -0 12129000 2 27500000 2 163 92 -K5 -0 12129000 2 27500000 2 164 96 -K6 -0 12129000 2 27500000 2 165 100 -K7 -0 12129000 2 27500000 2 166 104 -K8 -0 12129000 2 27500000 2 167 108 -K9 -0 12129000 2 27500000 2 168 112 -BD 1 -0 12148000 4 27500000 2 1791 1792 -BD 3/PARTNER TV -0 12148000 4 27500000 2 511 512 -BD 4 -0 12148000 4 27500000 2 2047 2048 -BD_DVB -0 12148000 4 27500000 2 1023 1024 -BetaBC -0 12148000 4 27500000 2 1535 1536 -Bloomberg -0 12168000 2 27500000 2 167 112 -TCM -0 12168000 2 27500000 2 169 64 -TCM. -0 12168000 2 27500000 2 164 96 -TVBS -0 12168000 2 27500000 2 162 88 -CANALPRO TV -0 12207000 2 27500000 2 170 120 -EURONEWS -0 12207000 2 27500000 2 164 96 -PLANETE 2 -0 12207000 2 27500000 2 166 104 -TV BREIZH -0 12207000 2 27500000 2 161 84 -ESTILO -0 12246000 2 27500000 2 165 100 -EUROSPORT -0 12246000 2 27500000 2 164 96 -NICK-PARAMOUNT -0 12246000 2 27500000 2 167 108 -SEASONS -0 12246000 2 27500000 2 170 120 -TAQUILLA 11 -0 12246000 2 27500000 2 169 116 -TAQUILLA 6 -0 12246000 2 27500000 2 161 84 -TAQUILLA 7 -0 12246000 2 27500000 2 162 88 -TAQUILLA 8 -0 12246000 2 27500000 2 163 92 -TAQUILLA 9 -0 12246000 2 27500000 2 171 124 -VIAJAR -0 12246000 2 27500000 2 166 104 -AB 1 -0 12266000 4 27500000 2 161 84 -ACTION -0 12266000 4 27500000 2 170 120 -ANIMAUX -0 12266000 4 27500000 2 162 88 -ENCYCLOPEDIA -0 12266000 4 27500000 2 163 92 -ESCALES -0 12266000 4 27500000 2 165 100 -FIT/CHAINE HISTOIRE -0 12266000 4 27500000 2 166 104 -MANGA -0 12266000 4 27500000 2 171 124 -RFM-TV -0 12266000 4 27500000 2 168 112 -CNBC-NBC -0 12287000 2 27500000 2 162 88 -DISNEY CH. +1 -0 12287000 2 27500000 2 171 124 -DOCUMANÍA -0 12287000 2 27500000 2 160 80 -FOX KIDS -0 12287000 2 27500000 2 161 84 -Playhouse Disney -0 12287000 2 27500000 2 172 128 -TAQUILLA 1 -0 12287000 2 27500000 2 166 104 -TAQUILLA 14 -0 12287000 2 27500000 2 176 144 -TAQUILLA 2 -0 12287000 2 27500000 2 167 108 -TAQUILLA X -0 12287000 2 27500000 2 170 120 -TOON DISNEY -0 12287000 2 27500000 2 173 132 -Animal Planet -0 12304000 4 27500000 2 702 703 -Animal Planet Cze -0 12304000 4 27500000 2 706 707 -Duna TV -0 12304000 4 27500000 2 168 108 -Eurosport News -0 12304000 4 27500000 2 167 106 -FoxKids -0 12304000 4 27500000 2 163 90 -Hallmark -0 12304000 4 27500000 2 161 84 -HBO Cze -0 12304000 4 27500000 2 164 96 -MTV Classic -0 12304000 4 27500000 2 165 98 -MTV Polska -0 12304000 4 27500000 2 166 104 -Sport 1 Hun -0 12304000 4 27500000 2 169 110 -TCM Cartoon -0 12304000 4 27500000 2 162 88 -Viasat 3 -0 12304000 4 27500000 2 160 80 -CANAL CLUB -0 12324000 2 27500000 2 160 80 -Animal Planet -0 12344000 4 27500000 2 164 96 -Discovery -0 12344000 4 27500000 2 162 88 -NGC -0 12344000 4 27500000 2 161 84 -RTL4 -0 12344000 4 27500000 2 160 80 -RTL5 -0 12344000 4 27500000 2 163 92 -Club -0 12382000 4 27500000 2 162 88 -Discovery -0 12382000 4 27500000 2 163 90 -FilmmÂuzeum -0 12382000 4 27500000 2 165 98 -Fox Kids CE -0 12382000 4 27500000 2 166 104 -HBO Hun -0 12382000 4 27500000 2 161 82 -National Geographic -0 12382000 4 27500000 2 164 96 -TA3 -0 12382000 4 27500000 2 167 106 -TCM Cartoon CE -0 12382000 4 27500000 2 170 114 -13EME RUE -0 12402000 2 27500000 2 162 88 -CINECLASSICS -0 12402000 2 27500000 2 168 112 -COMEDIE ! -0 12402000 2 27500000 2 161 84 -CSAT -0 12402000 2 27500000 2 169 116 -DEMAIN ! -0 12402000 2 27500000 2 160 80 -FOX KIDS -0 12402000 2 27500000 2 164 96 -GAME ONE -0 12402000 2 27500000 2 167 108 -KIOSQUE -0 12402000 2 27500000 2 163 92 -L'EQUIPE TV -0 12402000 2 27500000 2 165 100 -PLANETE FUTURE -0 12402000 2 27500000 2 166 104 -RFO SAT -0 12402000 2 27500000 2 164 96 -C+ Blauw -0 12515000 4 22000000 2 161 84 -C+ Rood -0 12515000 4 22000000 2 160 80 -C+16/9 -0 12515000 4 22000000 2 166 104 -NED1 -0 12515000 4 22000000 2 162 88 -NED2 -0 12515000 4 22000000 2 163 92 -NED3 -0 12515000 4 22000000 2 164 96 -The Studio -0 12515000 4 22000000 2 167 108 -X-ZONE -0 12515000 4 22000000 2 165 87 -AXN -0 12522000 2 22000000 2 166 104 -CINEMANÍA -0 12522000 2 22000000 2 160 80 -CINEMANÍA AZUL -0 12522000 2 22000000 2 161 84 -FOX -0 12522000 2 22000000 2 167 108 -TAQUILLA 3 -0 12522000 2 22000000 2 162 88 -TAQUILLA 4 -0 12522000 2 22000000 2 163 92 -TAQUILLA 5 -0 12522000 2 22000000 2 164 96 -Kindernet/Veronica -0 12574000 4 22000000 2 166 104 -NET5 -0 12574000 4 22000000 2 165 100 -SBS6 -0 12574000 4 22000000 2 160 80 -TMF -0 12574000 4 22000000 2 162 88 -V8/Fox Kids -0 12574000 4 22000000 2 163 92 -Yorin -0 12574000 4 22000000 2 161 84 -CINEMANÍA ROJO -0 12581000 2 22000000 2 165 100 -TAQUILLA 12 -0 12581000 2 22000000 2 168 112 -TAQUILLA 12 -0 12581000 2 22000000 2 172 128 -TAQUILLA X -0 12581000 2 22000000 2 163 92 -TAQUILLA XX -0 12581000 2 22000000 2 161 84 -TAQUILLA XY -0 12581000 2 22000000 2 162 88 -ORF 1 -0 12692000 4 22000000 2 160 161 -ORF 2 -0 12692000 4 22000000 2 500 501 -ORF 2 B -0 12692000 4 22000000 2 500 501 -ORF 2 K -0 12692000 4 22000000 2 500 501 -ORF 2 N -0 12692000 4 22000000 2 500 501 -ORF 2 O -0 12692000 4 22000000 2 500 501 -ORF 2 S -0 12692000 4 22000000 2 500 501 -ORF 2 St -0 12692000 4 22000000 2 500 501 -ORF 2 T -0 12692000 4 22000000 2 500 501 -ORF 2 V -0 12692000 4 22000000 2 500 501 -ORF 2 W -0 12692000 4 22000000 2 500 501 -MTV 2 -0 12699000 2 22000000 2 3091 3092 -MTV 2. -0 12699000 2 22000000 2 3091 3092 -MTV Base -0 12699000 2 22000000 2 3051 3052 -MTV Base. -0 12699000 2 22000000 2 3051 3052 -MTV ESP -0 12699000 2 22000000 2 3011 3012 -MTV F -0 12699000 2 22000000 2 3021 3022 -MTV HITS -0 12699000 2 22000000 2 3041 3042 -MTV HITS. -0 12699000 2 22000000 2 3041 3042 -MTV2 Pop Channel -0 12699000 2 22000000 2 3081 3082 -VH1 -0 12699000 2 22000000 2 3061 3062 -VH1 Classic -0 12699000 2 22000000 2 3071 3072 -10.722 H -2 10734000 4 29900000 2 1005 1205 -Cinenova -2 10734000 4 29900000 2 1003 1203 -Cinenova 2 -2 10734000 4 29900000 2 1002 1202 -Deepam TV -2 10734000 4 29900000 2 1006 1206 -EWTN -2 10734000 4 29900000 2 1001 1201 -MTA INTL -2 10734000 4 29900000 2 1004 1204 -BOULH -2 10949000 2 27500000 2 7488 7489 -HSE Italia -2 10983000 2 27500000 2 522 750 -s.verde -2 10983000 2 27500000 2 2689 2690 -CNN -2 11054000 4 27500000 2 540 542 -RTL A -2 11054000 4 27500000 2 580 584 -VOX CH -2 11054000 4 27500000 2 500 501 -ZDF -2 11054000 4 27500000 2 570 571 -Kurdsat -2 11095000 4 27500000 2 38 41 -New Live Channel CNL -2 11095000 4 27500000 2 51 52 -NOELLO SAT -2 11095000 4 27500000 2 4194 4195 -professional TV -2 11095000 4 27500000 2 32 47 -Sailing Channel -2 11095000 4 27500000 2 37 34 -Spice Platinum -2 11095000 4 27500000 2 2901 2911 -TVN -2 11178000 4 22000000 2 512 650 -DW-tv -2 11196000 2 9100000 2 101 102 -Testcard -2 11205000 4 4000000 2 4130 4131 -Techniczny 2 -2 11406000 2 27500000 2 515 680 -TVN -2 11406000 2 27500000 2 512 650 -TVN 24 -2 11406000 2 27500000 2 513 660 -TVN 7 -2 11406000 2 27500000 2 514 670 -RAI INTERNATIONAL -2 11464000 2 4400000 2 512 650 -ARD "Das Erste" -2 11604000 4 27500000 2 172 173 -DeeJay TV -2 11604000 4 27500000 2 160 161 -DW-TV -2 11604000 4 27500000 2 1000 1001 -K-TV -2 11604000 4 27500000 2 711 712 -RTL 2 CH -2 11604000 4 27500000 2 175 176 -Super RTL A -2 11604000 4 27500000 2 180 181 -VIVA polska -2 11604000 4 27500000 2 190 191 -102.5 HIT Ch -2 11623000 2 27500000 2 224 244 -123SAT/69XTV -2 11623000 2 27500000 2 230 250 -Cartoon Network -2 11623000 2 27500000 2 3401 3411 -Channel SUN -2 11623000 2 27500000 2 229 249 -KHALIFA TV -2 11623000 2 27500000 2 228 248 -PRO SAT -2 11623000 2 27500000 2 226 246 -TLC SAT -2 11623000 2 27500000 2 225 245 -TV ROMANIA -2 11623000 2 27500000 2 227 247 -Ultra Blue TV -2 11623000 2 27500000 2 223 243 -Bloomberg European T -2 11647000 4 27500000 2 1360 1320 -Bloomberg French TV -2 11647000 4 27500000 2 1160 1120 -Bloomberg German TV -2 11647000 4 27500000 2 1460 1420 -Bloomberg Italian TV -2 11647000 4 27500000 2 1260 1220 -Tel Sell Homeshoppin -2 11647000 4 27500000 2 1760 1720 -Test -2 11647000 4 27500000 2 1660 1620 -EDTV 1 -2 11747000 4 27500000 2 4130 4131 -EDTV BUSINESS -2 11747000 4 27500000 2 4642 4643 -EDTV DRAMA -2 11747000 4 27500000 2 4898 4899 -EDTV SPORT -2 11747000 4 27500000 2 4386 4387 -TEST -2 11747000 4 27500000 2 7970 7971 -Canale Lavoro -2 11766000 2 27500000 2 516 654 -RAI1 -2 11766000 2 27500000 2 160 80 -RAI2 -2 11766000 2 27500000 2 161 84 -RAI3 -2 11766000 2 27500000 2 162 88 -RAILAB -2 11766000 2 27500000 2 517 655 -RaiMed -2 11766000 2 27500000 2 515 653 -RAIMOSAICO -2 11766000 2 27500000 2 164 96 -SENATO ITALIANO -2 11766000 2 27500000 2 163 92 -CANAL 24 HORAS -2 11789000 4 27500000 2 3569 3570 -CANAL CLASICO -2 11789000 4 27500000 2 3529 3530 -HISPAVISION -2 11789000 4 27500000 2 3545 3546 -LIBRE - CARTA -2 11789000 4 27500000 2 3577 3578 -NOSTALGIA -2 11789000 4 27500000 2 3561 3562 -TELEDEPORTE -2 11789000 4 27500000 2 3537 3538 -TVE ASIA-AFRICA -2 11789000 4 27500000 2 3553 3554 -TVE INTERNACIONAL -2 11789000 4 27500000 2 3521 3522 -CAMERA DEPUTATI -2 11804000 2 27500000 2 517 655 -RAIeducational -2 11804000 2 27500000 2 514 652 -RAINettunoSAT1 -2 11804000 2 27500000 2 519 657 -RAINettunoSAT2 -2 11804000 2 27500000 2 513 651 -RAINews24 -2 11804000 2 27500000 2 516 654 -RAISPORTSAT -2 11804000 2 27500000 2 512 650 -SAT2000 -2 11804000 2 27500000 2 518 656 -TELEPACE -2 11804000 2 27500000 2 515 653 -Stream1 -2 11843000 2 27500000 2 512 650 -snai -2 11881000 2 27500000 2 2561 2562 -stream news -2 11881000 2 27500000 2 2305 2306 -C5 -2 11919000 2 27500000 2 513 660 -I1 -2 11919000 2 27500000 2 512 650 -R4 -2 11919000 2 27500000 2 514 670 -IQRA -2 12015000 4 27500000 2 520 730 -LBC EUROPE -2 12015000 4 27500000 2 517 700 -MA3 -2 12015000 4 27500000 2 522 750 -C. Milagro -2 12092000 4 27500000 2 4368 4369 -Fiesta -2 12092000 4 27500000 2 4432 4433 -Italiasat -2 12092000 4 27500000 2 4520 4521 -LiveSex -2 12092000 4 27500000 2 4660 4661 -Maharaji -2 12092000 4 27500000 2 4416 4417 -Sex-View -2 12092000 4 27500000 2 4630 4631 -Telesierra -2 12092000 4 27500000 2 4160 4161 -Tizianasat -2 12092000 4 27500000 2 4600 4601 -UBN -2 12092000 4 27500000 2 3260 3220 -AL JAZEERA -2 12111000 2 27500000 2 270 271 -Alice -2 12111000 2 27500000 2 351 352 -ARM 1 -2 12111000 2 27500000 2 240 241 -Coming Soon TV -2 12111000 2 27500000 2 310 311 -HB CHANNEL -2 12111000 2 27500000 2 200 201 -Leonardo -2 12111000 2 27500000 2 355 356 -Nuvolari -2 12111000 2 27500000 2 358 359 -TV MODA -2 12111000 2 27500000 2 220 221 -AH-EDP1 -2 12149000 2 27500000 2 96 900 -Alice -2 12149000 2 27500000 2 160 161 -GAY.TV -2 12149000 2 27500000 2 36 37 -Leonardo -2 12149000 2 27500000 2 128 130 -Nuvolari -2 12149000 2 27500000 2 176 177 -TV7 Tunis -2 12149000 2 27500000 2 112 113 -AUGUST -2 12188000 2 27500000 2 3713 3714 -BALKANIA TV -2 12188000 2 27500000 2 3969 3970 -ERT SAT -2 12188000 2 27500000 2 514 652 -EXTRA -2 12188000 2 27500000 2 516 654 -OTE PROMO -2 12188000 2 27500000 2 517 655 -RTS SAT -2 12188000 2 27500000 2 519 657 -TRIAL -2 12188000 2 27500000 2 513 651 -TV MAGIC -2 12188000 2 27500000 2 3584 3585 -Acasa TV -2 12197000 4 12128000 2 1260 1220 -PRO TV -2 12197000 4 12128000 2 1160 1120 -PRO TV -2 12197000 4 12128000 2 1160 1120 -ProTv Intl ENG -2 12197000 4 12128000 2 1360 1322 -ARIRANG TV -2 12220000 4 6161000 2 33 34 -BK TV -2 12220000 4 6161000 2 3105 3106 -Ch-3 Arabic IBA TV -2 12220000 4 6161000 2 1057 1058 -DCTV-german -2 12235000 2 13400000 2 1160 1123 -DCTV-german -2 12235000 2 13400000 2 1160 1123 -AJARA TV -2 12245000 4 27500000 2 127 137 -CFI PECO PRO -2 12245000 4 27500000 2 121 131 -FASHION -2 12245000 4 27500000 2 123 133 -XXP -2 12265000 2 27500000 2 1660 1620 -BVN-TV -2 12303000 2 27500000 2 209 210 -COUNTDOWN -2 12303000 2 27500000 2 235 236 -KURDISTAN TV -2 12303000 2 27500000 2 225 226 -MAGIC -2 12303000 2 27500000 2 245 246 -NAPOLI INT. -2 12303000 2 27500000 2 240 241 -RTB INTERNATIONAL -2 12303000 2 27500000 2 198 199 -SLO-TV1 -2 12303000 2 27500000 2 200 201 -TBNE -2 12303000 2 27500000 2 230 231 -TELSELL -2 12303000 2 27500000 2 205 206 -Abu Dhabi TV -2 12380000 2 27500000 2 3024 3034 -Bangla TV -2 12380000 2 27500000 2 3301 3311 -EQUIDIA PRO -2 12380000 2 27500000 2 3321 3331 -EQUIDIA PRO P1 -2 12380000 2 27500000 2 321 0 -EQUIDIA PRO P2 -2 12380000 2 27500000 2 322 0 -RTV MONTENEGRO -2 12380000 2 27500000 2 3026 3036 -SAT 7 -2 12380000 2 27500000 2 3001 3011 -SERTE TEST 2 -2 12380000 2 27500000 2 3025 3035 -SYRIAN TV -2 12380000 2 27500000 2 3022 3032 -SRG SSR SAT Access -2 12399000 4 27500000 2 165 98 -AL-ALAM -2 12437000 4 27500000 2 165 90 -IRIB1 ENG -2 12437000 4 27500000 2 160 81 -IRIB1 PER -2 12437000 4 27500000 2 160 80 -IRIB2 ENG -2 12437000 4 27500000 2 161 83 -IRIB2 PER -2 12437000 4 27500000 2 161 82 -IRINN -2 12437000 4 27500000 2 164 88 -SAHAR1 -2 12437000 4 27500000 2 162 84 -SAHAR2 -2 12437000 4 27500000 2 163 86 -2M Maroc -2 12476000 4 27500000 2 601 602 -ARY DIGITAL -2 12476000 4 27500000 2 650 651 -B4U Movies -2 12476000 4 27500000 2 656 657 -EbS -2 12476000 4 27500000 2 101 201 -LibertyTV.com -2 12476000 4 27500000 2 941 942 -MOU.2 -2 12476000 4 27500000 2 42 43 -PINK PLUS -2 12476000 4 27500000 2 308 256 -Zee Cinema -2 12476000 4 27500000 2 915 916 -Zee TV -2 12476000 4 27500000 2 910 911 -CALABRIASAT -2 12520000 2 27500000 2 52 53 -HRT-TV1 -2 12520000 2 27500000 2 100 101 -LIGURIA SAT -2 12520000 2 27500000 2 407 408 -NILE TV -2 12520000 2 27500000 2 56 57 -SARDEGNA UNO -2 12520000 2 27500000 2 503 504 -SET -2 12520000 2 27500000 2 501 502 -TELESPAZIO TEST -2 12520000 2 27500000 2 98 99 -VIDEOLINA -2 12520000 2 27500000 2 515 516 -Bulgaria TV -2 12540000 4 27500000 2 4612 4613 -MEDIOLANUM -2 12540000 4 27500000 2 1131 1132 -sisal -2 12540000 4 27500000 2 4356 4357 -24ore.tv -2 12558000 2 27500000 2 6916 6917 -CNES-Toulouse -2 12558000 2 27500000 2 6143 6142 -ESP Dutch -2 12558000 2 27500000 2 2577 2564 -ESP News Eng -2 12558000 2 27500000 2 2825 2823 -Q-CHANNEL -2 12558000 2 27500000 2 1037 1039 -ANN -2 12597000 2 27500000 2 161 84 -BBC World -2 12597000 2 27500000 2 163 92 -CNNI -2 12597000 2 27500000 2 168 112 -EuroNews -2 12597000 2 27500000 2 2221 2233 -JSTV 1 -2 12597000 2 27500000 2 2000 2001 -JSTV 2 -2 12597000 2 27500000 2 2011 2012 -MBC -2 12597000 2 27500000 2 160 80 -Al manar -2 12654000 4 27500000 2 1060 1020 -ESC -2 12654000 4 27500000 2 1860 1820 -Kuwait -2 12654000 4 27500000 2 1460 1420 -Libya -2 12654000 4 27500000 2 1560 1520 -Oman -2 12654000 4 27500000 2 1760 1720 -Qatar -2 12654000 4 27500000 2 1260 1220 -Saudi 1 -2 12654000 4 27500000 2 1360 1320 -Sharjah -2 12654000 4 27500000 2 1160 1120 -Sudan -2 12654000 4 27500000 2 1660 1620 -3ABN -2 12673000 2 27500000 2 210 211 -GAME NETWORK -2 12673000 2 27500000 2 291 292 -Jordan Tv -2 12673000 2 27500000 2 310 311 -Studio Europa -2 12673000 2 27500000 2 230 231 -Telemarket -2 12673000 2 27500000 2 350 351 -TEST -2 12673000 2 27500000 2 360 361 -Thai TV5 -2 12673000 2 27500000 2 200 201 -Video Italia -2 12673000 2 27500000 2 340 341 -ABsat PROMO -2 12692000 4 27500000 2 169 116 -ONYX -2 12692000 4 27500000 2 161 84 -PASSIONS -2 12692000 4 27500000 2 160 80 -DISCOVERY -2 10719000 2 27500000 2 161 84 -PLANETE -2 10719000 2 27500000 2 165 100 -RTL7 -2 10719000 2 27500000 2 162 88 -SEASONS -2 10719000 2 27500000 2 166 104 -TVN -2 10719000 2 27500000 2 160 80 -VIVA Polska -2 10719000 2 27500000 2 167 108 -Cinéstar 1 -2 10757000 2 27500000 2 120 130 -Cinéstar 2 -2 10757000 2 27500000 2 220 230 -Cinétoile -2 10757000 2 27500000 2 320 330 -Club Téléachat -2 10757000 2 27500000 2 920 930 -FUN TV -2 10757000 2 27500000 2 620 630 -Shopping Avenue -2 10757000 2 27500000 2 420 430 -Série Club -2 10757000 2 27500000 2 520 530 -Teva -2 10757000 2 27500000 2 720 730 -Festival -2 10796000 2 27500000 2 420 430 -Histoire -2 10796000 2 27500000 2 520 530 -Infosport -2 10796000 2 27500000 2 120 130 -Loft Story -2 10796000 2 27500000 2 320 330 -Odyssée -2 10796000 2 27500000 2 720 730 -Régions -2 10796000 2 27500000 2 220 230 -TFJ -2 10796000 2 27500000 2 1020 1030 -TV5 -2 10796000 2 27500000 2 920 930 -Télétoon -2 10796000 2 27500000 2 620 630 -CREDIT AGRICOLE -2 10834000 2 27500000 2 5321 5333 -EUROSPORT -2 10834000 2 27500000 2 220 230 -FRANCE 2 -2 10834000 2 27500000 2 320 330 -FRANCE 3 -2 10834000 2 27500000 2 520 530 -I TELEVISION -2 10834000 2 27500000 2 820 830 -LCI -2 10834000 2 27500000 2 120 130 -TPS star -2 10834000 2 27500000 2 420 430 -ALLO CINE INFO -2 10873000 2 27500000 2 520 530 -BBC PRIME -2 10873000 2 27500000 2 620 630 -EQUIDIA -2 10873000 2 27500000 2 320 330 -ESPN CLASSIC SPORT -2 10873000 2 27500000 2 420 430 -LA CHAINE PARLEMENTA -2 10873000 2 27500000 2 1020 1030 -RTM -2 10873000 2 27500000 2 120 130 -SIC -2 10873000 2 27500000 2 220 230 -TV BREIZH -2 10873000 2 27500000 2 720 730 -ALE KINO! -2 10892000 4 27500000 2 164 96 -AVANTE -2 10892000 4 27500000 2 169 114 -CANAL+ -2 10892000 4 27500000 2 160 80 -CANAL+ NIEBIESKI -2 10892000 4 27500000 2 168 112 -CANAL+ ZOLTY -2 10892000 4 27500000 2 161 85 -FOX KIDS -2 10892000 4 27500000 2 162 88 -MINIMAX -2 10892000 4 27500000 2 165 100 -TMT -2 10892000 4 27500000 2 163 92 -TVP 1 -2 10892000 4 27500000 2 166 104 -TVP 2 -2 10892000 4 27500000 2 167 108 -Cinéfaz -2 10911000 2 27500000 2 220 230 -Multivision -2 10911000 2 27500000 2 320 330 -TF6 -2 10911000 2 27500000 2 720 730 -TPS star -2 10911000 2 27500000 2 120 130 -AnimalPlanet -2 10930000 4 27500000 2 517 700 -Appl. Ch -2 10930000 4 27500000 2 516 690 -Big Bro -2 10930000 4 27500000 2 512 650 -Big Bro -2 10930000 4 27500000 2 515 680 -CNBC -2 10930000 4 27500000 2 513 660 -FILM SAT -2 10930000 4 27500000 2 518 710 -Nat. Geo -2 10930000 4 27500000 2 513 660 -NOVA CINE -2 10930000 4 27500000 2 514 670 -SS Extra -2 10930000 4 27500000 2 516 690 -Test -2 10930000 4 27500000 2 516 690 -Test -2 10930000 4 27500000 2 516 690 -ALPHA TV -2 10949000 2 27500000 2 7456 7457 -ALPHA CINEMA 1 -2 10949000 2 27500000 2 7476 7477 -ALPHA KIDS -2 10949000 2 27500000 2 7464 7465 -ALPHA PROMO -2 10949000 2 27500000 2 7452 7453 -ALPHA SPORTS 1 -2 10949000 2 27500000 2 7468 7469 -ALPHA SPORTS 2 -2 10949000 2 27500000 2 7472 7473 -ALPHA TEST 1 -2 10949000 2 27500000 2 7460 7461 -ÂÏÕËÇ -2 10949000 2 27500000 2 7496 7497 -ÐÏËÉÓ TV -2 10949000 2 27500000 2 7492 7493 -mtch -2 10983000 2 27500000 2 2817 2818 -ALGERIAN TV -2 11034000 2 27500000 2 1020 1030 -ARTE -2 11034000 2 27500000 2 420 430 -FRANCE 5 -2 11034000 2 27500000 2 120 130 -M6 -2 11034000 2 27500000 2 520 530 -PARIS PREMIERE -2 11034000 2 27500000 2 820 830 -RFO SAT -2 11034000 2 27500000 2 320 330 -TF1 -2 11034000 2 27500000 2 220 230 -TF1 -2 11034000 2 27500000 2 620 630 -Bloomberg -2 11241000 2 27500000 2 162 88 -MTV 1 -2 11241000 2 27500000 2 165 100 -MTV 5 -2 11241000 2 27500000 2 169 116 -MTV F -2 11241000 2 27500000 2 168 112 -MTV H -2 11241000 2 27500000 2 164 96 -MTV Nordic -2 11241000 2 27500000 2 163 92 -MTV2 Pop Channel -2 11241000 2 27500000 2 160 80 -NL Test -2 11241000 2 27500000 2 161 84 -Program 8 / SF -2 11241000 2 27500000 2 167 108 -VH1 -2 11241000 2 27500000 2 166 104 -DISNEY CHANNEL -2 11262000 4 27500000 2 1030 1034 -PLANET -2 11262000 4 27500000 2 1100 1104 -SEASONS -2 11262000 4 27500000 2 1040 1044 -STUDIO UNIVERSAL -2 11262000 4 27500000 2 1050 1054 -CYFRA+ INFO -2 11283000 2 27500000 2 163 92 -EUROSPORT -2 11283000 2 27500000 2 162 88 -FORMULA 1 -2 11283000 2 27500000 2 168 116 -HALLMARK -2 11283000 2 27500000 2 161 84 -HBO -2 11283000 2 27500000 2 160 80 -HBO -2 11283000 2 27500000 2 160 80 -MTV CLASSIC -2 11283000 2 27500000 2 165 100 -NATIONAL GEO -2 11283000 2 27500000 2 166 104 -REALITY TV -2 11283000 2 27500000 2 167 108 -TVN 24 -2 11283000 2 27500000 2 164 96 -ADVENTURE 1 -2 11311000 4 30000000 2 859 860 -AVANTE -2 11311000 4 30000000 2 855 856 -CARTOON / TCM -2 11311000 4 30000000 2 875 876 -CLUB -2 11311000 4 30000000 2 871 872 -CNBC Europe -2 11311000 4 30000000 2 895 896 -EXTREME SPORTS -2 11311000 4 30000000 2 879 880 -NATIONAL GEOGRAPHIC -2 11311000 4 30000000 2 863 864 -PAOK Channel -2 11311000 4 30000000 2 891 892 -PLAYBOY / SPICE -2 11311000 4 30000000 2 887 888 -PRIVATE BLUE / GOLD -2 11311000 4 30000000 2 883 884 -REALITY -2 11311000 4 30000000 2 867 868 -Multivision 1 -2 11661000 2 27500000 2 120 130 -Multivision 2 -2 11661000 2 27500000 2 220 230 -Multivision 3 -2 11661000 2 27500000 2 320 330 -Multivision 4 -2 11661000 2 27500000 2 420 430 -Multivision 5 -2 11661000 2 27500000 2 520 530 -Multivision 6 -2 11661000 2 27500000 2 620 630 -Multivision 7 -2 11661000 2 27500000 2 720 730 -AB 1 -2 11681000 4 27500000 2 160 80 -AB MOTEURS -2 11681000 4 27500000 2 161 84 -ACTION -2 11681000 4 27500000 2 169 116 -ANIMAUX -2 11681000 4 27500000 2 162 88 -CHASSE & PECHE -2 11681000 4 27500000 2 163 92 -ENCYCLOPEDIA -2 11681000 4 27500000 2 171 124 -ESCALES -2 11681000 4 27500000 2 166 104 -FIT/CHAINE HISTOIRE -2 11681000 4 27500000 2 167 108 -MANGAS -2 11681000 4 27500000 2 170 120 -MUSIQUE CLASSIQUE -2 11681000 4 27500000 2 165 100 -RFM-TV -2 11681000 4 27500000 2 168 112 -RTL9 -2 11681000 4 27500000 2 172 128 -XXL -2 11681000 4 27500000 2 164 96 -cart -2 11843000 2 27500000 2 2433 2434 -cult -2 11843000 2 27500000 2 2307 2308 -disc -2 11843000 2 27500000 2 2436 2437 -ersp -2 11843000 2 27500000 2 2317 2309 -tvl -2 11843000 2 27500000 2 2439 2440 -univ -2 11843000 2 27500000 2 2305 2306 -MOSAICO -2 11862000 4 27500000 2 160 0 -P8 -2 11862000 4 27500000 2 163 96 -P9 -2 11862000 4 27500000 2 162 88 -P9 OFDM -2 11862000 4 27500000 2 162 88 -cnn -2 11881000 2 27500000 2 2433 2434 -euro -2 11881000 2 27500000 2 2311 2312 -info -2 11881000 2 27500000 2 517 700 -MPPV_PFShow -2 11881000 2 27500000 2 2563 2564 -viag -2 11881000 2 27500000 2 2308 2309 -CANAL D+ -2 11900000 4 27500000 2 165 100 -INTER CH. -2 11900000 4 27500000 2 163 92 -MILAN CH. -2 11900000 4 27500000 2 162 88 -MOSAICO -2 11900000 4 27500000 2 160 0 -TST3 -2 11900000 4 27500000 2 164 96 -Test -2 11919000 2 27500000 2 515 680 -E5500 Test -2 11938000 4 27500000 2 34 33 -E5710 Test -2 11938000 4 27500000 2 308 256 -NTV Int.-Detsky Mir -2 11938000 4 27500000 2 162 84 -NTV Int.-HTB -2 11938000 4 27500000 2 160 80 -NTV Int.-Nashe Kino -2 11938000 4 27500000 2 161 82 -RTV -2 11938000 4 27500000 2 101 89 -DISCOVERY -2 11958000 2 27500000 2 161 84 -DISNEY CHANNEL -2 11958000 2 27500000 2 160 80 -EUROSPORT -2 11958000 2 27500000 2 162 88 -HAPPY CHANNEL -2 11958000 2 27500000 2 163 92 -MATCH MUSIC -2 11958000 2 27500000 2 164 96 -MTV -2 11958000 2 27500000 2 165 100 -RaiSat CINEMA -2 11958000 2 27500000 2 166 104 -RaiSat SHOW -2 11958000 2 27500000 2 167 108 -cine movie -2 11976000 4 27500000 2 2691 2692 -cine stream -2 11976000 4 27500000 2 2689 2690 -s.verde -2 11976000 4 27500000 2 2561 2562 -Stream2 -2 11976000 4 27500000 2 2433 2434 -mtch -2 11977000 4 27500000 2 2435 2436 -s.verde -2 11977000 4 27500000 2 2561 2562 -CLASSICA -2 11996000 2 27500000 2 160 80 -HALLMARK -2 11996000 2 27500000 2 163 92 -La 7 -2 11996000 2 27500000 2 166 104 -RaiSat ALBUM -2 11996000 2 27500000 2 162 88 -RaiSat ART -2 11996000 2 27500000 2 164 96 -RaiSat FICTION -2 11996000 2 27500000 2 165 100 -RaiSat GAMBERO -2 11996000 2 27500000 2 161 84 -TMC2 -2 11996000 2 27500000 2 167 108 -ALGERIAN TV -2 12015000 4 27500000 2 521 740 -ART CHILDREN/TARAB -2 12015000 4 27500000 2 513 660 -ART MOVIES -2 12015000 4 27500000 2 514 670 -ART MUSIC -2 12015000 4 27500000 2 515 680 -ART SPORT -2 12015000 4 27500000 2 519 720 -LBC EUROPE -2 12015000 4 27500000 2 165 100 -NILE DRAMA -2 12015000 4 27500000 2 516 690 -NILE VARIETY -2 12015000 4 27500000 2 518 710 -VARIETY EUROPE -2 12015000 4 27500000 2 512 650 -CARTOON Network -2 12034000 2 27500000 2 167 108 -RaiSat RAGAZZI -2 12034000 2 27500000 2 166 104 -T+ 16:9 -2 12034000 2 27500000 2 164 96 -T+ BIANCO -2 12034000 2 27500000 2 160 80 -T+ GRIGIO -2 12034000 2 27500000 2 162 88 -T+ NERO -2 12034000 2 27500000 2 161 84 -VETRINA -2 12034000 2 27500000 2 165 100 -BBC -2 12053000 4 27500000 2 161 84 -BBC WORLD -2 12053000 4 27500000 2 161 84 -BLOOMBERG -2 12053000 4 27500000 2 162 88 -CNBC -2 12053000 4 27500000 2 163 92 -CNBC -2 12053000 4 27500000 2 163 92 -CNN -2 12053000 4 27500000 2 160 80 -CNN -2 12053000 4 27500000 2 160 80 -ROCK TV -2 12053000 4 27500000 2 165 100 -SKYNews -2 12053000 4 27500000 2 164 96 -TV5 -2 12053000 4 27500000 2 166 104 -TV5 -2 12053000 4 27500000 2 166 104 -P2 -2 12072000 2 27500000 2 163 92 -P3 -2 12072000 2 27500000 2 164 96 -P4 -2 12072000 2 27500000 2 165 100 -P5 -2 12072000 2 27500000 2 166 104 -P6 -2 12072000 2 27500000 2 167 108 -PALCO 16:9 -2 12072000 2 27500000 2 162 88 -Satisfaction -2 12092000 4 27500000 2 4192 4193 -BBC World -2 12169000 4 27500000 2 514 670 -Cartoon -2 12169000 4 27500000 2 515 680 -CCTV -2 12169000 4 27500000 2 516 690 -Discovery -2 12169000 4 27500000 2 512 650 -ET-1 -2 12169000 4 27500000 2 519 720 -MAD T.V -2 12169000 4 27500000 2 518 710 -NET -2 12169000 4 27500000 2 520 730 -SS Extra -2 12169000 4 27500000 2 513 660 -TCM -2 12169000 4 27500000 2 515 680 -ÂïõëÞ -2 12169000 4 27500000 2 517 700 -GOURMET TV -2 12245000 4 27500000 2 126 136 -MCM Europe -2 12245000 4 27500000 2 122 132 -MEZZO -2 12245000 4 27500000 2 125 135 -TTN -2 12245000 4 27500000 2 124 134 -SLO-TV1 -2 12303000 2 27500000 2 200 201 -SLO-TV2 -2 12303000 2 27500000 2 203 204 -P10 -2 12341000 2 27500000 2 160 80 -P11 -2 12341000 2 27500000 2 161 84 -P12 -2 12341000 2 27500000 2 162 88 -P13 -2 12341000 2 27500000 2 163 92 -P14 -2 12341000 2 27500000 2 164 96 -P15 -2 12341000 2 27500000 2 165 100 -P16 -2 12341000 2 27500000 2 166 104 -PREMIUM -2 12341000 2 27500000 2 167 108 -GAME ONE -2 12380000 2 27500000 2 3027 3037 -Paris Première -2 12380000 2 27500000 2 3021 3031 -SF1 -2 12399000 4 27500000 2 160 80 -SF2 -2 12399000 4 27500000 2 163 92 -SFi -2 12399000 4 27500000 2 167 102 -TSI1 -2 12399000 4 27500000 2 162 88 -TSI2 -2 12399000 4 27500000 2 166 100 -TSR1 -2 12399000 4 27500000 2 161 84 -TSR2 -2 12399000 4 27500000 2 164 96 -CANAL JIMMY -2 12418000 2 27500000 2 162 88 -CINECINEMA1 -2 12418000 2 27500000 2 164 96 -CINECINEMA2 -2 12418000 2 27500000 2 165 100 -CINECLASSICS -2 12418000 2 27500000 2 166 104 -INN -2 12418000 2 27500000 2 163 92 -MARCOPOLO -2 12418000 2 27500000 2 160 80 -MARCOPOLO -2 12418000 2 27500000 2 160 80 -PLANETE -2 12418000 2 27500000 2 161 84 -SEASONS -2 12418000 2 27500000 2 167 108 -SEASONS POL -2 12418000 2 27500000 2 167 109 -WISHLINE -2 12418000 2 27500000 2 168 85 -HRT-TV1 -2 12520000 2 27500000 2 100 101 -HRT-TV2 -2 12520000 2 27500000 2 103 104 -HRT-TV3 -2 12520000 2 27500000 2 105 106 -MMOV_PF1 -2 12616000 4 27500000 2 2823 2822 -MMOV_PF2 -2 12616000 4 27500000 2 2825 2824 -MMOV_PF3 -2 12616000 4 27500000 2 2827 2826 -MMOV_PF4 -2 12616000 4 27500000 2 2829 2828 -MMOV_PF5 -2 12616000 4 27500000 2 2831 2830 -MMOV_PF6 -2 12616000 4 27500000 2 2833 2832 -sc 1 -2 12616000 4 27500000 2 2561 2562 -sc 2 -2 12616000 4 27500000 2 2564 2565 -sc 3 -2 12616000 4 27500000 2 2567 2568 -calcio ch. -2 12635000 2 27500000 2 2697 2694 -MMOV_PF10 -2 12635000 2 27500000 2 2565 2564 -MMOV_PF7 -2 12635000 2 27500000 2 2947 2946 -MMOV_PF8 -2 12635000 2 27500000 2 2949 2948 -MMOV_PF9 -2 12635000 2 27500000 2 2563 2562 -sc 4 -2 12635000 2 27500000 2 2689 2690 -sc 5 -2 12635000 2 27500000 2 2696 2692 -CINE PALACE -2 12692000 4 27500000 2 165 100 -ENCYCLOPEDIA -2 12692000 4 27500000 2 163 92 -MANGAS -2 12692000 4 27500000 2 162 88 -MEDYA TV -2 12692000 4 27500000 2 168 112 -POLAR -2 12692000 4 27500000 2 164 96 -RIRE -2 12692000 4 27500000 2 167 108 -ROMANCE -2 12692000 4 27500000 2 166 104 -MMOV_PF11 -2 12713000 2 27500000 2 2818 2819 -MMOV_PF12 -2 12713000 2 27500000 2 2820 2821 -MMOV_PF13 -2 12713000 2 27500000 2 2693 2692 -MMOV_PF14 -2 12713000 2 27500000 2 2691 2690 -MMOV_PF15 -2 12713000 2 27500000 2 2691 2690 -MMOV_PF16 -2 12713000 2 27500000 2 2691 2690 -cfn -2 12731000 4 27500000 2 523 760 -comedy -2 12731000 4 27500000 2 2308 2309 -duel -2 12731000 4 27500000 2 2689 2690 -fox kids -2 12731000 4 27500000 2 2691 2692 -nat geo -2 12731000 4 27500000 2 2693 2694 -roma ch -2 12731000 4 27500000 2 2310 2311 -RTL9 -0 12012000 2 27500000 2 164 96 -CNNI -2 10930000 4 27500000 2 515 680 -FOX NEWS -0 12441000 2 27500000 2 167 108 -FOX NEWS -0 11686000 2 22000000 3 167 108 -BBC WORLD -0 12266000 4 27500000 3 167 108 -Cartoon Network -0 12246000 2 27500000 2 160 80 -Cartoon Network -0 12168000 2 27500000 2 161 84 -MTV 2 -0 11608000 2 22000000 3 3091 3092 -MTV Base -0 11608000 2 22000000 2 3051 3052 -MTV ESP -0 11608000 2 22000000 2 3011 3012 -MTV Hits -0 11608000 2 22000000 2 3041 3042 -VH1 -0 11608000 2 22000000 2 3061 3062 -VH1 Classic -0 11608000 2 22000000 2 3071 3072 -KiKa -0 11954000 4 27500000 3 310 320 -EUROSPORTNEWS -2 11996000 2 27500000 2 168 112 -M6 Music -2 10757000 2 27500000 2 820 830 diff --git a/src/input/Makefile.am b/src/input/Makefile.am index 103c656d8..4985ba18b 100644 --- a/src/input/Makefile.am +++ b/src/input/Makefile.am @@ -3,9 +3,9 @@ ## if HAVE_DVDNAV -SUBDIRS = ost libreal librtsp libdvdread +SUBDIRS = dvb libreal librtsp libdvdread else -SUBDIRS = ost libreal librtsp libdvdread libdvdnav +SUBDIRS = dvb libreal librtsp libdvdread libdvdnav endif LIBTOOL = $(SHELL) $(top_builddir)/libtool-nofpic diff --git a/src/input/ost/Makefile.am b/src/input/dvb/Makefile.am index 7c179a4af..b3682a971 100644 --- a/src/input/ost/Makefile.am +++ b/src/input/dvb/Makefile.am @@ -1,8 +1,6 @@ noinst_HEADERS = \ - demux.h \ dmx.h \ - frontend.h \ - sec.h + frontend.h debug: @list='$(SUBDIRS)'; for subdir in $$list; do \ diff --git a/src/input/dvb/dmx.h b/src/input/dvb/dmx.h new file mode 100644 index 000000000..1c0f990c7 --- /dev/null +++ b/src/input/dvb/dmx.h @@ -0,0 +1,172 @@ +/* + * dmx.h + * + * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> + * & Ralph Metzler <ralph@convergence.de> + for convergence integrated media GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * 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 Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef _DMX_H_ +#define _DMX_H_ + +#ifdef __KERNEL__ +#include <linux/types.h> +#else +#include <stdint.h> +#endif + +#define DMX_FILTER_SIZE 16 + +typedef enum +{ + DMX_OUT_DECODER, /* Streaming directly to decoder. */ + DMX_OUT_TAP, /* Output going to a memory buffer */ + /* (to be retrieved via the read command).*/ + DMX_OUT_TS_TAP /* Output multiplexed into a new TS */ + /* (to be retrieved by reading from the */ + /* logical DVR device). */ +} dmx_output_t; + + +typedef enum +{ + DMX_IN_FRONTEND, /* Input from a front-end device. */ + DMX_IN_DVR /* Input from the logical DVR device. */ +} dmx_input_t; + + +typedef enum +{ + DMX_PES_AUDIO0, + DMX_PES_VIDEO0, + DMX_PES_TELETEXT0, + DMX_PES_SUBTITLE0, + DMX_PES_PCR0, + + DMX_PES_AUDIO1, + DMX_PES_VIDEO1, + DMX_PES_TELETEXT1, + DMX_PES_SUBTITLE1, + DMX_PES_PCR1, + + DMX_PES_AUDIO2, + DMX_PES_VIDEO2, + DMX_PES_TELETEXT2, + DMX_PES_SUBTITLE2, + DMX_PES_PCR2, + + DMX_PES_AUDIO3, + DMX_PES_VIDEO3, + DMX_PES_TELETEXT3, + DMX_PES_SUBTITLE3, + DMX_PES_PCR3, + + DMX_PES_OTHER +} dmx_pes_type_t; + +#define DMX_PES_AUDIO DMX_PES_AUDIO0 +#define DMX_PES_VIDEO DMX_PES_VIDEO0 +#define DMX_PES_TELETEXT DMX_PES_TELETEXT0 +#define DMX_PES_SUBTITLE DMX_PES_SUBTITLE0 +#define DMX_PES_PCR DMX_PES_PCR0 + + +typedef enum +{ + DMX_SCRAMBLING_EV, + DMX_FRONTEND_EV +} dmx_event_t; + + +typedef enum +{ + DMX_SCRAMBLING_OFF, + DMX_SCRAMBLING_ON +} dmx_scrambling_status_t; + + +typedef struct dmx_filter +{ + uint8_t filter[DMX_FILTER_SIZE]; + uint8_t mask[DMX_FILTER_SIZE]; + uint8_t mode[DMX_FILTER_SIZE]; +} dmx_filter_t; + + +struct dmx_sct_filter_params +{ + uint16_t pid; + dmx_filter_t filter; + uint32_t timeout; + uint32_t flags; +#define DMX_CHECK_CRC 1 +#define DMX_ONESHOT 2 +#define DMX_IMMEDIATE_START 4 +#define DMX_KERNEL_CLIENT 0x8000 +}; + + +struct dmx_pes_filter_params +{ + uint16_t pid; + dmx_input_t input; + dmx_output_t output; + dmx_pes_type_t pes_type; + uint32_t flags; +}; + + +struct dmx_event +{ + dmx_event_t event; + time_t timeStamp; + union + { + dmx_scrambling_status_t scrambling; + } u; +}; + +typedef struct dmx_caps { + uint32_t caps; + int num_decoders; +} dmx_caps_t; + +typedef enum { + DMX_SOURCE_FRONT0 = 0, + DMX_SOURCE_FRONT1, + DMX_SOURCE_FRONT2, + DMX_SOURCE_FRONT3, + DMX_SOURCE_DVR0 = 16, + DMX_SOURCE_DVR1, + DMX_SOURCE_DVR2, + DMX_SOURCE_DVR3 +} dmx_source_t; + + +#define DMX_START _IO('o',41) +#define DMX_STOP _IO('o',42) +#define DMX_SET_FILTER _IOW('o',43,struct dmx_sct_filter_params) +#define DMX_SET_PES_FILTER _IOW('o',44,struct dmx_pes_filter_params) +#define DMX_SET_BUFFER_SIZE _IO('o',45) +#define DMX_GET_EVENT _IOR('o',46,struct dmx_event) +#define DMX_GET_PES_PIDS _IOR('o',47,uint16_t[5]) +#define DMX_GET_CAPS _IOR('o',48,dmx_caps_t) +#define DMX_SET_SOURCE _IOW('o',49,dmx_source_t) + +#endif /*_DMX_H_*/ + diff --git a/src/input/dvb/frontend.h b/src/input/dvb/frontend.h new file mode 100644 index 000000000..550d3b42c --- /dev/null +++ b/src/input/dvb/frontend.h @@ -0,0 +1,262 @@ +/* + * frontend.h + * + * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> + * Ralph Metzler <ralph@convergence.de> + * Holger Waechtler <holger@convergence.de> + * Andre Draszik <ad@convergence.de> + * for convergence integrated media GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * 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 Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef _FRONTEND_H_ +#define _FRONTEND_H_ + +#ifdef __KERNEL__ +#include <linux/types.h> +#else +#include <stdint.h> +#endif + + +typedef enum { + FE_QPSK, + FE_QAM, + FE_OFDM +} fe_type_t; + + +typedef enum { + FE_IS_STUPID = 0, + FE_CAN_INVERSION_AUTO = 0x1, + FE_CAN_FEC_1_2 = 0x2, + FE_CAN_FEC_2_3 = 0x4, + FE_CAN_FEC_3_4 = 0x8, + FE_CAN_FEC_4_5 = 0x10, + FE_CAN_FEC_5_6 = 0x20, + FE_CAN_FEC_6_7 = 0x40, + FE_CAN_FEC_7_8 = 0x80, + FE_CAN_FEC_8_9 = 0x100, + FE_CAN_FEC_AUTO = 0x200, + FE_CAN_QPSK = 0x400, + FE_CAN_QAM_16 = 0x800, + FE_CAN_QAM_32 = 0x1000, + FE_CAN_QAM_64 = 0x2000, + FE_CAN_QAM_128 = 0x4000, + FE_CAN_QAM_256 = 0x8000, + FE_CAN_QAM_AUTO = 0x10000, + FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000, + FE_CAN_BANDWIDTH_AUTO = 0x40000, + FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, + FE_CAN_HIERARCHY_AUTO = 0x100000, + FE_CAN_MUTE_TS = 0x80000000, + FE_CAN_CLEAN_SETUP = 0x40000000 +} fe_caps_t; + + +struct dvb_frontend_info { + char name[128]; + fe_type_t type; + uint32_t frequency_min; + uint32_t frequency_max; + uint32_t frequency_stepsize; + uint32_t frequency_tolerance; + uint32_t symbol_rate_min; + uint32_t symbol_rate_max; + uint32_t symbol_rate_tolerance; /* ppm */ + uint32_t notifier_delay; /* ms */ + fe_caps_t caps; +}; + + +/** + * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for + * the meaning of this struct... + */ +struct dvb_diseqc_master_cmd { + uint8_t msg [6]; /* { framing, address, command, data [3] } */ + uint8_t msg_len; /* valid values are 3...6 */ +}; + + +struct dvb_diseqc_slave_reply { + uint8_t msg [4]; /* { framing, data [3] } */ + uint8_t msg_len; /* valid values are 0...4, 0 means no msg */ + int timeout; /* return from ioctl after timeout ms with */ +}; /* errorcode when no message was received */ + + +typedef enum { + SEC_VOLTAGE_13, + SEC_VOLTAGE_18 +} fe_sec_voltage_t; + + +typedef enum { + SEC_TONE_ON, + SEC_TONE_OFF +} fe_sec_tone_mode_t; + + +typedef enum { + SEC_MINI_A, + SEC_MINI_B +} fe_sec_mini_cmd_t; + + +typedef enum { + FE_HAS_SIGNAL = 0x01, /* found something above the noise level */ + FE_HAS_CARRIER = 0x02, /* found a DVB signal */ + FE_HAS_VITERBI = 0x04, /* FEC is stable */ + FE_HAS_SYNC = 0x08, /* found sync bytes */ + FE_HAS_LOCK = 0x10, /* everything's working... */ + FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */ + FE_REINIT = 0x40 /* frontend was reinitialized, */ +} fe_status_t; /* application is recommned to reset */ + /* DiSEqC, tone and parameters */ + +typedef enum { + INVERSION_OFF, + INVERSION_ON, + INVERSION_AUTO +} fe_spectral_inversion_t; + + +typedef enum { + FEC_NONE = 0, + FEC_1_2, + FEC_2_3, + FEC_3_4, + FEC_4_5, + FEC_5_6, + FEC_6_7, + FEC_7_8, + FEC_8_9, + FEC_AUTO +} fe_code_rate_t; + + +typedef enum { + QPSK, + QAM_16, + QAM_32, + QAM_64, + QAM_128, + QAM_256, + QAM_AUTO +} fe_modulation_t; + + +typedef enum { + TRANSMISSION_MODE_2K, + TRANSMISSION_MODE_8K, + TRANSMISSION_MODE_AUTO +} fe_transmit_mode_t; + +typedef enum { + BANDWIDTH_8_MHZ, + BANDWIDTH_7_MHZ, + BANDWIDTH_6_MHZ, + BANDWIDTH_AUTO +} fe_bandwidth_t; + + +typedef enum { + GUARD_INTERVAL_1_32, + GUARD_INTERVAL_1_16, + GUARD_INTERVAL_1_8, + GUARD_INTERVAL_1_4, + GUARD_INTERVAL_AUTO +} fe_guard_interval_t; + + +typedef enum { + HIERARCHY_NONE, + HIERARCHY_1, + HIERARCHY_2, + HIERARCHY_4, + HIERARCHY_AUTO +} fe_hierarchy_t; + + +struct dvb_qpsk_parameters { + uint32_t symbol_rate; /* symbol rate in Symbols per second */ + fe_code_rate_t fec_inner; /* forward error correction (see above) */ +}; + + +struct dvb_qam_parameters { + uint32_t symbol_rate; /* symbol rate in Symbols per second */ + fe_code_rate_t fec_inner; /* forward error correction (see above) */ + fe_modulation_t modulation; /* modulation type (see above) */ +}; + + +struct dvb_ofdm_parameters { + fe_bandwidth_t bandwidth; + fe_code_rate_t code_rate_HP; /* high priority stream code rate */ + fe_code_rate_t code_rate_LP; /* low priority stream code rate */ + fe_modulation_t constellation; /* modulation type (see above) */ + fe_transmit_mode_t transmission_mode; + fe_guard_interval_t guard_interval; + fe_hierarchy_t hierarchy_information; +}; + + +struct dvb_frontend_parameters { + uint32_t frequency; /* (absolute) frequency in Hz for QAM/OFDM */ + /* intermediate frequency in kHz for QPSK */ + fe_spectral_inversion_t inversion; + union { + struct dvb_qpsk_parameters qpsk; + struct dvb_qam_parameters qam; + struct dvb_ofdm_parameters ofdm; + } u; +}; + + +struct dvb_frontend_event { + fe_status_t status; + struct dvb_frontend_parameters parameters; +}; + + + +#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info) + +#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62) +#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd) +#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply) +#define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */ + +#define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */ +#define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */ +#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */ + +#define FE_READ_STATUS _IOR('o', 69, fe_status_t) +#define FE_READ_BER _IOR('o', 70, uint32_t) +#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, uint16_t) +#define FE_READ_SNR _IOR('o', 72, uint16_t) +#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, uint32_t) + +#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters) +#define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters) +#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event) + + +#endif /*_FRONTEND_H_*/ + diff --git a/src/input/input_dvb.c b/src/input/input_dvb.c index 4bf69b4cd..7dd052e54 100644 --- a/src/input/input_dvb.c +++ b/src/input/input_dvb.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2002 the xine project + * Copyright (C) 2000-2003 the xine project * * This file is part of xine, a free video player. * @@ -38,9 +38,9 @@ #include <sys/ioctl.h> #include <sys/poll.h> -#include "ost/dmx.h" -#include "ost/sec.h" -#include "ost/frontend.h" +/* These will eventually be #include <linux/dvb/...> */ +#include "dvb/dmx.h" +#include "dvb/frontend.h" #include "xine_internal.h" #include "xineutils.h" @@ -51,43 +51,34 @@ #define LOG */ -#define FRONTEND_DEVICE "/dev/ost/frontend" -#define SEC_DEVICE "/dev/ost/sec" -#define DEMUX_DEVICE "/dev/ost/demux" -#define DVR_DEVICE "/dev/ost/dvr" +#define FRONTEND_DEVICE "/dev/dvb/adapter0/frontend0" +#define DEMUX_DEVICE "/dev/dvb/adapter0/demux0" +#define DVR_DEVICE "/dev/dvb/adapter0/dvr0" #define BUFSIZE 4096 #define NOPID 0xffff typedef struct { - int fd_frontend; - int fd_sec; - int fd_demuxa, fd_demuxv, fd_demuxtt; + int fd_frontend; + int fd_demuxa, fd_demuxv; - FrontendInfo feinfo; - FrontendParameters front_param; + struct dvb_frontend_info feinfo; - struct secCommand scmd; - struct secCmdSequence scmds; - struct dmxPesFilterParams pesFilterParamsV; - struct dmxPesFilterParams pesFilterParamsA; - struct dmxPesFilterParams pesFilterParamsTT; + struct dmx_pes_filter_params pesFilterParamsV; + struct dmx_pes_filter_params pesFilterParamsA; } tuner_t; typedef struct { char *name; - int freq; /* freq - lof */ - int tone; /* SEC_TONE_ON/OFF */ - int volt; /* SC_VOLTAGE_13/18 */ - int diseqcnr; - int srate; - int fec; - int vpid; - int apid; - + struct dvb_frontend_parameters front_param; + int vpid; + int apid; + int sat_no; + int tone; + int pol; } channel_t; typedef struct { @@ -106,13 +97,13 @@ typedef struct { dvb_input_class_t *cls; xine_stream_t *stream; - + char *mrl; off_t curpos; nbc_t *nbc; - + tuner_t *tuner; channel_t *channels; int fd; @@ -127,10 +118,84 @@ typedef struct { /* scratch buffer for forward seeking */ char seek_buf[BUFSIZE]; - int out_fd; /* recording function */ - } dvb_input_plugin_t; +typedef struct { + char *name; + int value; +} Param; + +static const Param inversion_list [] = { + { "INVERSION_OFF", INVERSION_OFF }, + { "INVERSION_ON", INVERSION_ON }, + { "INVERSION_AUTO", INVERSION_AUTO }, + { NULL, 0 } +}; + +static const Param bw_list [] = { + { "BANDWIDTH_6_MHZ", BANDWIDTH_6_MHZ }, + { "BANDWIDTH_7_MHZ", BANDWIDTH_7_MHZ }, + { "BANDWIDTH_8_MHZ", BANDWIDTH_8_MHZ }, + { NULL, 0 } +}; + +static const Param fec_list [] = { + { "FEC_1_2", FEC_1_2 }, + { "FEC_2_3", FEC_2_3 }, + { "FEC_3_4", FEC_3_4 }, + { "FEC_4_5", FEC_4_5 }, + { "FEC_5_6", FEC_5_6 }, + { "FEC_6_7", FEC_6_7 }, + { "FEC_7_8", FEC_7_8 }, + { "FEC_8_9", FEC_8_9 }, + { "FEC_AUTO", FEC_AUTO }, + { "FEC_NONE", FEC_NONE }, + { NULL, 0 } +}; + +static const Param guard_list [] = { + {"GUARD_INTERVAL_1_16", GUARD_INTERVAL_1_16}, + {"GUARD_INTERVAL_1_32", GUARD_INTERVAL_1_32}, + {"GUARD_INTERVAL_1_4", GUARD_INTERVAL_1_4}, + {"GUARD_INTERVAL_1_8", GUARD_INTERVAL_1_8}, + { NULL, 0 } +}; + +static const Param hierarchy_list [] = { + { "HIERARCHY_1", HIERARCHY_1 }, + { "HIERARCHY_2", HIERARCHY_2 }, + { "HIERARCHY_4", HIERARCHY_4 }, + { "HIERARCHY_NONE", HIERARCHY_NONE }, + { NULL, 0 } +}; + +static const Param qam_list [] = { + { "QPSK", QPSK }, + { "QAM_128", QAM_128 }, + { "QAM_16", QAM_16 }, + { "QAM_256", QAM_256 }, + { "QAM_32", QAM_32 }, + { "QAM_64", QAM_64 }, + { NULL, 0 } +}; + +static const Param transmissionmode_list [] = { + { "TRANSMISSION_MODE_2K", TRANSMISSION_MODE_2K }, + { "TRANSMISSION_MODE_8K", TRANSMISSION_MODE_8K }, + { NULL, 0 } +}; + +static void tuner_dispose (tuner_t *this) { + + if (this->fd_frontend >= 0) + close (this->fd_frontend); + if (this->fd_demuxa >= 0) + close (this->fd_demuxa); + if (this->fd_demuxv >= 0) + close (this->fd_demuxv); + + free (this); +} static tuner_t *tuner_init () { @@ -138,69 +203,52 @@ static tuner_t *tuner_init () { this = malloc (sizeof (tuner_t)); + this->fd_frontend = -1; + this->fd_demuxa = -1; + this->fd_demuxv = -1; + if ((this->fd_frontend = open(FRONTEND_DEVICE, O_RDWR)) < 0){ - perror("FRONTEND DEVICE: "); - free (this); + perror("FRONTEND DEVICE"); + tuner_dispose(this); return NULL; } - ioctl (this->fd_frontend, FE_GET_INFO, &this->feinfo); - if (this->feinfo.type==FE_QPSK) { - - if ((this->fd_sec = open (SEC_DEVICE, O_RDWR)) < 0) { - perror ("SEC DEVICE: "); - free (this); - return NULL; - } - } - - this->fd_demuxtt = open (DEMUX_DEVICE, O_RDWR); - if (this->fd_demuxtt < 0) { - perror ("DEMUX DEVICE tt: "); - free (this); + if ((ioctl (this->fd_frontend, FE_GET_INFO, &this->feinfo)) < 0) { + perror("FE_GET_INFO"); + tuner_dispose(this); return NULL; } this->fd_demuxa = open (DEMUX_DEVICE, O_RDWR); if (this->fd_demuxa < 0) { - perror ("DEMUX DEVICE audio: "); - free (this); + perror ("DEMUX DEVICE audio"); + tuner_dispose(this); return NULL; } this->fd_demuxv=open (DEMUX_DEVICE, O_RDWR); if (this->fd_demuxv < 0) { - perror ("DEMUX DEVICE video: "); - free (this); + perror ("DEMUX DEVICE video"); + tuner_dispose(this); return NULL; } return this; } -static void tuner_dispose (tuner_t *this) { - - close (this->fd_frontend); - close (this->fd_sec); - close (this->fd_demuxa); - close (this->fd_demuxv); - close (this->fd_demuxtt); - - free (this); -} static void tuner_set_vpid (tuner_t *this, ushort vpid) { if (vpid==0 || vpid==NOPID || vpid==0x1fff) { - ioctl (this->fd_demuxv, DMX_STOP, 0); + ioctl (this->fd_demuxv, DMX_STOP); return; } - this->pesFilterParamsV.pid = vpid; - this->pesFilterParamsV.input = DMX_IN_FRONTEND; - this->pesFilterParamsV.output = DMX_OUT_TS_TAP; - this->pesFilterParamsV.pesType = DMX_PES_VIDEO; - this->pesFilterParamsV.flags = DMX_IMMEDIATE_START; + this->pesFilterParamsV.pid = vpid; + this->pesFilterParamsV.input = DMX_IN_FRONTEND; + this->pesFilterParamsV.output = DMX_OUT_TS_TAP; + this->pesFilterParamsV.pes_type = DMX_PES_VIDEO; + this->pesFilterParamsV.flags = DMX_IMMEDIATE_START; if (ioctl(this->fd_demuxv, DMX_SET_PES_FILTER, &this->pesFilterParamsV) < 0) perror("set_vpid"); @@ -208,155 +256,100 @@ static void tuner_set_vpid (tuner_t *this, ushort vpid) { static void tuner_set_apid (tuner_t *this, ushort apid) { if (apid==0 || apid==NOPID || apid==0x1fff) { - ioctl (this->fd_demuxa, DMX_STOP, apid); + ioctl (this->fd_demuxa, DMX_STOP); return; } - - this->pesFilterParamsA.pid = apid; - this->pesFilterParamsA.input = DMX_IN_FRONTEND; - this->pesFilterParamsA.output = DMX_OUT_TS_TAP; - this->pesFilterParamsA.pesType = DMX_PES_AUDIO; - this->pesFilterParamsA.flags = DMX_IMMEDIATE_START; + + this->pesFilterParamsA.pid = apid; + this->pesFilterParamsA.input = DMX_IN_FRONTEND; + this->pesFilterParamsA.output = DMX_OUT_TS_TAP; + this->pesFilterParamsA.pes_type = DMX_PES_AUDIO; + this->pesFilterParamsA.flags = DMX_IMMEDIATE_START; if (ioctl (this->fd_demuxa, DMX_SET_PES_FILTER, &this->pesFilterParamsA) < 0) perror("set_apid"); } -static void tuner_set_ttpid (tuner_t *this, ushort ttpid) { +static int tuner_set_diseqc(tuner_t *this, channel_t *c) +{ + struct dvb_diseqc_master_cmd cmd = + {{0xe0, 0x10, 0x38, 0xf0, 0x00, 0x00}, 4}; - if (ttpid==0 || ttpid== NOPID || ttpid==0x1fff) { - ioctl (this->fd_demuxtt, DMX_STOP, 0); - return; - } - this->pesFilterParamsTT.pid = ttpid; - this->pesFilterParamsTT.input = DMX_IN_FRONTEND; - this->pesFilterParamsTT.output = DMX_OUT_DECODER; - this->pesFilterParamsTT.pesType = DMX_PES_TELETEXT; - this->pesFilterParamsTT.flags = DMX_IMMEDIATE_START; - if (ioctl(this->fd_demuxtt, DMX_SET_PES_FILTER, - &this->pesFilterParamsTT) < 0) { - /* printf("PID=%04x\n", ttpid); */ - perror("set_ttpid"); - } -} + cmd.msg[3] = 0xf0 | ((c->sat_no * 4) & 0x0f) | + (c->tone ? 1 : 0) | (c->pol ? 0 : 2); -static void tuner_get_front (tuner_t *this) { - tuner_set_vpid (this, 0); - tuner_set_apid (this, 0); - tuner_set_ttpid(this, 0); - this->scmds.voltage = SEC_VOLTAGE_13; - this->scmds.miniCommand = SEC_MINI_NONE; - this->scmds.continuousTone = SEC_TONE_OFF; - this->scmds.numCommands = 1; - this->scmds.commands = &this->scmd; -} - -static void tuner_set_diseqc_nr (tuner_t *this, int nr) { + if (ioctl(this->fd_frontend, FE_SET_TONE, SEC_TONE_OFF) < 0) + return 0; + if (ioctl(this->fd_frontend, FE_SET_VOLTAGE, + c->pol ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18) < 0) + return 0; + usleep(15000); + if (ioctl(this->fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd) < 0) + return 0; + usleep(15000); + if (ioctl(this->fd_frontend, FE_DISEQC_SEND_BURST, + (c->sat_no / 4) % 2 ? SEC_MINI_B : SEC_MINI_A) < 0) + return 0; + usleep(15000); + if (ioctl(this->fd_frontend, FE_SET_TONE, + c->tone ? SEC_TONE_ON : SEC_TONE_OFF) < 0) + return 0; - this->scmd.type=0; - this->scmd.u.diseqc.addr = 0x10; - this->scmd.u.diseqc.cmd = 0x38; - this->scmd.u.diseqc.numParams = 1; - this->scmd.u.diseqc.params[0] = 0xF0 | ((nr * 4) & 0x0F) | - (this->scmds.continuousTone == SEC_TONE_ON ? 1 : 0) | - (this->scmds.voltage==SEC_VOLTAGE_18 ? 2 : 0); + return 1; } -static void tuner_set_tp (tuner_t *this, int freq, int tone, - int volt, int diseqcnr, - int srate, int fec) { - - static const uint8_t rfectab[9] = {1,2,3,0,4,0,5,0,0}; - - this->front_param.Frequency = freq; - this->scmds.continuousTone = tone; - this->scmds.voltage = volt; - tuner_set_diseqc_nr (this, diseqcnr); - this->front_param.u.qpsk.SymbolRate = srate; - this->front_param.u.qpsk.FEC_inner = (CodeRate)rfectab[fec]; - this->front_param.Inversion = INVERSION_AUTO; -} +static int tuner_tune_it (tuner_t *this, struct dvb_frontend_parameters + *front_param) { + fe_status_t status; -static int tuner_tune_it (tuner_t *this, FrontendParameters *front_param) { - FrontendEvent event; - struct pollfd pfd[1]; - - if (ioctl(this->fd_frontend, FE_SET_FRONTEND, front_param) <0) + if (ioctl(this->fd_frontend, FE_SET_FRONTEND, front_param) <0) { perror("setfront front"); + } - pfd[0].fd=this->fd_frontend; - pfd[0].events=POLLIN; - if (poll(pfd,1,2000)) { - if (pfd[0].revents & POLLIN){ - if (ioctl(this->fd_frontend, FE_GET_EVENT, &event) - == -EBUFFEROVERFLOW){ - perror("fe get event"); - return 0; - } - switch(event.type){ - case FE_UNEXPECTED_EV: - perror("unexpected event\n"); - return 0; - case FE_FAILURE_EV: - perror("failure event\n"); - return 0; - - case FE_COMPLETION_EV: - fprintf(stderr, "completion event\n"); - return 1; - } + do { + if (ioctl(this->fd_frontend, FE_READ_STATUS, &status) < 0) { + perror("fe get event"); + return 0; + } + printf("input_dvb: status: %x\n", status); + if (status & FE_HAS_LOCK) { + return 1; } + usleep(500000); } - return 0; -} - + while (!(status & FE_TIMEDOUT)); -static int tuner_set_front (tuner_t *this) { - this->scmds.miniCommand = SEC_MINI_NONE; - this->scmds.numCommands=1; - this->scmds.commands=&this->scmd; - - tuner_set_vpid (this, 0); - tuner_set_apid (this, 0); - tuner_set_ttpid(this,0); - - if (this->feinfo.type==FE_QPSK) { - if (ioctl(this->fd_sec, SEC_SEND_SEQUENCE, &this->scmds) < 0) - perror("setfront sec"); - usleep(70000); - } - return tuner_tune_it(this, &this->front_param); + return 0; } static void print_channel (channel_t *channel) { - - printf ("input_dvb: channel '%s' diseqc %d freq %d volt %d srate %d fec %d vpid %d apid %d\n", + printf ("input_dvb: channel '%s' freq %d vpid %d apid %d\n", channel->name, - channel->diseqcnr, - channel->freq, - channel->volt, - channel->srate, - channel->fec, + channel->front_param.frequency, channel->vpid, channel->apid); - } -static int tuner_set_channel (tuner_t *this, +static int tuner_set_channel (tuner_t *this, channel_t *c) { print_channel (c); - tuner_get_front (this); - tuner_set_tp (this, c->freq, c->tone, c->volt, c->diseqcnr, c->srate, c->fec); - if (!tuner_set_front (this)) + tuner_set_vpid (this, 0); + tuner_set_apid (this, 0); + + if (this->feinfo.type==FE_QPSK) { + if (!tuner_set_diseqc(this, c)) + return 0; + } + + if (!tuner_tune_it (this, &c->front_param)) return 0; - + tuner_set_vpid (this, c->vpid); tuner_set_apid (this, c->apid); - tuner_set_ttpid (this, 0); - + return 1; /* fixme: error handling */ } @@ -364,15 +357,15 @@ static void osd_show_channel (dvb_input_plugin_t *this) { int i, channel ; - this->stream->osd_renderer->filled_rect (this->osd, 0, 0, 395, 400, 2); + this->stream->osd_renderer->filled_rect (this->osd, 0, 0, 395, 400, 2); channel = this->channel - 5; for (i=0; i<11; i++) { if ( (channel >= 0) && (channel < this->num_channels) ) - this->stream->osd_renderer->render_text (this->osd, 10, 10+i*35, - this->channels[channel].name, + this->stream->osd_renderer->render_text (this->osd, 10, 10+i*35, + this->channels[channel].name, OSD_TEXT3); channel ++; } @@ -394,7 +387,7 @@ static void switch_channel (dvb_input_plugin_t *this) { pthread_mutex_lock (&this->mutex); close (this->fd); - + if (!tuner_set_channel (this->tuner, &this->channels[this->channel])) { printf ("input_dvb: tuner_set_channel failed\n"); pthread_mutex_unlock (&this->mutex); @@ -408,11 +401,11 @@ static void switch_channel (dvb_input_plugin_t *this) { event.data_length = sizeof (xine_pids_data_t); printf ("input_dvb: sending event\n"); - + xine_event_send (this->stream, &event); this->fd = open (DVR_DEVICE, O_RDONLY); - + pthread_mutex_unlock (&this->mutex); this->stream->osd_renderer->hide (this->osd, 0); @@ -440,27 +433,27 @@ static void dvb_event_handler (dvb_input_plugin_t *this) { this->channel++; osd_show_channel (this); break; - + case XINE_EVENT_INPUT_PREVIOUS: if (this->channel>0) this->channel--; osd_show_channel (this); break; - + case XINE_EVENT_INPUT_DOWN: if (this->channel < (this->num_channels-1)) { this->channel++; switch_channel (this); } break; - + case XINE_EVENT_INPUT_UP: if (this->channel>0) { this->channel--; switch_channel (this); } break; - + case XINE_EVENT_INPUT_SELECT: switch_channel (this); break; @@ -469,7 +462,7 @@ static void dvb_event_handler (dvb_input_plugin_t *this) { this->stream->osd_renderer->hide (this->osd, 0); break; -#if 0 +#if 0 default: printf ("input_dvb: got an event, type 0x%08x\n", event->type); #endif @@ -479,7 +472,9 @@ static void dvb_event_handler (dvb_input_plugin_t *this) { } } -static off_t dvb_plugin_read (input_plugin_t *this_gen, + + +static off_t dvb_plugin_read (input_plugin_t *this_gen, char *buf, off_t len) { dvb_input_plugin_t *this = (dvb_input_plugin_t *) this_gen; off_t n, total; @@ -511,14 +506,11 @@ static off_t dvb_plugin_read (input_plugin_t *this_gen, } } - if (this->out_fd>0) - write (this->out_fd, buf, total); - pthread_mutex_unlock( &this->mutex ); return total; } -static buf_element_t *dvb_plugin_read_block (input_plugin_t *this_gen, +static buf_element_t *dvb_plugin_read_block (input_plugin_t *this_gen, fifo_buffer_t *fifo, off_t todo) { /* dvb_input_plugin_t *this = (dvb_input_plugin_t *) this_gen; */ buf_element_t *buf = fifo->buffer_pool_alloc (fifo); @@ -527,7 +519,7 @@ static buf_element_t *dvb_plugin_read_block (input_plugin_t *this_gen, buf->content = buf->mem; buf->type = BUF_DEMUX_BLOCK; - + total_bytes = dvb_plugin_read (this_gen, buf->content, todo); if (total_bytes != todo) { @@ -540,7 +532,7 @@ static buf_element_t *dvb_plugin_read_block (input_plugin_t *this_gen, return buf; } -static off_t dvb_plugin_seek (input_plugin_t *this_gen, off_t offset, +static off_t dvb_plugin_seek (input_plugin_t *this_gen, off_t offset, int origin) { dvb_input_plugin_t *this = (dvb_input_plugin_t *) this_gen; @@ -593,12 +585,11 @@ static void dvb_plugin_dispose (input_plugin_t *this_gen) { this->nbc = NULL; } - if (this->out_fd>0) - close (this->out_fd); - xine_event_dispose_queue (this->event_queue); free (this->mrl); + free (this->channels); + tuner_dispose ( ((dvb_input_plugin_t *)this)->tuner ); free (this); } @@ -608,21 +599,28 @@ static char* dvb_plugin_get_mrl (input_plugin_t *this_gen) { return this->mrl; } -static int dvb_plugin_get_optional_data (input_plugin_t *this_gen, +static int dvb_plugin_get_optional_data (input_plugin_t *this_gen, void *data, int data_type) { return INPUT_OPTIONAL_UNSUPPORTED; } -static channel_t *load_channels (int *num_ch) { +static int find_param(const Param *list, const char *name) +{ + while (list->name && strcmp(list->name, name)) + list++; + return list->value;; +} + +static channel_t *load_channels (int *num_ch, fe_type_t fe_type) { - FILE *f; - unsigned char str[BUFSIZE]; - unsigned char filename[BUFSIZE]; - channel_t *channels; - int num_channels; + FILE *f; + char str[BUFSIZE]; + char filename[BUFSIZE]; + channel_t *channels; + int num_channels; - snprintf (filename, BUFSIZE, "%s/.xine/dvb_channels", xine_get_homedir()); + snprintf (filename, BUFSIZE, "%s/.xine/channels.conf", xine_get_homedir()); f = fopen (filename, "rb"); if (!f) { @@ -635,7 +633,6 @@ static channel_t *load_channels (int *num_ch) { */ num_channels = 0; while ( fgets (str, BUFSIZE, f)) { - fgets (str, BUFSIZE, f); num_channels++; } fclose (f); @@ -650,53 +647,175 @@ static channel_t *load_channels (int *num_ch) { f = fopen (filename, "rb"); num_channels = 0; while ( fgets (str, BUFSIZE, f)) { - - int freq; - - channels[num_channels].name = strdup (str); - - fgets (str, BUFSIZE, f); - - sscanf (str, "%d %d %d %d %d %d %d\n", - &channels[num_channels].diseqcnr, - &freq, - &channels[num_channels].volt, - &channels[num_channels].srate, - &channels[num_channels].fec, - &channels[num_channels].vpid, - &channels[num_channels].apid); - - if (freq > 11700000) { - channels[num_channels].freq = freq - 10600000; - channels[num_channels].tone = SEC_TONE_ON; - } else { - channels[num_channels].freq = freq - 9750000; - channels[num_channels].tone = SEC_TONE_OFF; + + unsigned long freq; + char *field, *tmp; + + tmp = str; + if (!(field = strsep(&tmp, ":"))) + continue; + + channels[num_channels].name = strdup(field); + + if (!(field = strsep(&tmp, ":"))) + continue; + + freq = strtoul(field, NULL, 0); + + switch (fe_type) + { + case FE_QPSK: + + if (freq > 11700) { + channels[num_channels].front_param.frequency = (freq - 10600)*1000; + channels[num_channels].tone = 1; + } else { + channels[num_channels].front_param.frequency = (freq - 9750)*1000; + channels[num_channels].tone = 0; + } + + channels[num_channels].front_param.inversion = INVERSION_OFF; + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].pol = (field[0] == 'h' ? 0 : 1); + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].sat_no = strtoul(field, NULL, 0); + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.u.qpsk.symbol_rate = + strtoul(field, NULL, 0) * 1000; + + channels[num_channels].front_param.u.qpsk.fec_inner = FEC_AUTO; + + break; + + case FE_QAM: + + channels[num_channels].front_param.frequency = freq; + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.inversion = + find_param(inversion_list, field); + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.u.qam.symbol_rate = + strtoul(field, NULL, 0); + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.u.qam.fec_inner = + find_param(fec_list, field); + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.u.qam.modulation = + find_param(qam_list, field); + + break; + + case FE_OFDM: + + channels[num_channels].front_param.frequency = freq; + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.inversion = + find_param(inversion_list, field); + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.u.ofdm.bandwidth = + find_param(bw_list, field); + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.u.ofdm.code_rate_HP = + find_param(fec_list, field); + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.u.ofdm.code_rate_LP = + find_param(fec_list, field); + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.u.ofdm.constellation = + find_param(qam_list, field); + + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.u.ofdm.transmission_mode = + find_param(transmissionmode_list, field); + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.u.ofdm.guard_interval = + find_param(guard_list, field); + + if (!(field = strsep(&tmp, ":"))) + break; + + channels[num_channels].front_param.u.ofdm.hierarchy_information = + find_param(hierarchy_list, field); + + break; + } + if (!(field = strsep(&tmp, ":"))) + continue; + + channels[num_channels].vpid = strtoul(field, NULL, 0); + + if (!(field = strsep(&tmp, ":"))) + continue; + + channels[num_channels].apid = strtoul(field, NULL, 0); + #ifdef LOG printf ("input: dvb channel %s loaded\n", channels[num_channels].name); #endif num_channels++; - } + } *num_ch = num_channels; return channels; } -static input_plugin_t *open_plugin (input_class_t *cls_gen, - xine_stream_t *stream, +static input_plugin_t *open_plugin (input_class_t *cls_gen, + xine_stream_t *stream, const char *data) { - dvb_input_class_t *cls = (dvb_input_class_t *) cls_gen; + dvb_input_class_t *cls = (dvb_input_class_t *) cls_gen; dvb_input_plugin_t *this; tuner_t *tuner; channel_t *channels; int num_channels; char *mrl = (char *) data; - if (strncasecmp (mrl, "dvb:/",5)) + if (strncasecmp (mrl, "dvb:/",5)) return NULL; if ( !(tuner = tuner_init()) ) { @@ -704,11 +823,11 @@ static input_plugin_t *open_plugin (input_class_t *cls_gen, return NULL; } - if ( !(channels = load_channels(&num_channels)) ) { + if ( !(channels = load_channels(&num_channels, tuner->feinfo.type)) ) { tuner_dispose (tuner); return NULL; } - + this = (dvb_input_plugin_t *) xine_xmalloc (sizeof(dvb_input_plugin_t)); this->tuner = tuner; @@ -719,17 +838,21 @@ static input_plugin_t *open_plugin (input_class_t *cls_gen, if (!tuner_set_channel (this->tuner, &this->channels[this->channel])) { printf ("input_dvb: tuner_set_channel failed\n"); + tuner_dispose(this->tuner); + free(this->channels); free (this); return NULL; } if ((this->fd = open (DVR_DEVICE, O_RDONLY)) < 0){ printf ("input_dvb: cannot open dvr device '%s'\n", DVR_DEVICE); + tuner_dispose(this->tuner); + free(this->channels); free (this); return NULL; } - this->mrl = strdup(mrl); + this->mrl = strdup(mrl); this->curpos = 0; this->nbc = nbc_init (stream); @@ -755,15 +878,9 @@ static input_plugin_t *open_plugin (input_class_t *cls_gen, pthread_mutex_init (&this->mutex, NULL); -#if 0 - this->out_fd = open ("foo.ts", O_CREAT | O_WRONLY | O_TRUNC, 0644); -#else - this->out_fd = 0; -#endif - this->event_queue = xine_event_new_queue (this->stream); - this->osd = this->stream->osd_renderer->new_object (this->stream->osd_renderer, + this->osd = this->stream->osd_renderer->new_object (this->stream->osd_renderer, 410, 410); this->stream->osd_renderer->set_position (this->osd, 20, 20); this->stream->osd_renderer->set_font (this->osd, "cetus", 32); @@ -787,9 +904,7 @@ static char *dvb_class_get_identifier (input_class_t *this_gen) { } static void dvb_class_dispose (input_class_t *this_gen) { - - dvb_input_class_t *cls = (dvb_input_class_t *) this_gen; - + dvb_input_class_t *cls = (dvb_input_class_t *) this_gen; free (cls); } @@ -797,9 +912,9 @@ static int dvb_class_eject_media (input_class_t *this_gen) { return 1; } -static char ** dvb_class_get_autoplay_list (input_class_t *this_gen, +static char ** dvb_class_get_autoplay_list (input_class_t *this_gen, int *num_files) { - dvb_input_class_t *cls = (dvb_input_class_t *) this_gen; + dvb_input_class_t *cls = (dvb_input_class_t *) this_gen; *num_files = 1; return cls->mrls; @@ -835,7 +950,7 @@ static void *init_class (xine_t *xine, void *data) { */ plugin_info_t xine_plugin_info[] = { - /* type, API, "name", version, special_info, init_function */ + /* type, API, "name", version, special_info, init_function */ { PLUGIN_INPUT, 11, "DVB", XINE_VERSION_CODE, NULL, init_class }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; diff --git a/src/input/ost/README b/src/input/ost/README deleted file mode 100644 index 5fc680215..000000000 --- a/src/input/ost/README +++ /dev/null @@ -1,9 +0,0 @@ -This directories contains header files for the Linux DVB drivers -from convergence integrated media GmbH - - Copyright (C) 2000 Ralph Metzler <ralph@convergence.de> - & Marcus Metzler <marcus@convergence.de> - for convergence integrated media GmbH - -released under the LGPL license. For details see the individual -header files. diff --git a/src/input/ost/ca.h b/src/input/ost/ca.h deleted file mode 100644 index 226ef5c09..000000000 --- a/src/input/ost/ca.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * ca.h - * - * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de> - * & Marcus Metzler <marcus@convergence.de> - for convergence integrated media GmbH - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Lesser Public License - * as published by the Free Software Foundation; either version 2.1 - * 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 Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -#ifndef _OST_CA_H_ -#define _OST_CA_H_ - -/* slot interface types and info */ - -typedef struct ca_slot_info_s { - int num; /* slot number */ - - int type; /* CA interface this slot supports */ -#define CA_CI 1 /* CI high level interface */ -#define CA_CI_LINK 2 /* CI link layer level interface */ -#define CA_CI_PHYS 4 /* CI physical layer level interface */ -#define CA_SC 128 /* simple smart card interface */ - - unsigned int flags; -#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */ -#define CA_CI_MODULE_READY 2 -} ca_slot_info_t; - - -/* descrambler types and info */ - -typedef struct ca_descr_info_s { - unsigned int num; /* number of available descramblers (keys) */ - unsigned int type; /* type of supported scrambling system */ -#define CA_ECD 1 -#define CA_NDS 2 -#define CA_DSS 4 -} ca_descr_info_t; - -typedef struct ca_cap_s { - unsigned int slot_num; /* total number of CA card and module slots */ - unsigned int slot_type; /* OR of all supported types */ - unsigned int descr_num; /* total number of descrambler slots (keys) */ - unsigned int descr_type; /* OR of all supported types */ -} ca_cap_t; - -/* a message to/from a CI-CAM */ -typedef struct ca_msg_s { - unsigned int index; - unsigned int type; - unsigned int length; - unsigned char msg[256]; -} ca_msg_t; - -typedef struct ca_descr_s { - unsigned int index; - unsigned int parity; - unsigned char cw[8]; -} ca_descr_t; - -#define CA_RESET _IOW('o', 128, int) -#define CA_GET_CAP _IOR('o', 129, ca_cap_t *) -#define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t *) -#define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t *) -#define CA_GET_MSG _IOR('o', 132, ca_msg_t *) -#define CA_SEND_MSG _IOW('o', 133, ca_msg_t *) -#define CA_SET_DESCR _IOW('o', 134, ca_descr_t *) - -#endif - diff --git a/src/input/ost/demux.h b/src/input/ost/demux.h deleted file mode 100644 index 758e921b6..000000000 --- a/src/input/ost/demux.h +++ /dev/null @@ -1,346 +0,0 @@ -/* * demux.h * * Copyright (c) 2000 Nokia Research Center - * Tampere, FINLAND - * - * Project: - * Universal Broadcast Access - * - * Contains: - * Type definitions of a Linux kernel-level API for filtering MPEG-2 TS - * packets and MPEG-2 sections. Support for PES packet filtering will be - * added later. - * - * History: - * 12.01.2000/JPL File created - Initial version. - * 18.02.2000/JPL Minor corrections. - * 21.02.2000/JPL DMX_NAME_SIZE and dmx_in_use() removed, typos fixed, - * some names changed. - * 23.02.2000/JPL Added a parameter indicating the callback source in - * the callback functions. - * 10.03.2000/JPL Added the macros DMX_DIR_ENTRY() and DMX_FE_ENTRY(). - * 15.03.2000/JPL Added the capabilities field to dmx_demux_t. - * 22.03.2000/JPL Corrected the callback parameter in the - * allocate_x_feed() functions. - * 03.04.2000/JPL Added support for optional resource conflict resolution - * and scarce resource handling. - * 05.04.2000/JPL Changed the dmx_resolve_conflict() to use resource - * type as a parameter. - * 12.04.2000/JPL Added a second buffer parameter for dmx_x_callback() - * functions to better handle buffer wrapping. - * 26.04.2000/JPL Added functions for section-level descrambling. - * 03.09.2000/JPL Removed support for conflict resolution and scarce - * resource handling. Otherwise only minor changes to - * data structures and function prototypes. - * - * - * Author: - * Juha-Pekka Luoma (JPL) - * Nokia Research Center - * - * Notes: - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * 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 Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ -/* $Id: demux.h,v 1.1 2002/12/27 00:53:50 guenter Exp $ */ - -#ifndef __DEMUX_H -#define __DEMUX_H - -#ifndef __KERNEL__ -#define __KERNEL__ -#endif - -#include <linux/types.h> /* __u8, __u16, ... */ -#include <linux/list.h> /* list_entry(), struct list_head */ -#include <linux/time.h> /* struct timespec */ -#include <linux/errno.h> /* Function return values */ - -/*--------------------------------------------------------------------------*/ -/* Common definitions */ -/*--------------------------------------------------------------------------*/ - -/* - * DMX_MAX_FILTER_SIZE: Maximum length (in bytes) of a section/PES filter. - */ - -#ifndef DMX_MAX_FILTER_SIZE -#define DMX_MAX_FILTER_SIZE 18 -#endif -/* - * dmx_success_t: Success codes for the Demux Callback API. - */ - -typedef enum { - DMX_OK = 0, /* Received Ok */ - DMX_LENGTH_ERROR, /* Incorrect length */ - DMX_OVERRUN_ERROR, /* Receiver ring buffer overrun */ - DMX_CRC_ERROR, /* Incorrect CRC */ - DMX_FRAME_ERROR, /* Frame alignment error */ - DMX_FIFO_ERROR, /* Receiver FIFO overrun */ - DMX_MISSED_ERROR /* Receiver missed packet */ -} dmx_success_t; - -/*--------------------------------------------------------------------------*/ -/* TS packet reception */ -/*--------------------------------------------------------------------------*/ - -/* TS filter type for set_type() */ - -#define TS_PACKET 1 /* send TS packets (188 bytes) to callback (default) */ -#define TS_PAYLOAD_ONLY 2 /* in case TS_PACKET is set, only send the TS - payload (<=184 bytes per packet) to callback */ -#define TS_DECODER 4 /* send stream to built-in decoder (if present) */ - -/* PES type for filters which write to built-in decoder */ -/* these should be kept identical to the types in dmx.h */ - -typedef enum -{ - DMX_TS_PES_AUDIO, /* also send packets to audio decoder (if it exists) */ - DMX_TS_PES_VIDEO, /* ... */ - DMX_TS_PES_TELETEXT, - DMX_TS_PES_SUBTITLE, - DMX_TS_PES_PCR, - DMX_TS_PES_OTHER, -} dmx_ts_pes_t; - - -struct dmx_ts_feed_s { - int is_filtering; /* Set to non-zero when filtering in progress */ - struct dmx_demux_s* parent; /* Back-pointer */ - void* priv; /* Pointer to private data of the API client */ - int (*set) (struct dmx_ts_feed_s* feed, - __u16 pid, - size_t callback_length, - size_t circular_buffer_size, - int descramble, - struct timespec timeout); - int (*start_filtering) (struct dmx_ts_feed_s* feed); - int (*stop_filtering) (struct dmx_ts_feed_s* feed); - int (*set_type) (struct dmx_ts_feed_s* feed, - int type, - dmx_ts_pes_t pes_type); -}; - -typedef struct dmx_ts_feed_s dmx_ts_feed_t; - -/*--------------------------------------------------------------------------*/ -/* PES packet reception (not supported yet) */ -/*--------------------------------------------------------------------------*/ - -typedef struct dmx_pes_filter_s { - struct dmx_pes_s* parent; /* Back-pointer */ - void* priv; /* Pointer to private data of the API client */ -} dmx_pes_filter_t; - -typedef struct dmx_pes_feed_s { - int is_filtering; /* Set to non-zero when filtering in progress */ - struct dmx_demux_s* parent; /* Back-pointer */ - void* priv; /* Pointer to private data of the API client */ - int (*set) (struct dmx_pes_feed_s* feed, - __u16 pid, - size_t circular_buffer_size, - int descramble, - struct timespec timeout); - int (*start_filtering) (struct dmx_pes_feed_s* feed); - int (*stop_filtering) (struct dmx_pes_feed_s* feed); - int (*allocate_filter) (struct dmx_pes_feed_s* feed, - dmx_pes_filter_t** filter); - int (*release_filter) (struct dmx_pes_feed_s* feed, - dmx_pes_filter_t* filter); -} dmx_pes_feed_t; - -/*--------------------------------------------------------------------------*/ -/* Section reception */ -/*--------------------------------------------------------------------------*/ - -typedef struct { - __u8 filter_value [DMX_MAX_FILTER_SIZE]; - __u8 filter_mask [DMX_MAX_FILTER_SIZE]; - struct dmx_section_feed_s* parent; /* Back-pointer */ - void* priv; /* Pointer to private data of the API client */ -} dmx_section_filter_t; - -struct dmx_section_feed_s { - int is_filtering; /* Set to non-zero when filtering in progress */ - struct dmx_demux_s* parent; /* Back-pointer */ - void* priv; /* Pointer to private data of the API client */ - int (*set) (struct dmx_section_feed_s* feed, - __u16 pid, - size_t circular_buffer_size, - int descramble, - int check_crc); - int (*allocate_filter) (struct dmx_section_feed_s* feed, - dmx_section_filter_t** filter); - int (*release_filter) (struct dmx_section_feed_s* feed, - dmx_section_filter_t* filter); - int (*start_filtering) (struct dmx_section_feed_s* feed); - int (*stop_filtering) (struct dmx_section_feed_s* feed); -}; -typedef struct dmx_section_feed_s dmx_section_feed_t; - -/*--------------------------------------------------------------------------*/ -/* Callback functions */ -/*--------------------------------------------------------------------------*/ - -typedef int (*dmx_ts_cb) ( __u8 * buffer1, - size_t buffer1_length, - __u8 * buffer2, - size_t buffer2_length, - dmx_ts_feed_t* source, - dmx_success_t success); - -typedef int (*dmx_section_cb) ( __u8 * buffer1, - size_t buffer1_len, - __u8 * buffer2, - size_t buffer2_len, - dmx_section_filter_t * source, - dmx_success_t success); - -typedef int (*dmx_pes_cb) ( __u8 * buffer1, - size_t buffer1_len, - __u8 * buffer2, - size_t buffer2_len, - dmx_pes_filter_t* source, - dmx_success_t success); - -/*--------------------------------------------------------------------------*/ -/* DVB Front-End */ -/*--------------------------------------------------------------------------*/ - -typedef enum { - DMX_OTHER_FE = 0, - DMX_SATELLITE_FE, - DMX_CABLE_FE, - DMX_TERRESTRIAL_FE, - DMX_LVDS_FE, - DMX_ASI_FE, /* DVB-ASI interface */ - DMX_MEMORY_FE -} dmx_frontend_source_t; - -typedef struct { - /* The following char* fields point to NULL terminated strings */ - char* id; /* Unique front-end identifier */ - char* vendor; /* Name of the front-end vendor */ - char* model; /* Name of the front-end model */ - struct list_head connectivity_list; /* List of front-ends that can - be connected to a particular - demux */ - void* priv; /* Pointer to private data of the API client */ - dmx_frontend_source_t source; -} dmx_frontend_t; - -/*--------------------------------------------------------------------------*/ -/* MPEG-2 TS Demux */ -/*--------------------------------------------------------------------------*/ - -/* - * Flags OR'ed in the capabilites field of struct dmx_demux_s. - */ - -#define DMX_TS_FILTERING 1 -#define DMX_PES_FILTERING 2 -#define DMX_SECTION_FILTERING 4 -#define DMX_MEMORY_BASED_FILTERING 8 /* write() available */ -#define DMX_CRC_CHECKING 16 -#define DMX_TS_DESCRAMBLING 32 -#define DMX_SECTION_PAYLOAD_DESCRAMBLING 64 -#define DMX_MAC_ADDRESS_DESCRAMBLING 128 - -/* - * Demux resource type identifier. -*/ - -/* - * DMX_FE_ENTRY(): Casts elements in the list of registered - * front-ends from the generic type struct list_head - * to the type * dmx_frontend_t - *. -*/ - -#define DMX_FE_ENTRY(list) list_entry(list, dmx_frontend_t, connectivity_list) - -struct dmx_demux_s { - /* The following char* fields point to NULL terminated strings */ - char* id; /* Unique demux identifier */ - char* vendor; /* Name of the demux vendor */ - char* model; /* Name of the demux model */ - __u32 capabilities; /* Bitfield of capability flags */ - dmx_frontend_t* frontend; /* Front-end connected to the demux */ - struct list_head reg_list; /* List of registered demuxes */ - void* priv; /* Pointer to private data of the API client */ - int users; /* Number of users */ - int (*open) (struct dmx_demux_s* demux); - int (*close) (struct dmx_demux_s* demux); - int (*write) (struct dmx_demux_s* demux, const char* buf, size_t count); - int (*allocate_ts_feed) (struct dmx_demux_s* demux, - dmx_ts_feed_t** feed, - dmx_ts_cb callback); - int (*release_ts_feed) (struct dmx_demux_s* demux, - dmx_ts_feed_t* feed); - int (*allocate_pes_feed) (struct dmx_demux_s* demux, - dmx_pes_feed_t** feed, - dmx_pes_cb callback); - int (*release_pes_feed) (struct dmx_demux_s* demux, - dmx_pes_feed_t* feed); - int (*allocate_section_feed) (struct dmx_demux_s* demux, - dmx_section_feed_t** feed, - dmx_section_cb callback); - int (*release_section_feed) (struct dmx_demux_s* demux, - dmx_section_feed_t* feed); - int (*descramble_mac_address) (struct dmx_demux_s* demux, - __u8* buffer1, - size_t buffer1_length, - __u8* buffer2, - size_t buffer2_length, - __u16 pid); - int (*descramble_section_payload) (struct dmx_demux_s* demux, - __u8* buffer1, - size_t buffer1_length, - __u8* buffer2, size_t buffer2_length, - __u16 pid); - int (*add_frontend) (struct dmx_demux_s* demux, - dmx_frontend_t* frontend); - int (*remove_frontend) (struct dmx_demux_s* demux, - dmx_frontend_t* frontend); - struct list_head* (*get_frontends) (struct dmx_demux_s* demux); - int (*connect_frontend) (struct dmx_demux_s* demux, - dmx_frontend_t* frontend); - int (*disconnect_frontend) (struct dmx_demux_s* demux); - - - /* added because js cannot keep track of these himself */ - int (*get_pes_pids) (struct dmx_demux_s* demux, __u16 *pids); -}; -typedef struct dmx_demux_s dmx_demux_t; - -/*--------------------------------------------------------------------------*/ -/* Demux directory */ -/*--------------------------------------------------------------------------*/ - -/* - * DMX_DIR_ENTRY(): Casts elements in the list of registered - * demuxes from the generic type struct list_head* to the type dmx_demux_t - *. - */ - -#define DMX_DIR_ENTRY(list) list_entry(list, dmx_demux_t, reg_list) - -int dmx_register_demux (dmx_demux_t* demux); -int dmx_unregister_demux (dmx_demux_t* demux); -struct list_head* dmx_get_demuxes (void); - -#endif /* #ifndef __DEMUX_H */ - diff --git a/src/input/ost/dmx.h b/src/input/ost/dmx.h deleted file mode 100644 index 88eebd869..000000000 --- a/src/input/ost/dmx.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * dmx.h - * - * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> - * & Ralph Metzler <ralph@convergence.de> - for convergence integrated media GmbH - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * 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 Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -#ifndef _OST_DMX_H_ -#define _OST_DMX_H_ - -#ifdef __KERNEL__ -#include <linux/types.h> -#elif defined(__sun) -#include <inttypes.h> -#else -#include <stdint.h> -#endif - -#ifndef EBUFFEROVERFLOW -#define EBUFFEROVERFLOW 769 -#endif - -/* pid_t conflicts with linux/include/linux/types.h !!!*/ - -typedef uint16_t dvb_pid_t; - -#define DMX_FILTER_SIZE 16 - -typedef enum -{ - DMX_OUT_DECODER, /* Streaming directly to decoder. */ - DMX_OUT_TAP, /* Output going to a memory buffer */ - /* (to be retrieved via the read command).*/ - DMX_OUT_TS_TAP /* Output multiplexed into a new TS */ - /* (to be retrieved by reading from the */ - /* logical DVR device). */ -} dmxOutput_t; - - -typedef enum -{ - DMX_IN_FRONTEND, /* Input from a front-end device. */ - DMX_IN_DVR /* Input from the logical DVR device. */ -} dmxInput_t; - - -typedef enum -{ - DMX_PES_AUDIO, - DMX_PES_VIDEO, - DMX_PES_TELETEXT, - DMX_PES_SUBTITLE, - DMX_PES_PCR, - DMX_PES_OTHER -} dmxPesType_t; - - -typedef enum -{ - DMX_SCRAMBLING_EV, - DMX_FRONTEND_EV -} dmxEvent_t; - - -typedef enum -{ - DMX_SCRAMBLING_OFF, - DMX_SCRAMBLING_ON -} dmxScramblingStatus_t; - - -typedef struct dmxFilter -{ - uint8_t filter[DMX_FILTER_SIZE]; - uint8_t mask[DMX_FILTER_SIZE]; -} dmxFilter_t; - - -/*struct dmxFrontEnd -{ - TBD tbd; -};*/ - - -struct dmxSctFilterParams -{ - dvb_pid_t pid; - dmxFilter_t filter; - uint32_t timeout; - uint32_t flags; -#define DMX_CHECK_CRC 1 -#define DMX_ONESHOT 2 -#define DMX_IMMEDIATE_START 4 -#define DMX_KERNEL_CLIENT 0x8000 -}; - - -struct dmxPesFilterParams -{ - dvb_pid_t pid; - dmxInput_t input; - dmxOutput_t output; - dmxPesType_t pesType; - uint32_t flags; -}; - - -struct dmxEvent -{ - dmxEvent_t event; - time_t timeStamp; - union - { - dmxScramblingStatus_t scrambling; - } u; -}; - - -#define DMX_START _IOW('o',41,int) -#define DMX_STOP _IOW('o',42,int) -#define DMX_SET_FILTER _IOW('o',43,struct dmxSctFilterParams *) -#define DMX_SET_PES_FILTER _IOW('o',44,struct dmxPesFilterParams *) -#define DMX_SET_BUFFER_SIZE _IOW('o',45,unsigned long) -#define DMX_GET_EVENT _IOR('o',46,struct dmxEvent *) -#define DMX_GET_PES_PIDS _IOR('o',47,dvb_pid_t *) - -#endif /*_OST_DMX_H_*/ diff --git a/src/input/ost/frontend.h b/src/input/ost/frontend.h deleted file mode 100644 index f052f9ced..000000000 --- a/src/input/ost/frontend.h +++ /dev/null @@ -1,211 +0,0 @@ -/* - * frontend.h - * - * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> - * & Ralph Metzler <ralph@convergence.de> - * for convergence integrated media GmbH - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * 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 Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -#ifndef _FRONTEND_H_ -#define _FRONTEND_H_ - -#if defined(__sun) -#include <sys/ioccom.h> -#else -#include <asm/types.h> -#endif - -#define ENOSIGNAL 768 -#ifndef EBUFFEROVERFLOW -#define EBUFFEROVERFLOW 769 -#endif - - -typedef uint32_t FrontendStatus; - -/* bit definitions for FrontendStatus */ -#define FE_HAS_POWER 1 -#define FE_HAS_SIGNAL 2 -#define FE_SPECTRUM_INV 4 -#define FE_HAS_LOCK 8 -#define FE_HAS_CARRIER 16 -#define FE_HAS_VITERBI 32 -#define FE_HAS_SYNC 64 -#define FE_TUNER_HAS_LOCK 128 - - -/* possible values for spectral inversion */ -typedef enum { - INVERSION_OFF, - INVERSION_ON, - INVERSION_AUTO -} SpectralInversion; - -/* possible values for FEC_inner/FEC_outer */ -typedef enum { - FEC_AUTO, - FEC_1_2, - FEC_2_3, - FEC_3_4, - FEC_5_6, - FEC_7_8, - FEC_NONE -} CodeRate; - - -typedef enum { - QPSK, - QAM_16, - QAM_32, - QAM_64, - QAM_128, - QAM_256 -} Modulation; - - -typedef enum { - TRANSMISSION_MODE_2K, - TRANSMISSION_MODE_8K -} TransmitMode; - -typedef enum { - BANDWIDTH_8_MHZ, - BANDWIDTH_7_MHZ, - BANDWIDTH_6_MHZ -} BandWidth; - - -typedef enum { - GUARD_INTERVAL_1_32, - GUARD_INTERVAL_1_16, - GUARD_INTERVAL_1_8, - GUARD_INTERVAL_1_4 -} GuardInterval; - - -typedef enum { - HIERARCHY_NONE, - HIERARCHY_1, - HIERARCHY_2, - HIERARCHY_4 -} Hierarchy; - - -typedef struct { - uint32_t SymbolRate; /* symbol rate in Symbols per second */ - CodeRate FEC_inner; /* forward error correction (see above) */ -} QPSKParameters; - - -typedef struct { - uint32_t SymbolRate; /* symbol rate in Symbols per second */ - CodeRate FEC_inner; /* forward error correction (see above) */ - Modulation QAM; /* modulation type (see above) */ -} QAMParameters; - - -typedef struct { - BandWidth bandWidth; - CodeRate HP_CodeRate; /* high priority stream code rate */ - CodeRate LP_CodeRate; /* low priority stream code rate */ - Modulation Constellation; /* modulation type (see above) */ - TransmitMode TransmissionMode; - GuardInterval guardInterval; - Hierarchy HierarchyInformation; -} OFDMParameters; - - -typedef enum { - FE_QPSK, - FE_QAM, - FE_OFDM -} FrontendType; - - -typedef struct { - uint32_t Frequency; /* (absolute) frequency in Hz for QAM/OFDM */ - /* intermediate frequency in kHz for QPSK */ - SpectralInversion Inversion; /* spectral inversion */ - union { - QPSKParameters qpsk; - QAMParameters qam; - OFDMParameters ofdm; - } u; -} FrontendParameters; - - -typedef enum { - FE_UNEXPECTED_EV, /* unexpected event (e.g. loss of lock) */ - FE_COMPLETION_EV, /* completion event, tuning succeeded */ - FE_FAILURE_EV /* failure event, we couldn't tune */ -} EventType; - - -typedef struct { - EventType type; /* type of event, FE_UNEXPECTED_EV, ... */ - - long timestamp; /* time in seconds since 1970-01-01 */ - - union { - struct { - FrontendStatus previousStatus; /* status before event */ - FrontendStatus currentStatus; /* status during event */ - } unexpectedEvent; - FrontendParameters completionEvent; /* parameters for which the - tuning succeeded */ - FrontendStatus failureEvent; /* status at failure (e.g. no lock) */ - } u; -} FrontendEvent; - -typedef struct { - FrontendType type; - uint32_t minFrequency; - uint32_t maxFrequency; - uint32_t maxSymbolRate; - uint32_t minSymbolRate; - uint32_t hwType; - uint32_t hwVersion; -} FrontendInfo; - - -typedef enum { - FE_POWER_ON, - FE_POWER_STANDBY, - FE_POWER_SUSPEND, - FE_POWER_OFF -} FrontendPowerState; - - -#define FE_SELFTEST _IO('o', 61) -#define FE_SET_POWER_STATE _IOW('o', 62, FrontendPowerState) -#define FE_GET_POWER_STATE _IOR('o', 63, FrontendPowerState*) -#define FE_READ_STATUS _IOR('o', 64, FrontendStatus*) -#define FE_READ_BER _IOW('o', 65, uint32_t*) -#define FE_READ_SIGNAL_STRENGTH _IOR('o', 66, __s32*) -#define FE_READ_SNR _IOR('o', 67, __s32*) -#define FE_READ_UNCORRECTED_BLOCKS _IOW('o', 68, uint32_t*) -#define FE_GET_NEXT_FREQUENCY _IOW('o', 69, uint32_t*) -#define FE_GET_NEXT_SYMBOL_RATE _IOW('o', 70, uint32_t*) - -#define FE_SET_FRONTEND _IOW('o', 71, FrontendParameters*) -#define FE_GET_FRONTEND _IOR('o', 72, FrontendParameters*) -#define FE_GET_INFO _IOR('o', 73, FrontendInfo*) -#define FE_GET_EVENT _IOR('o', 74, FrontendEvent*) - -#endif /*_FRONTEND_H_*/ - diff --git a/src/input/ost/sec.h b/src/input/ost/sec.h deleted file mode 100644 index 8863df268..000000000 --- a/src/input/ost/sec.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * sec.h - * - * Copyright (C) 2000 Ralph Metzler <ralph@convergence.de> - * & Marcus Metzler <marcus@convergence.de> - for convergence integrated media GmbH - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 - * 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 Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - */ - -#ifndef _OST_SEC_H_ -#define _OST_SEC_H_ - -#define SEC_MAX_DISEQC_PARAMS 3 - -struct secDiseqcCmd { - uint8_t addr; - uint8_t cmd; - uint8_t numParams; - uint8_t params[SEC_MAX_DISEQC_PARAMS]; -}; - -typedef uint32_t secVoltage; - -enum { - SEC_VOLTAGE_OFF, - SEC_VOLTAGE_LT, - SEC_VOLTAGE_13, - SEC_VOLTAGE_13_5, - SEC_VOLTAGE_18, - SEC_VOLTAGE_18_5 -}; - -#define SEC_VOLTAGE_HORIZONTAL SEC_VOLTAGE_18 -#define SEC_VOLTAGE_VERTICAL SEC_VOLTAGE_13 - -typedef uint32_t secToneMode; - -typedef enum { - SEC_TONE_ON, - SEC_TONE_OFF -} secToneMode_t; - - -typedef uint32_t secMiniCmd; - -typedef enum { - SEC_MINI_NONE, - SEC_MINI_A, - SEC_MINI_B -} secMiniCmd_t; - -struct secStatus { - int32_t busMode; - secVoltage selVolt; - secToneMode contTone; -}; - -enum { - SEC_BUS_IDLE, - SEC_BUS_BUSY, - SEC_BUS_OFF, - SEC_BUS_OVERLOAD -}; - -struct secCommand { - int32_t type; - union { - struct secDiseqcCmd diseqc; - uint8_t vsec; - uint32_t pause; - } u; -}; - -struct secCmdSequence { - secVoltage voltage; - secMiniCmd miniCommand; - secToneMode continuousTone; - - uint32_t numCommands; - struct secCommand* commands; -}; - -enum { - SEC_CMDTYPE_DISEQC, - SEC_CMDTYPE_VSEC, - SEC_CMDTYPE_PAUSE -}; - - -#define SEC_GET_STATUS _IOR('o',91,struct secStatus *) -#define SEC_RESET_OVERLOAD _IOW('o',92,void) -#define SEC_SEND_SEQUENCE _IOW('o',93,struct secCmdSequence *) -#define SEC_SET_TONE _IOW('o',94,secToneMode) -#define SEC_SET_VOLTAGE _IOW('o',95,secVoltage) - -typedef enum { - SEC_DISEQC_SENT, - SEC_VSEC_SENT, - SEC_PAUSE_COMPLETE, - SEC_CALLBACK_ERROR -} secCallback_t; - - -#endif /*_OST_SEC_H_*/ |