opendigitalradio / etisnoop Goto Github PK
View Code? Open in Web Editor NEWetisnoop is a ETI file analyser
License: GNU General Public License v3.0
etisnoop is a ETI file analyser
License: GNU General Public License v3.0
I get an error when compiling under Ubuntu 23.10 with 9734cb9.
make[1]: *** [Makefile:695: src/ensembledatabase.o] Error 1
make[1]: Leaving directory '/home/andreas/apps/etisnoop'
make: *** [Makefile:421: all] Error 2
Seems in src/ensembledatabase.hpp
#include <stdint.h>
was missing. Only then I could compile.
For displaying the protection level in the yaml file this only works for PL 1A to 4A. For 1B to 4B it shows "unknown"
Seems you have always to add 1 in order to get the correct EEP protection level for FIG (only there!).
There is no EEP 0-A and no EEP-0-B. In my example below I wrote this file:
Subch 0x1
start_addr 0
long
**EEP 0-A**
subch size 144
Subch 0x5
start_addr 360
long
**EEP 0-B**
subch size 81
And the CUs are wrong, for 96 kBit
1A is 144 CU, 2A is 96, 3A is 72, 4A is 48, and so on.
TPL - Sub-channel Type and Protection Level [0x20 - Equal Error Protection. 1-A, 1/4, 16 CUs]
TPL - Sub-channel Type and Protection Level [0x21 - Equal Error Protection. 2-A, 3/8, 8 CUs]
TPL - Sub-channel Type and Protection Level [0x22 - Equal Error Protection. 3-A, 1/2, 6 CUs]
TPL - Sub-channel Type and Protection Level [0x23 - Equal Error Protection. 4-A, 3/4, 4 CUs]
TPL - Sub-channel Type and Protection Level [0x24 - Equal Error Protection. 1-B, 4/9, 27 CUs]
TPL - Sub-channel Type and Protection Level [0x25 - Equal Error Protection. 2-B, 4/7, 21 CUs]
TPL - Sub-channel Type and Protection Level [0x26 - Equal Error Protection. 3-B, 4/6, 18 CUs]
TPL - Sub-channel Type and Protection Level [0x27 - Equal Error Protection. 4-B, 4/5, 15 CUs]
Attached file from Austria includes a service with German special character ö, but it seems that etisnoop uses several different character tables to display it ...
$ LC_ALL=C etisnoop -n 10000 -i ./ors_8a_2020-06-14_1052.eti | LC_ALL=C grep "live" -B 10 | sort | uniq
Identified ETI type RAW
ERRORS: Not yet in DB
ERRORS: Not yet in DB
ERRORS: Not yet in DB
Error: FCT not contiguous
ERRORS: Not yet in DB
ERRORS: Not yet in DB
Incomplete frame in ETI file!
ETI file read error
-
--
Charset: 0
CRC: OK
Decoding:
FIB: 1
FIB: 2
FIG: 1/1
FIGs:
Label: "jö.live "
Length: 21
OE: 0
Service ID: 0xAD56
Short label: j�.live
Short label mask: 0xFE00
$ LC_ALL=C etisnoop -n 10000 -i ./ors_8a_2020-06-14_1052.eti -s /tmp/ors_8a_2020-06-14_1052.yaml
produces this yaml-file:
ors_8a_2020-06-14_1052.yaml.zip
where you can see
label: jö.live
shortlabel: j�.live
If the input is a fic file, the yaml-file is 0 bytes:
$ etisnoop -I foo.fic -v -s foo.yaml
I did it because you mentioned this on page 33 of http://opendigitalradio.github.io/mmbtools-doc/mmbtools.pdf
For example:
$ curl -s freedabcork.ddns.net:7980/fic | etisnoop -I /dev/stdin -s /tmp/test.yaml
Compiling etisnoop on CentOS 7 fails with the following error:
fig0_21.cpp:193:56: error: expected ')' before 'PRId64'
sprintf(tmpbuf, ", database key=0x%09" PRId64, key);
After switching from #include <inttypes.h>
to #include <cinttypes>
etisnoop compiles correctly:
sed -i -e 's/^\(#include\) <inttypes.h>/\1 <cinttypes>/' \
etisnoop.cpp utils.hpp wavfile.h
The option -d N
should decode subchannel N.
In fact N seems to be not the real subchannel, but it's numbered in nearly ascending order defined by etisnoop itself.
For example 5C (Bundesmux):
see older file from last year (makes no difference)
bumux1.zip
$ ni2out --list < bumux1.eti
DR Deutschland (0x10bc)
0 : KLASSIK RADIO (0xd75b) Pri subch= 6 start=198 CUs= 54 PL=eep-3a bitrate=72 DAB+
1 : sunshine live (0x15dc) Pri subch=21 start=336 CUs= 54 PL=eep-3a bitrate=72 DAB+
2 : Radio Horeb (0xd01c) Pri subch= 5 start=162 CUs= 36 PL=eep-3a bitrate=48 DAB+
3 : ERF Plus (0x1a64) Pri subch= 2 start= 0 CUs= 54 PL=eep-3a bitrate=72 DAB+
4 : Dlf (0xd210) Pri subch=10 start=480 CUs=104 PL=eep-2a bitrate=104 DAB+
5 : Dlf Kultur (0xd220) Pri subch=11 start=584 CUs=112 PL=eep-2a bitrate=112 DAB+
6 : Dlf Nova (0xd230) Pri subch=12 start=696 CUs=104 PL=eep-2a bitrate=104 DAB+
7 : DRadio DokDeb (0xd240) Pri subch=13 start=800 CUs= 36 PL=eep-3a bitrate=48 DAB+
8 : Schwarzwaldradio (0x100d) Pri subch= 7 start=252 CUs= 42 PL=eep-2b bitrate=64 DAB+
9 : ENERGY (0x1a45) Pri subch= 4 start=108 CUs= 54 PL=eep-3a bitrate=72 DAB+
10 : SCHLAGERPARADIES (0x10c3) Pri subch=20 start=294 CUs= 42 PL=eep-2b bitrate=64 DAB+
11 : Absolut relax (0x17fa) Pri subch= 3 start= 54 CUs= 54 PL=eep-3a bitrate=72 DAB+
12 : RADIO BOB! (0x15dd) Pri subch=22 start=390 CUs= 54 PL=eep-3a bitrate=72 DAB+
etisnoop -i bumux1.eti -d 0
will extract ERF Plus
etisnoop -i bumux1.eti -d 1
will extract Absolut relax, although SCId 1 is not defined
etisnoop -i bumux1.eti -d 2
will extract ENERGY, not ERF Plus
etisnoop -i bumux1.eti -d 3
will extract Radio Horeb, not Absolute relax
and so on (0-8 and 10-15 for audio, 9 is the EPG and 10 and 16 are the TPEG services).
But when I sort all subchannels I wonder why N=9 should be EPG
subchid:02 prot:3A-EEP bitrate: 64 scids:0 scty: 63 (AAC) label:ERF Plus [PAD]
subchid:03 prot:3A-EEP bitrate: 72 scids:0 scty: 63 (AAC) label:Absolut relax [PAD]
subchid:04 prot:3A-EEP bitrate: 72 scids:0 scty: 63 (AAC) label:ENERGY [PAD]
subchid:05 prot:3A-EEP bitrate: 48 scids:0 scty: 63 (AAC) label:radio horeb [PAD]
subchid:06 prot:3A-EEP bitrate: 72 scids:0 scty: 63 (AAC) label:KLASSIK RADIO [PAD]
subchid:07 prot:2B-EEP bitrate: 64 scids:0 scty: 63 (AAC) label:Schwarzwaldradio [PAD]
subchid:10 prot:2A-EEP bitrate:104 scids:0 scty: 63 (AAC) label:Dlf [PAD]
subchid:11 prot:2A-EEP bitrate:112 scids:0 scty: 63 (AAC) label:Dlf Kultur [PAD]
subchid:12 prot:2A-EEP bitrate:104 scids:0 scty: 63 (AAC) label:Dlf Nova [PAD]
subchid:13 prot:3A-EEP bitrate: 48 scids:0 scty: 63 (AAC) label:DRadio DokDeb [PAD]
subchid:14 prot:3A-EEP bitrate: 32 scid: 001 packet data DRadio Daten
subchid:20 prot:2B-EEP bitrate: 64 scids:0 scty: 63 (AAC) label:SCHLAGERPARADIES [PAD]
subchid:21 prot:3A-EEP bitrate: 72 scids:0 scty: 63 (AAC) label:sunshine live [PAD]
subchid:22 prot:3A-EEP bitrate: 72 scids:0 scty: 63 (AAC) label:RADIO BOB! [PAD]
subchid:30 prot:3A-EEP bitrate: 16 scid: 024 packet data EPG Deutschland
subchid:31 prot:3A-EEP bitrate: 16 scid: 023 packet data TPEG
subchid:33 prot:3A-EEP bitrate: 16 scid: 021 packet data TPEG_MM
Remark: All outputs below are from -s file.txt
If you extract eti from the rawfiles from https://sdr.kt.agh.edu.pl/sdrdab-decoder/download.html (for example use eti-stuff from Jan, https://github.com/JvanKatwijk/eti-stuff ), you will see that special characters are not supported:
- service_id: 0x3222
subchannel_id: 0x2
label: PR Dw�jka
shortlabel: Dw�jka
instead of Dwójka.
Or in Vienna,
- service_id: 0xad0b
subchannel_id: 0xd
label: ARB×-Radio
shortlabel: ARB×
instead of ARBÖ.
BTW: the normal -v output does not mention ARBÖ-Radio at all
$ etisnoop -v < ~/wien_16072017.eti | grep Rad
Label: "NOW Radio "
Label: "MEGA Radio "
Label: "Radio U1 Tirol "
In Nitra, Slovakia, the mux is in unicode (said user basicmaster)
FICDecoder: SId 0x5005: programme service label 'Rádio Litera'
(output from dablin)
but etisnoop writes wrong data (please note short label Ro Liter instead of R Litera)
- service_id: 0x5005
subchannel_id: 0x1
label: Rádio Litera
shortlabel: Ro Liter
If you analyse
with
etisnoop -i trt.eti -v -s trt.yaml
the output shows both protection levels, A and (!) B. It's A only according to other tools.
more /tmp/trt.yaml
# Statistics from ETISnoop. This file should be valid YAML
---
ensemble:
id: 0x4fff
label: TRT DAB+
shortlabel: DAB+
audio:
- service_id: 0x32
subchannel_id: 0xb
label: +Radyo 1
shortlabel: +Radyo 1
subchannel:
id: 11
SAd: 0
protection: EEP 4-A
protection: EEP 4-B
protection: unknown
size: 48
Missing src/fig0_7.cpp
I have used this script to install.
It gives error:
make[1]: *** No rule to make target 'src/fig0_7.cpp', needed by 'src/fig0_7.o'. Stop
make[1]: Leaving directory '/home/user/mmbtools/dab/etisnoop'
make: *** [Makefile:418: all] Error 2
Thank You!
We're packaging etisnoop on CentOS 7. It would be helpful if you could create a release tag.
Many thanks!
Today DAB Italia started a data package called "Cisco test" nationwide, so I found out that the yaml file does not mention the short and long label for this type of streams.
http://www.digitalbitrate.com/dtv.php?brk=2&mux=12C&pid=80&live=171&sec=0&lang=fr
- service_id: 0x0
subchannel_id: 0x16
label:
shortlabel:
subchannel:
id: 22
SAd: 172
protection: EEP 3-A
size: 180
audio:
average: -90 -90
peak: -90 -90
$ etisnoop -i /media/andreas/Data/dab/12c_italia_cisco.eti -n 100 | grep Cisco -A 1 -B 6
Identified ETI type RAW
ERRORS: Not yet in DB
ERRORS: Not yet in DB
ERRORS: Not yet in DB
FIG: 1/5
Length: 23
OE: 0
Decoding:
Charset: 0
Service ID: 0xE0500000
Label: "Cisco Test "
Short label mask: 0xFE00
--
FIG: 1/5
Length: 23
OE: 0
Decoding:
Charset: 0
Service ID: 0xE0500000
Label: "Cisco Test "
Short label mask: 0xFE00
Decoded 100 ETI frames
Hi,
I've come across a weird issue: the line 'DG flag: 0 data groups are [not] used to transport the service component' always has a newline character after 'DG flag: 0', thus producing invalid yaml.
This is what I get:
DG flag: 0 data groups are used to transport the service component DSCTy: 60 Multimedia Object Transfer (MOT)
This is what yaml expects:
DG flag: 0 data groups are used to transport the service component DSCTy: 60 Multimedia Object Transfer (MOT)
This little script helps, but it's not really a solution;
#!/usr/bin/env bash
cp $1 $1--backup
sed -i 's/data groups are used to transport the service component//' $1
sed -i 's/DG flag: 0/DG flag: 0 data groups are used to transport the service component/' $1
PS I'm sorry that I can't currently repair this myself, gdb is crashing on me.
When I try to make it under Ubuntu 16.04 64bit, I get the following (German) error
...
CC src/wavfile.o
CC src/fec/decode_rs_char.o
CC src/fec/encode_rs_char.o
CC src/fec/init_rs_char.o
CXXLD etisnoop
/usr/bin/ld: cannot find -lboost_regex
collect2: error: ld returned 1 exit status
Makefile:575: die Regel für Ziel „etisnoop“ scheiterte
make[1]: *** [etisnoop] Fehler 1
make[1]: Verzeichnis „/home/andreas/etisnoop“ wird verlassen
Makefile:390: die Regel für Ziel „all“ scheiterte
make: *** [all] Fehler 2
An older version I have downloaded in October works.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.