Etisnoop
From Opendigitalradio
Contents |
ETISnoop
ETISnoop is a small tool developed by CSP.it and Opendigitalradio that can decode some FIC information from a ETI file, extract the AAC data from a subchannel and decode it to a wav file.
It is on Github: https://github.com/Opendigitalradio/etisnoop
Compilation
It requires libfaad2 and a C++ compiler with complete C++11 support.
To compile etisnoop:
git clone https://github.com/Opendigitalradio/etisnoop.git cd etisnoop ./bootstrap.sh # Only needed if you do not have a release containing a ./configure script ./configure make sudo make install
Usage
The tool can show ETI information, decode the FIG carousel and extract a DAB+ stream
Usage: etisnoop [options] [(-i|-I) filename]
-i the file contains RAW ETI -I the file contains FIC -v increase verbosity (can be given more than once) -d N decode subchannel N into .msc file and if DAB+, decode to .wav file -s <filename.yaml> statistics mode: decode all subchannels and measure audio level, write statistics to file -n N stop analysing after N ETI frames -f analyse FIC carousel (no YAML output) -r analyse FIG rates in FIGs per second -R analyse FIG rates in frames per FIG -w decode CRC-DABMUX and ODR-DabMux watermark. -e decode frames with SYNC error and decode FIGs with invalid CRC -F <type>/<ext> add FIG type/ext to list of FIGs to display. if the option is not given, all FIGs are displayed.
Example:
% ./etisnoop -i ../eti/funk.raw.eti -v | head -n50 SYNC: ff 07 3a b6 ERR: ff [No error] Sync FSYNC: 07 3a b6 [OK] LDATA FC - Frame Characterization field: 00 81 10 7a FCT - Frame Count: 00 [0] FICF - Fast Information Channel Flag [1 - FIC Information are present] NST - Number of streams [1] FP - Frame Phase: 00 [0] MID - Mode Identity: 02 [Mode 2] FL - Frame Length [122 words] STC - Stream Characterisation STC - Stream Characterisation: 28 00 48 30 [Stream number 0] SCID - Sub-channel Identifier [10] SAD - Sub-channel Start Address [0] TPL - Sub-channel Type and Protection Level [0x12 - Unequal Error Protection. Table switch 0, UEP index 2] STL - Sub-channel Stream Length [48 => 128 kbit/s] EOH - End Of Header: 00 00 16 7c MNSC - Multiplex Network Signalling Channel: 00 00 Header CRC: 16 7c [CRC OK] FIC Data (96 bytes) FIG 0 [5 bytes]: 00 c0 00 00 00 FIG 0/0: C/N=0 OE=0 P/D=0: c0 00 00 00 Ensamble ID=0xc000 (Country id=12, Ensamble reference=0), Change flag=0, Alarm flag=0, CIF Count=0/0 FIB CRC: ea f1 [FIB CRC OK] FIG 0 [5 bytes]: 08 00 33 00 0a FIG 0/8: C/N=0 OE=0 P/D=0: 00 33 00 0a FIB CRC: a2 9f [FIB CRC OK] FIG 1 [21 bytes]: 01 00 33 46 75 6e 6b 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 FIG 1/1: OE=0, Charset=0: 00 33 46 75 6e 6b 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 Service ID 0x0033 label: "Funk", Short label mask: 0xFF00 FIB CRC: 6f b3 [FIB CRC OK] Stream Data: ff fc 84 00 bc f1 21 22 22 44 44 33 33 22 22 22 22 24 92 40 00 00 00 00 00 00 00 00 aa aa aa aa aa aa aa ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 6d b5 b6 db 6d b6 d6 c5 b1 6c 5b 1b 6d b6 db 6d f3 e7 cf 9f 3e 7c f9 ad 6b 5a d6 db 5b 6d b6 db 6d 6c 5b 16 c5 b1 b6 db 6d b6 df 3e 7c f9 f3 e7 cf 9a d6 b5 ad 6d b5 b6 db 6d b6 d6 c5 b1 6c 5b 1b 6d b6 db 6d f3 e7 cf 9f 3e 7c f9 ad 6b 5a d6 db 5b 6d b6 db 6d 6c 5b 16 c5 b1 b6 db 6d b6 df 3e 7c f9 f3 e7 cf 9a d6 b5 ad 6d b5 b6 db 6d b6 d6 c5 b1 6c 5b 1b 6d b6 db 6d f3 e7 cf 9f 3e 7c f9 ad 6b 5a d6 db 5b 6d b6 db 6d 6c 5b 16 c5 b1 b6 db 6d b6 df 3e 7c f9 f3 e7 cf 9a d6 b5 ad 6d b5 b6 db 6d b6 d6 c5 b1 6c 5b 1b 6d b6 db 6d f3 e7 cf 9f 3e 7c f9 ad 6b 5a d6 db 5b 6d b6 db 6d 6c 5b 16 c5 b1 b6 db 6d b6 df 3e 7c f9 f3 e7 cf 9a d6 b5 ad 6d b5 b6 db 6d b6 d6 c5 b1 6c 5b 1b 6d b6 db 6d f3 e7 cf 9f 3e 7c f9 ad 6b 5a d6 db 5b 6d b6 db 6d 6c 5b 16 c5 b1 b6 db 6d b6 df 3e 7c f9 f3 e7 cf 9a d6 b5 ad 6d b5 b6 db 6d b6 d6 c5 b1 6c 5b 1b 6d b6 db 6d f3 e7 cf 9f 3e 7c f9 ad 6b 5a d6 db 5b 6d b6 db 6d 6c 5b 16 c5 b1 b6 db 6d b6 df 3e 7c f9 f3 e7 cf 9a d6 b5 ad 00 00 00 00 00 51 8b 8b 00 00 [0] EOF: bf 2d ff ff CRC: bf 2d [CRC OK] RFU: ff ff TIST - Time Stamp: ff 40 a0 00 [256 ms]
Acknowledgements
Many thanks to the team from CSP.it : http://rd.csp.it