Giter Club home page Giter Club logo

eti-tools's People

Contributors

andimik avatar athoik avatar basicmaster avatar caveman99 avatar enosat avatar jpuigs avatar lars18th avatar mrwish7 avatar newspaperman avatar piratfm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eti-tools's Issues

dvb-ip-mpe2ts not installed

Hello all
Please need your help
I tried to compile and install the Tools but the DVB-IP-MPE2TS did not show after the Installation is finished.
thanx a lot for your help

fedi2edi cannot compile in cygwin

Today I tried to compile eti-tools in cygwin. But it fails:

cc -O2 -Wall -I. -c -o edi2eti.o edi2eti.c
cc -o edi2eti network.o af_parser.o pf_parser.o tag_parser.o crc.o eti_assembler.o logging.o edi2eti.o -lm
cc -O2 -Wall -I. -c -o fedi2eti.o fedi2eti.c
In file included from /usr/include/sys/fcntl.h:3,
                 from /usr/include/fcntl.h:12,
                 from fedi2eti.c:22:
edi_parser.h:109:14: error: expected identifier or '(' before numeric constant
  109 |     uint32_t FSYNC:24;
      |              ^~~~~
In file included from fedi2eti.c:29:
edi_parser.h:110:1: warning: no semicolon at end of struct or union
  110 | } PACKED;
      | ^
make: *** [Makefile:39: fedi2eti.o] Error 1

Any idea? This error does not appear in Linux.

Data services

Is it possible to list too DATA services on ni2http -list ?

Segmentation fault (core dumped)

Dear All Hello,

I have tested the mpe2ts and the dvb-ip-mpe2ts for the ts file on the linke below and I received the Error :
Segmentation fault (core dumped)

the Link to download the TS
https://we.tl/t-oXk3uKhFvc

Some tests are done previously on some samples are Okey

Thanx for Help.

edi2eti: allow STDIN for input

It would be great if stdin could be used as input, instead of an UDP stream....this would allow to use e.g. other sources or dumps.

ni2http: generated AAC audio streams playing too slow

Hi!

I am using the following command line to generate the live audio streams:
./eti-cmdline-rawfiles -F ./testpipe -O - | ~user/rtlsdr/eti-tools/ni2http -c ~user/rtlsdr/eti-tools/ni2http.conf

The ni2http output is:

Period = 8000
ensemble Radio fuer NRW   detected
program ( 1)     WDR 5                   D395 is in the list
program ( 2)     WDR 3                   D393 is in the list
program ( 3)     1LIVE                   D391 is in the list
program ( 4)     WDR 2                   D392 is in the list
program ( 5)     WDR 4                   D394 is in the list
program ( 6)     1LIVE diGGi             DF91 is in the list
program ( 7)     WDRcosmo                D496 is in the list
program ( 8)     KinderRadioKanal        DF95 is in the list
program ( 9)     VERA                    DF92 is in the list
program (10)     Domradio                109D is in the list
program (11)     WDR Event               DF96 is in the list
there might be a DAB signal here
still at most 10seconds to wait
yes, here we go
Handling ensemble Radio fuer NRW  until you quit
INFO:  channels: 2timated snr:  8, fibquality 100
INFO:  sid[54161]: channel_map[0] = channel[0]
INFO:  Writing to: /tmp/einlive.mp4a
INFO:  sid[54162]: channel_map[414] = channel[6]
INFO:  connecting to: http://localhost:8000/r2
INFO:  2 channels will be streamed
ERROR: DAB+ firecrccheck: ERROR
ERROR: DAB+ firecrccheck: ERROR
ERROR: DAB+ firecrccheck: ERROR
ERROR: DAB+ firecrccheck: ERROR
DAB+ errors: 1  estimated snr:  8, fibquality 100

If I play the above generated file /tmp/einlive.mp4a with VLC, it says 48 kHz sampling rate and AAC with SBR. From the DAB+ radio software "welle.io" I know that at least the sampling rate of 48 kHz is correct for this station. I am not sure about SBR.

Thay playback sounds like it is playing a little bit to slow. Voices and music are deeper in terms of frequencies.

The input raw file of eti-cmdline-rawfiles is a pipe. The pipe is fed by "nc <ip_of_rtl_tcp> > ./testpipe

The DAB+ radio software "welle.io" plays fine with the same RTL_TCP server.

So do you have any idea what the reason might be for this?

na2ni fails with MuxCo feeds

Hi,

I've succesfully used eti-tools to convert the BBC and D1 DAB feeds to NI streams, but these tools fail with the 3 MuxCo muxes from the same transponder with (in na2ni) "ERROR: Can't find sync".

I can provide some test TS recordings if you need them.

Thanks.

make clean deletes executables

I'm not sure if I am right but when I build eti-tools and then want to clean up by saying make clean it also deletes the executables na2ni, na2http and ts2na.

eti-tools to improve odr-dab-mux to easydab v2 board connection performance

Hi !
I would like to understand if your software can optimize the connection between odr-dab-mux (currently virtualized in datacenter) and easydab v2 card.
Currently they are connected through ZeroMQ (latency 55ms) but I often detect disconnections, I think due to the insufficient buffer of the easydab V2 card.
My idea is to "transmit" the signal (already compacted) by odr-dab-mux in another protocol (?) more reliable to variations in the public network, and receive this stream through "eti-tools" and then transmit via local network to the easydab v2 card .
However any other possible changes that solve the problem.
Do you think it is possible? thank you

Segfault in ni2http after longer time of operation

Hi,

I'm using ni2http with dab2eti with the German national DAB multiplex:
dab2eti 178352000 | ni2http -c /home/strey/Software/eti-tools/ni2http.conf

ni2http.conf contains all services of this ensemble and feeds them to Icecast2.

From time to time the whole process stops with a segfault message. Here is an excerpt form my system log:
[strey@mischka ~]$ journalctl --no-pager | grep ni2http
Nov 12 13:30:19 mischka kernel: ni2http[2528]: segfault at 10d157a6 ip 0000000000403d63 sp 00007fff23cbc8d0 error 4 in ni2http[400000+14000]
Nov 12 13:30:19 mischka systemd-coredump[6880]: Process 2528 (ni2http) of user 1000 dumped core.
Nov 12 16:03:43 mischka kernel: ni2http[15521]: segfault at 7cd6c585 ip 0000000000403d63 sp 00007ffe97186480 error 4 in ni2http[400000+14000]
Nov 12 16:03:43 mischka systemd-coredump[31377]: Process 15521 (ni2http) of user 1000 dumped core.
Nov 12 16:11:56 mischka kernel: ni2http[6524]: segfault at a8f000 ip 0000000000406593 sp 00007fff4892e1a0 error 4 in ni2http[400000+14000]
Nov 12 16:11:56 mischka systemd-coredump[6777]: Process 6524 (ni2http) of user 1000 dumped core.
Nov 12 16:27:04 mischka kernel: ni2http[17425]: segfault at 2090000 ip 0000000000406593 sp 00007ffc2f68eb40 error 4 in ni2http[400000+14000]
Nov 12 16:27:04 mischka systemd-coredump[21449]: Process 17425 (ni2http) of user 1000 dumped core.
Nov 12 17:02:43 mischka kernel: ni2http[22844]: segfault at ffffffffcc54cff2 ip 0000000000403d63 sp 00007ffe4abb2280 error 5 in ni2http[400000+14000]
Nov 12 17:02:43 mischka systemd-coredump[25456]: Process 22844 (ni2http) of user 1000 dumped core.
Nov 12 21:06:01 mischka kernel: ni2http[21072]: segfault at c007386a ip 0000000000403d63 sp 00007ffc37a58900 error 4 in ni2http[400000+14000]
Nov 12 21:06:01 mischka systemd-coredump[29598]: Process 21072 (ni2http) of user 1000 dumped core.

Best regards
Michael

Idea: ni2eti_tcp server tool

Hi,

I like to know your opinion about the idea to incorporate a new tool to the "eti-tools" package:

  • The name of the tool will be ni2eti_tcp.
  • The source skeleton can be derived from the current ni2http code.
  • This tool can input ETI-NI frames from one or more files, even from fifos.
  • The output is a TCP listening socket with one ETI-NI bitstream.
  • The TCP protocol is based on the RTL_TCP format.
  • The command line will be usage: ./ni2eti_tcp [-i <inputfile1>:freq1,<inputfile2>:freq2,<inputfile3>:freq3,...] [ip:port].

And regarding the TCP protocol, a brief description:

  • It starts with 12 bytes with a format description: ETI-NI\0\0\0\0\0\0 (in the future other formats can be supported) (any string starting with RTL will be forbidden).
  • After initial 12 bytes the ETI-NI bitstream is sended byte-to-byte in chuncks of 6144 bytes.
  • At any time, the server will accept commands in the form of the RTL_TCP protocol. See http://github.com/osmocom/rtl-sdr/blob/master/src/rtl_tcp.c#L306
  • Only the command 0x01 (Set Frequency) is accepted, all others be discarded.
  • The command "Set Frequency" will be used for charging the source (inputfile1, inputfile2, etc.).

And for the first iteration the support for charging the frequency and use multiple inputs isn't required.
How do you feel about this?

ni2http used with Icecast2 (2.4.4) cause buffer overflow.

Hi !
As this is my very first issue submission please excuse any lack of information.

I'm trying to implement dab+ radio recording in company I'm working for.
Using RTL-SDR v3 USB dongle + dab2eti (or eti-cmdline) Im able to capture full MUX (polish dab+ / 11 channels) into ETI file without issue.
Ideally this should be piped into ni2http to recreate 'pseudo streaming' with help of Icecast. ( Everything just localy on the same machine)
I manage to configure everything as (I hope) it should be done. It works, I was able to record each channel via ffmpeg from Icecast's mountpoint.
But after about 1 hour (not regular time frame) I getting buffer overflow detection by libc and SIGABRT.

*** buffer overflow detected ***: ./ni2http terminated
======= Backtrace: =========
/lib64/libc.so.6(+0x6fbcb)[0x7f921dfc1bcb]
/lib64/libc.so.6(__fortify_fail+0x37)[0x7f921e049df7]
/lib64/libc.so.6(+0xf5ef0)[0x7f921e047ef0]
./ni2http[0x403df9]
./ni2http[0x4041cd]
./ni2http[0x4026c4]
/lib64/libc.so.6(__libc_start_main+0xf0)[0x7f921df72640]
./ni2http[0x402ee9]
======= Memory map: ========
00400000-00413000 r-xp 00000000 09:7f 18859408 /home/jwrona/eti-tools/ni2http
00612000-00613000 r--p 00012000 09:7f 18859408 /home/jwrona/eti-tools/ni2http
00613000-00614000 rw-p 00013000 09:7f 18859408 /home/jwrona/eti-tools/ni2http
00614000-00617000 rw-p 00000000 00:00 0
00a13000-00a34000 rw-p 00000000 00:00 0 [heap]
7f921db30000-7f921db46000 r-xp 00000000 09:7e 58721015 /usr/lib64/gcc/x86_64-pc-linux-gnu/5.4.0/libgcc_s.so.1
7f921db46000-7f921dd45000 ---p 00016000 09:7e 58721015 /usr/lib64/gcc/x86_64-pc-linux-gnu/5.4.0/libgcc_s.so.1
7f921dd45000-7f921dd46000 r--p 00015000 09:7e 58721015 /usr/lib64/gcc/x86_64-pc-linux-gnu/5.4.0/libgcc_s.so.1
7f921dd46000-7f921dd47000 rw-p 00016000 09:7e 58721015 /usr/lib64/gcc/x86_64-pc-linux-gnu/5.4.0/libgcc_s.so.1
7f921dd47000-7f921dd51000 r-xp 00000000 09:7f 16954060 /lib64/libnss_files-2.23.so
7f921dd51000-7f921df50000 ---p 0000a000 09:7f 16954060 /lib64/libnss_files-2.23.so
7f921df50000-7f921df51000 r--p 00009000 09:7f 16954060 /lib64/libnss_files-2.23.so
7f921df51000-7f921df52000 rw-p 0000a000 09:7f 16954060 /lib64/libnss_files-2.23.so
7f921df52000-7f921e0e2000 r-xp 00000000 09:7f 16954027 /lib64/libc-2.23.so
7f921e0e2000-7f921e2e1000 ---p 00190000 09:7f 16954027 /lib64/libc-2.23.so
7f921e2e1000-7f921e2e5000 r--p 0018f000 09:7f 16954027 /lib64/libc-2.23.so
7f921e2e5000-7f921e2e7000 rw-p 00193000 09:7f 16954027 /lib64/libc-2.23.so
7f921e2e7000-7f921e2eb000 rw-p 00000000 00:00 0
7f921e2eb000-7f921e3ed000 r-xp 00000000 09:7f 16954049 /lib64/libm-2.23.so
7f921e3ed000-7f921e5ed000 ---p 00102000 09:7f 16954049 /lib64/libm-2.23.so
7f921e5ed000-7f921e5ee000 r--p 00102000 09:7f 16954049 /lib64/libm-2.23.so
7f921e5ee000-7f921e5ef000 rw-p 00103000 09:7f 16954049 /lib64/libm-2.23.so
7f921e5ef000-7f921e606000 r-xp 00000000 09:7f 16954070 /lib64/libpthread-2.23.so
7f921e606000-7f921e805000 ---p 00017000 09:7f 16954070 /lib64/libpthread-2.23.so
7f921e805000-7f921e806000 r--p 00016000 09:7f 16954070 /lib64/libpthread-2.23.so
7f921e806000-7f921e807000 rw-p 00017000 09:7f 16954070 /lib64/libpthread-2.23.so
7f921e807000-7f921e80b000 rw-p 00000000 00:00 0
7f921e80b000-7f921e82e000 r-xp 00000000 09:7f 16954011 /lib64/ld-2.23.so
7f921ea19000-7f921ea1d000 rw-p 00000000 00:00 0
7f921ea2c000-7f921ea2e000 rw-p 00000000 00:00 0
7f921ea2e000-7f921ea2f000 r--p 00023000 09:7f 16954011 /lib64/ld-2.23.so
7f921ea2f000-7f921ea30000 rw-p 00024000 09:7f 16954011 /lib64/ld-2.23.so
7f921ea30000-7f921ea31000 rw-p 00000000 00:00 0
7ffe9986d000-7ffe9988e000 rw-p 00000000 00:00 0 [stack]
7ffe998c8000-7ffe998cc000 r--p 00000000 00:00 0 [vvar]
7ffe998cc000-7ffe998ce000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall]
Przerwane

os-release
NAME=Gentoo
ID=gentoo
PRETTY_NAME="Gentoo/Linux"
ANSI_COLOR="1;32"

uname -a
Linux rtv2 5.15.0-43-generic #46-Ubuntu SMP Tue Jul 12 10:30:17 UTC 2022 x86_64 11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz GenuineIntel GNU/Linux

Im trying to solve it myself (im newbe in this) with help of GDB, Valgrind and also Infer just to get more ideas what and where.
I know this doesnt matter if im using ni2http with --delay flag or without, from FILE or piped directly from dab2eti.
Interesting part:
If Im trying to extract just one audio channel by SID (ni2http -d -i file.eti -s 12345 > example.aac) it works, however for each second of 'real time' 2,1sec of audio streaming is being extracted. This obviously lead to end of file to fast and makes impossible offline streaming from file.

Here is output from Valgrind in combination with ni2http from FILE to Icecast2.

,"ftbl":
["[root]"
,"0x4C2A20F: malloc (in /usr/lib64/valgrind/vgpreload_dhat-amd64-linux.so)"
,"0x5BC7B5F: ??? (in /usr/lib64/gcc/x86_64-pc-linux-gnu/5.4.0/libstdc++.so.6.0.21)"
,"0x400F579: ??? (in /lib64/ld-2.23.so)"
,"0x400F68A: ??? (in /lib64/ld-2.23.so)"
,"0x4000B99: ??? (in /lib64/ld-2.23.so)"
,"0x3: ???"
,"0x1FFF0002D6: ???"
,"0x1FFF0002F5: ???"
,"0x1FFF0002FD: ???"
,"0x1FFF000300: ???"
,"0x55FB2AC: ??? (in /lib64/libc-2.23.so)"
,"0x40555A: parse_config (parse_config.c:147)"
,"0x4026F3: main (ni2http.c:975)"
,"0x55FA804: _IO_file_doallocate (in /lib64/libc-2.23.so)"
,"0x5608203: _IO_doallocbuf (in /lib64/libc-2.23.so)"
,"0x560745B: _IO_file_underflow (in /lib64/libc-2.23.so)"
,"0x560827D: _IO_default_uflow (in /lib64/libc-2.23.so)"
,"0x55FC319: _IO_getline_info (in /lib64/libc-2.23.so)"
,"0x55FB130: fgets (in /lib64/libc-2.23.so)"
,"0x4055A3: fgets (stdio2.h:263)"
,"0x4055A3: parse_config (parse_config.c:158)"
,"0x4C2C5E5: calloc (in /usr/lib64/valgrind/vgpreload_dhat-amd64-linux.so)"
,"0x4058DA: parse_config (parse_config.c:192)"
,"0x5698F93: ??? (in /lib64/libc-2.23.so)"
,"0x569A7BC: __res_maybe_init (in /lib64/libc-2.23.so)"
,"0x569B880: ??? (in /lib64/libc-2.23.so)"
,"0x568E377: sethostent (in /lib64/libc-2.23.so)"
,"0x406A18: shout_init (shout.c:70)"
,"0x402829: main (ni2http.c:1032)"
,"0x5605650: fgets_unlocked (in /lib64/libc-2.23.so)"
,"0x569900B: ??? (in /lib64/libc-2.23.so)"
,"0x569AEE1: __nss_database_lookup (in /lib64/libc-2.23.so)"
,"0x569C4EB: __nss_hosts_lookup2 (in /lib64/libc-2.23.so)"
,"0x569B818: ??? (in /lib64/libc-2.23.so)"
,"0x569B8A9: ??? (in /lib64/libc-2.23.so)"
,"0x569AEFD: __nss_database_lookup (in /lib64/libc-2.23.so)"
,"0x55FC097: getdelim (in /lib64/libc-2.23.so)"
,"0x569AF69: __nss_database_lookup (in /lib64/libc-2.23.so)"
,"0x55FC1C7: getdelim (in /lib64/libc-2.23.so)"
,"0x569B031: __nss_database_lookup (in /lib64/libc-2.23.so)"
,"0x569A934: ??? (in /lib64/libc-2.23.so)"
,"0x569B05C: __nss_database_lookup (in /lib64/libc-2.23.so)"
,"0x5679C21: tsearch (in /lib64/libc-2.23.so)"
,"0x569B271: __nss_lookup_function (in /lib64/libc-2.23.so)"
,"0x569B54B: __nss_lookup (in /lib64/libc-2.23.so)"
,"0x569B2E9: __nss_lookup_function (in /lib64/libc-2.23.so)"
,"0x569B4C5: __nss_lookup_function (in /lib64/libc-2.23.so)"
,"0x401AA39: ??? (in /lib64/ld-2.23.so)"
,"0x401662E: ??? (in /lib64/ld-2.23.so)"
,"0x4008B65: ??? (in /lib64/ld-2.23.so)"
,"0x4013906: ??? (in /lib64/ld-2.23.so)"
,"0x400F423: ??? (in /lib64/ld-2.23.so)"
,"0x40133D6: ??? (in /lib64/ld-2.23.so)"
,"0x56ADA9C: ??? (in /lib64/libc-2.23.so)"
,"0x56ADB2E: ??? (in /lib64/libc-2.23.so)"
,"0x56ADBA0: __libc_dlopen_mode (in /lib64/libc-2.23.so)"
,"0x569B496: __nss_lookup_function (in /lib64/libc-2.23.so)"
,"0x400B095: ??? (in /lib64/ld-2.23.so)"
,"0x4005774: ??? (in /lib64/ld-2.23.so)"
,"0x4008743: ??? (in /lib64/ld-2.23.so)"
,"0x400B393: ??? (in /lib64/ld-2.23.so)"
,"0x400D3A3: ??? (in /lib64/ld-2.23.so)"
,"0x401397C: ??? (in /lib64/ld-2.23.so)"
,"0x4010D95: ??? (in /lib64/ld-2.23.so)"
,"0x4013E76: ??? (in /lib64/ld-2.23.so)"
,"0x65486C2: ???"
,"0x6548712: ???"
,"0x569B8CF: ??? (in /lib64/libc-2.23.so)"
,"0x56065CB: ??? (in /lib64/libc-2.23.so)"
,"0x55FB82C: fread (in /lib64/libc-2.23.so)"
,"0x4028AA: fread (stdio2.h:295)"
,"0x4028AA: main (ni2http.c:1044)"
,"0x404DEB: add_service (wfficproc.c:95)"
,"0x4048F6: fig_0_2 (wffigproc.c:313)"
,"0x40465C: fig_0 (wffigproc.c:116)"
,"0x404BB0: unpickfig (wffigproc.c:576)"
,"0x4052F8: process_fic2 (wfficproc.c:326)"
,"0x402AC2: main (ni2http.c:1099)"
,"0x404C77: add_service (wfficproc.c:95)"
,"0x407A99: shout_new (shout.c:91)"
,"0x402E13: init_shout_channel (ni2http.c:875)"
,"0x402E13: main (ni2http.c:1137)"
,"0x5613B09: strdup (in /lib64/libc-2.23.so)"
,"0x40750C: shout_set_host (shout.c:413)"
,"0x407AB2: shout_new (shout.c:95)"
,"0x407A2D: shout_set_user (shout.c:618)"
,"0x407AC3: shout_new (shout.c:100)"
,"0x40798D: shout_set_agent (shout.c:592)"
,"0x407AD4: shout_new (shout.c:105)"
,"0x407ADD: shout_new (shout.c:110)"
,"0x402E23: init_shout_channel (ni2http.c:880)"
,"0x402E23: main (ni2http.c:1137)"
,"0x402E30: init_shout_channel (ni2http.c:881)"
,"0x402E30: main (ni2http.c:1137)"
,"0x402E4C: init_shout_channel (ni2http.c:883)"
,"0x402E4C: main (ni2http.c:1137)"
,"0x40760D: shout_set_password (shout.c:459)"
,"0x402E59: init_shout_channel (ni2http.c:884)"
,"0x402E59: main (ni2http.c:1137)"
,"0x4077AD: shout_set_name (shout.c:517)"
,"0x402EA1: init_shout_channel (ni2http.c:902)"
,"0x402EA1: main (ni2http.c:1137)"
,"0x4076D3: shout_set_mount (shout.c:490)"
,"0x402EB1: init_shout_channel (ni2http.c:903)"
,"0x402EB1: main (ni2http.c:1137)"
,"0x4078ED: shout_set_genre (shout.c:567)"
,"0x402EC1: init_shout_channel (ni2http.c:904)"
,"0x402EC1: main (ni2http.c:1137)"
,"0x407B8D: shout_set_description (shout.c:643)"
,"0x402ED1: init_shout_channel (ni2http.c:905)"
,"0x402ED1: main (ni2http.c:1137)"
,"0x40784D: shout_set_url (shout.c:542)"
,"0x402EE1: init_shout_channel (ni2http.c:906)"
,"0x402EE1: main (ni2http.c:1137)"
,"0x4082CF: _shout_util_dict_set (util.c:233)"
,"0x407C9C: shout_set_audio_info (shout.c:684)"
,"0x402F1C: init_shout_channel (ni2http.c:911)"
,"0x402F1C: main (ni2http.c:1137)"
,"0x4082A8: _shout_util_dict_set (util.c:241)"
,"0x5667FFA: ??? (in /lib64/libc-2.23.so)"
,"0x56698FD: getaddrinfo (in /lib64/libc-2.23.so)"
,"0x40943E: _shout_sock_connect_wto (sock.c:581)"
,"0x406E29: try_connect (shout.c:943)"
,"0x406FBF: shout_open (shout.c:153)"
,"0x402F72: init_shout_channel (ni2http.c:926)"
,"0x402F72: main (ni2http.c:1137)"
,"0x4060DE: queue_data (shout.c:796)"
,"0x4062A3: queue_printf (shout.c:849)"
,"0x40653D: create_http_request (shout.c:1103)"
,"0x40653D: create_request (shout.c:1085)"
,"0x406E3C: try_connect (shout.c:945)"
,"0x405E95: http_basic_authorization (shout.c:1158)"
,"0x406550: create_http_request (shout.c:1106)"
,"0x406550: create_request (shout.c:1085)"
,"0x407F80: _shout_util_base64_encode (util.c:88)"
,"0x405ECA: http_basic_authorization (shout.c:1161)"
,"0x405EE8: http_basic_authorization (shout.c:1165)"
,"0x4080D6: _shout_util_url_encode (util.c:155)"
,"0x408480: _shout_util_dict_urlencode (util.c:262)"
,"0x406647: create_http_request (shout.c:1131)"
,"0x406647: create_request (shout.c:1085)"
,"0x40836B: _shout_util_dict_urlencode (util.c:268)"
,"0x40839F: _shout_util_dict_urlencode (util.c:289)"
,"0x40632D: get_response (shout.c:894)"
,"0x406C84: try_connect (shout.c:976)"
,"0x405F7B: collect_queue (shout.c:1042)"
,"0x406E8E: parse_http_response (shout.c:1198)"
,"0x406E8E: parse_response (shout.c:1178)"
,"0x406E8E: try_connect (shout.c:984)"
,"0x406ECE: parse_http_response (shout.c:1203)"
,"0x406ECE: parse_response (shout.c:1178)"
,"0x406ECE: try_connect (shout.c:984)"
,"0x40AEB3: _shout_avl_tree_new (avl.c:66)"
,"0x409C15: _shout_httpp_initialize (httpp.c:51)"
,"0x406EDB: parse_http_response (shout.c:1204)"
,"0x406EDB: parse_response (shout.c:1178)"
,"0x406EDB: try_connect (shout.c:984)"
,"0x40AE53: _shout_avl_node_new (avl.c:45)"
,"0x40AEC4: _shout_avl_tree_new (avl.c:71)"
,"0x409C25: _shout_httpp_initialize (httpp.c:52)"
,"0x409DD1: _shout_httpp_parse_response (httpp.c:143)"
,"0x406EEE: parse_http_response (shout.c:1205)"
,"0x406EEE: parse_response (shout.c:1178)"
,"0x406EEE: try_connect (shout.c:984)"
,"0x409B5C: _shout_httpp_setvar.part.0 (httpp.c:435)"
,"0x409EA4: _shout_httpp_setvar (httpp.c:171)"
,"0x409EA4: _shout_httpp_parse_response (httpp.c:176)"
,"0x409B6C: _shout_httpp_setvar.part.0 (httpp.c:438)"
,"0x409B77: _shout_httpp_setvar.part.0 (httpp.c:439)"
,"0x40B201: _shout_avl_insert (avl.c:121)"
,"0x409EE2: _shout_httpp_setvar (httpp.c:432)"
,"0x409EE2: _shout_httpp_parse_response (httpp.c:182)"
,"0x40B022: _shout_avl_insert (avl.c:161)"
,"0x409EF4: _shout_httpp_setvar (httpp.c:432)"
,"0x409EF4: _shout_httpp_parse_response (httpp.c:183)"
,"0x40B002: _shout_avl_insert (avl.c:143)"
,"0x408B02: shout_open_mp3 (mp3.c:107)"
,"0x406DB7: try_connect (shout.c:988)"
,"0x402D47: main (ni2http.c:1163)"
,"0x4037BA: feed_x_pad (ni2http.c:397)"
,"0x403A5E: process_pad (ni2http.c:456)"
,"0x4040A3: process_dabplus_pad (ni2http.c:610)"
,"0x4040A3: process_dabplus (ni2http.c:724)"
,"0x4045B4: process_stc (ni2http.c:810)"
,"0x402983: main (ni2http.c:1194)"
,"0x4037D1: feed_x_pad (ni2http.c:398)"
,"0x4072FE: shout_set_metadata (shout.c:301)"
,"0x4037E2: feed_x_pad (ni2http.c:399)"
,"0x407317: shout_set_metadata (shout.c:304)"
,"0x4073A7: shout_set_metadata (shout.c:311)"
,"0x56897E4: ??? (in /lib64/libc-2.23.so)"
,"0x4E3E648: __pthread_once_slow (in /lib64/libpthread-2.23.so)"
,"0x5689903: backtrace (in /lib64/libc-2.23.so)"

There are also few warnings while compiling (make ni2http) which might have something to do with this problem:

/bin/sh ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT libicenet_la-sock.lo -MD -MP -MF .deps/libicenet_la-sock.Tpo -c -o libicenet_la-sock.lo test -f 'sock.c' || echo './'sock.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT libicenet_la-sock.lo -MD -MP -MF .deps/libicenet_la-sock.Tpo -c sock.c -o libicenet_la-sock.o
In file included from sock.c:58:0:
sock.h:67:0: warning: "SOCK_NONBLOCK" redefined
#define SOCK_NONBLOCK 1
^
In file included from /usr/include/bits/socket.h:38:0,
from /usr/include/sys/socket.h:38,
from sock.c:39:
/usr/include/bits/socket_type.h:54:0: note: this is the location of the previous definition
#define SOCK_NONBLOCK SOCK_NONBLOCK
^
mv -f .deps/libicenet_la-sock.Tpo .deps/libicenet_la-sock.Plo
/bin/sh ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT libicenet_la-resolver.lo -MD -MP -MF .deps/libicenet_la-resolver.Tpo -c -o libicenet_la-resolver.lo test -f 'resolver.c' || echo './'resolver.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT libicenet_la-resolver.lo -MD -MP -MF .deps/libicenet_la-resolver.Tpo -c resolver.c -o libicenet_la-resolver.o
In file included from resolver.c:48:0:
sock.h:67:0: warning: "SOCK_NONBLOCK" redefined
#define SOCK_NONBLOCK 1
^
In file included from /usr/include/bits/socket.h:38:0,
from /usr/include/sys/socket.h:38,
from /usr/include/netinet/in.h:23,
from /usr/include/netdb.h:27,
from resolver.c:30:
/usr/include/bits/socket_type.h:54:0: note: this is the location of the previous definition
#define SOCK_NONBLOCK SOCK_NONBLOCK
^
mv -f .deps/libicenet_la-resolver.Tpo .deps/libicenet_la-resolver.Plo
/bin/sh ../../libtool --tag=CC --mode=link gcc -Wall -ffast-math -fsigned-char -pthread -g -O2 -o libicenet.la libicenet_la-sock.lo libicenet_la-resolver.lo
libtool: link: ar cru .libs/libicenet.a libicenet_la-sock.o libicenet_la-resolver.o
libtool: link: ranlib .libs/libicenet.a
libtool: link: ( cd ".libs" && rm -f "libicenet.la" && ln -s "../libicenet.la" "libicenet.la" )
make[4]: Opuszczenie katalogu '/home/jwrona/eti-tools/libshout-2.2.2/src/net'
Making all in timing
make[4]: Wej�cie do katalogu '/home/jwrona/eti-tools/libshout-2.2.2/src/timing'
/bin/sh ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../.. -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT libicetiming_la-timing.lo -MD -MP -MF .deps/libicetiming_la-timing.Tpo -c -o libicetiming_la-timing.lo test -f 'timing.c' || echo './'timing.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT libicetiming_la-timing.lo -MD -MP -MF .deps/libicetiming_la-timing.Tpo -c timing.c -o libicetiming_la-timing.o
mv -f .deps/libicetiming_la-timing.Tpo .deps/libicetiming_la-timing.Plo
/bin/sh ../../libtool --tag=CC --mode=link gcc -Wall -ffast-math -fsigned-char -pthread -g -O2 -o libicetiming.la libicetiming_la-timing.lo
libtool: link: ar cru .libs/libicetiming.a libicetiming_la-timing.o
libtool: link: ranlib .libs/libicetiming.a
libtool: link: ( cd ".libs" && rm -f "libicetiming.la" && ln -s "../libicetiming.la" "libicetiming.la" )
make[4]: Opuszczenie katalogu '/home/jwrona/eti-tools/libshout-2.2.2/src/timing'
Making all in httpp
make[4]: Wej�cie do katalogu '/home/jwrona/eti-tools/libshout-2.2.2/src/httpp'
/bin/sh ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT libicehttpp_la-httpp.lo -MD -MP -MF .deps/libicehttpp_la-httpp.Tpo -c -o libicehttpp_la-httpp.lo test -f 'httpp.c' || echo './'httpp.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT libicehttpp_la-httpp.lo -MD -MP -MF .deps/libicehttpp_la-httpp.Tpo -c httpp.c -o libicehttpp_la-httpp.o
httpp.c: In function 'parse_headers':
httpp.c:95:21: warning: variable 'where' set but not used [-Wunused-but-set-variable]
int whitespace, where, slen;
^
httpp.c: In function 'url_escape':
httpp.c:214:9: warning: pointer targets in assignment differ in signedness [-Wpointer-sign]
dst = decoded;
^
httpp.c:251:12: warning: pointer targets in return differ in signedness [-Wpointer-sign]
return decoded;
^
mv -f .deps/libicehttpp_la-httpp.Tpo .deps/libicehttpp_la-httpp.Plo
/bin/sh ../../libtool --tag=CC --mode=link gcc -Wall -ffast-math -fsigned-char -pthread -g -O2 -o libicehttpp.la libicehttpp_la-httpp.lo
libtool: link: ar cru .libs/libicehttpp.a libicehttpp_la-httpp.o
libtool: link: ranlib .libs/libicehttpp.a
libtool: link: ( cd ".libs" && rm -f "libicehttpp.la" && ln -s "../libicehttpp.la" "libicehttpp.la" )
make[4]: Opuszczenie katalogu '/home/jwrona/eti-tools/libshout-2.2.2/src/httpp'
Making all in thread
make[4]: Wej�cie do katalogu '/home/jwrona/eti-tools/libshout-2.2.2/src/thread'
/bin/sh ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT libicethread_la-thread.lo -MD -MP -MF .deps/libicethread_la-thread.Tpo -c -o libicethread_la-thread.lo test -f 'thread.c' || echo './'thread.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -I./.. -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT libicethread_la-thread.lo -MD -MP -MF .deps/libicethread_la-thread.Tpo -c thread.c -o libicethread_la-thread.o
thread.c: In function '_shout_thread_create_c':
thread.c:265:9: warning: unused variable 'ok' [-Wunused-variable]
int ok = 1;
^
thread.c: In function '_shout_thread_join':
thread.c:739:9: warning: variable 'i' set but not used [-Wunused-but-set-variable]
int i;
^
mv -f .deps/libicethread_la-thread.Tpo .deps/libicethread_la-thread.Plo
/bin/sh ../../libtool --tag=CC --mode=link gcc -Wall -ffast-math -fsigned-char -pthread -g -O2 -o libicethread.la libicethread_la-thread.lo
libtool: link: ar cru .libs/libicethread.a libicethread_la-thread.o
libtool: link: ranlib .libs/libicethread.a
libtool: link: ( cd ".libs" && rm -f "libicethread.la" && ln -s "../libicethread.la" "libicethread.la" )
make[4]: Opuszczenie katalogu '/home/jwrona/eti-tools/libshout-2.2.2/src/thread'
make[4]: Wej�cie do katalogu '/home/jwrona/eti-tools/libshout-2.2.2/src'
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT shout.lo -MD -MP -MF .deps/shout.Tpo -c -o shout.lo shout.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I../include -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT shout.lo -MD -MP -MF .deps/shout.Tpo -c shout.c -o shout.o
mv -f .deps/shout.Tpo .deps/shout.Plo
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT util.lo -MD -MP -MF .deps/util.Tpo -c -o util.lo util.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I../include -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT util.lo -MD -MP -MF .deps/util.Tpo -c util.c -o util.o
mv -f .deps/util.Tpo .deps/util.Plo
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT mp3.lo -MD -MP -MF .deps/mp3.Tpo -c -o mp3.lo mp3.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I../include -Wall -ffast-math -fsigned-char -pthread -g -O2 -MT mp3.lo -MD -MP -MF .deps/mp3.Tpo -c mp3.c -o mp3.o
mp3.c: In function 'send_mp3':
mp3.c:207:33: warning: pointer targets in passing argument 2 of 'shout_send_raw' differ in signedness [-Wpointer-sign]
ret = shout_send_raw(self, (char *)&buff[start], count);
^
In file included from mp3.c:26:0:
../include/shout/shout.h:159:9: note: expected 'const unsigned char *' but argument is of type 'char *'
ssize_t shout_send_raw(shout_t *self, const unsigned char *data, size_t len);
^
mp3.c:238:31: warning: pointer targets in passing argument 2 of 'shout_send_raw' differ in signedness [-Wpointer-sign]
ret = shout_send_raw(self, (char *)&buff[start], count);
^
In file included from mp3.c:26:0:
../include/shout/shout.h:159:9: note: expected 'const unsigned char *' but argument is of type 'char *'
ssize_t shout_send_raw(shout_t *self, const unsigned char *data, size_t len);
^
mv -f .deps/mp3.Tpo .deps/mp3.Plo
/bin/sh ../libtool --tag=CC --mode=link gcc -Wall -ffast-math -fsigned-char -pthread -g -O2 -version-info 5:0:2 -o libshout.la -rpath /usr/local/lib shout.lo util.lo mp3.lo net/libicenet.la timing/libicetiming.la avl/libiceavl.la httpp/libicehttpp.la thread/libicethread.la
libtool: link: (cd .libs/libshout.lax/libicenet.a && ar x "/home/jwrona/eti-tools/libshout-2.2.2/src/net/.libs/libicenet.a")
libtool: link: (cd .libs/libshout.lax/libicetiming.a && ar x "/home/jwrona/eti-tools/libshout-2.2.2/src/timing/.libs/libicetiming.a")
libtool: link: (cd .libs/libshout.lax/libiceavl.a && ar x "/home/jwrona/eti-tools/libshout-2.2.2/src/avl/.libs/libiceavl.a")
libtool: link: (cd .libs/libshout.lax/libicehttpp.a && ar x "/home/jwrona/eti-tools/libshout-2.2.2/src/httpp/.libs/libicehttpp.a")
libtool: link: (cd .libs/libshout.lax/libicethread.a && ar x "/home/jwrona/eti-tools/libshout-2.2.2/src/thread/.libs/libicethread.a")
libtool: link: ar cru .libs/libshout.a shout.o util.o mp3.o .libs/libshout.lax/libicenet.a/libicenet_la-resolver.o .libs/libshout.lax/libicenet.a/libicenet_la-sock.o .libs/libshout.lax/libicetiming.a/libicetiming_la-timing.o .libs/libshout.lax/libiceavl.a/libiceavl_la-avl.o .libs/libshout.lax/libicehttpp.a/libicehttpp_la-httpp.o .libs/libshout.lax/libicethread.a/libicethread_la-thread.o
libtool: link: ranlib .libs/libshout.a
libtool: link: rm -fr .libs/libshout.lax
libtool: link: ( cd ".libs" && rm -f "libshout.la" && ln -s "../libshout.la" "libshout.la" )
make[4]: Opuszczenie katalogu '/home/jwrona/eti-tools/libshout-2.2.2/src'
make[3]: Opuszczenie katalogu '/home/jwrona/eti-tools/libshout-2.2.2/src'
make[3]: Wej�cie do katalogu '/home/jwrona/eti-tools/libshout-2.2.2'
make[3]: Opuszczenie katalogu '/home/jwrona/eti-tools/libshout-2.2.2'
make[2]: Opuszczenie katalogu '/home/jwrona/eti-tools/libshout-2.2.2'
make[1]: Opuszczenie katalogu '/home/jwrona/eti-tools/libshout-2.2.2'
cc -O2 -Wall -g -I. -Ilibshout-2.2.2/include -c -o ni2http.o ni2http.c
cc -O2 -Wall -g -I. -Ilibshout-2.2.2/include -c -o wffigproc.o wffigproc.c
cc -O2 -Wall -g -I. -Ilibshout-2.2.2/include -c -o wfficproc.o wfficproc.c
cc -O2 -Wall -g -I. -Ilibshout-2.2.2/include -c -o wfbyteops.o wfbyteops.c
cc -O2 -Wall -g -I. -Ilibshout-2.2.2/include -c -o wftables.o wftables.c
cc -O2 -Wall -g -I. -Ilibshout-2.2.2/include -c -o wffirecrc.o wffirecrc.c
cc -O2 -Wall -g -I. -Ilibshout-2.2.2/include -c -o wfcrc.o wfcrc.c
cc -O2 -Wall -g -I. -Ilibshout-2.2.2/include -c -o parse_config.o parse_config.c
cc -o ni2http ni2http.o wffigproc.o wfficproc.o wfbyteops.o wftables.o wffirecrc.o wfcrc.o parse_config.o libshout-2.2.2/src/.libs/libshout.a -lpthread -lm

In meantime I will continue on debugging this one since it just HAS TO WORK one day :)
Im happy to share more info if needed. Really didnt see much info about such a case and this also tends to happen on my private laptop (just to make sure it not one time case).

[idea] ni2http sorted services list

would it be possible , in ni2http --list option, to get the services list sorted by subchannel ID ?

wget http://192.168.0.16:8001/1:0:1:46:0:1:30300F:0:0:0: -q -O- | ts2na -p 1061 -s 12 | na2ni | ni2http --list
WARN:  Forward error correction (FEC) disabled (NOT COMPILED)
INFO:  Using pid: 0x0425 (1061)
INFO:  E1 Sync found at bit: 222, inverted: yes
DEBUG: seek: B:27, b:6
DEBUG: pre-readed output 15 frames (4 bytes left):
DEBUG: MULTIFRAME FILLING: 207
INFO:  ETI Sync found at pos: 0
INFO:  ETI Multiframe sync found at blockId: 20
.BBC National DAB (0xce15)
 0 : BBC Radio 4Extra (0xc22c) Pri subch=12 start=774 CUs= 58 PL=uep 3 bitrate=80
 1 : BBC Radio 1Xtra  (0xc22a) Pri subch=10 start=582 CUs= 96 PL=uep 3 bitrate=128
 2 : BBC AsianNetwork (0xc236) Pri subch= 7 start=486 CUs= 48 PL=uep 3 bitrate=64
 3 : BBC WorldService (0xc238) Pri subch= 9 start=534 CUs= 48 PL=uep 3 bitrate=64
 4 : BBC Radio 1      (0xc221) Pri subch= 1 start=  0 CUs= 96 PL=uep 3 bitrate=128
 5 : BBC Radio 2      (0xc222) Pri subch= 2 start= 96 CUs= 96 PL=uep 3 bitrate=128
 6 : BBC Radio 3      (0xc223) Pri subch= 3 start=192 CUs=140 PL=uep 3 bitrate=192
 7 : BBC Radio 4      (0xc224) Pri subch= 4 start=332 CUs= 96 PL=uep 3 bitrate=128
 8 : BBC Radio 5 Live (0xc225) Pri subch= 5 start=428 CUs= 58 PL=uep 3 bitrate=80
 9 : BBC Radio 6Music (0xc22b) Pri subch=11 start=678 CUs= 96 PL=uep 3 bitrate=128

in order to get this...

0 : BBC Radio 1      (0xc221) Pri subch= 1 start=  0 CUs= 96 PL=uep 3 bitrate=128
1 : BBC Radio 2      (0xc222) Pri subch= 2 start= 96 CUs= 96 PL=uep 3 bitrate=128
2 : BBC Radio 3      (0xc223) Pri subch= 3 start=192 CUs=140 PL=uep 3 bitrate=192
3 : BBC Radio 4      (0xc224) Pri subch= 4 start=332 CUs= 96 PL=uep 3 bitrate=128
4 : BBC Radio 5 Live (0xc225) Pri subch= 5 start=428 CUs= 58 PL=uep 3 bitrate=80
5 : BBC AsianNetwork (0xc236) Pri subch= 7 start=486 CUs= 48 PL=uep 3 bitrate=64
6 : BBC WorldService (0xc238) Pri subch= 9 start=534 CUs= 48 PL=uep 3 bitrate=64
7 : BBC Radio 1Xtra  (0xc22a) Pri subch=10 start=582 CUs= 96 PL=uep 3 bitrate=128
8 : BBC Radio 6Music (0xc22b) Pri subch=11 start=678 CUs= 96 PL=uep 3 bitrate=128
9 : BBC Radio 4Extra (0xc22c) Pri subch=12 start=774 CUs= 58 PL=uep 3 bitrate=80

mpe2aac: ADTS frame length validation

This seems to apply to the Spanish PRISA radio stations on Hispasat 30°W (12518H and also the Catalan language versions on 12519H).

As the audio level on these feeds can be really inconsistent (I think they're processed by the local studios of each of the stations before being broadcast on FM), I use a script to feed them through FFMPEG and level the audio using the 'dynaudnorm' filter.

With the raw output from mpe2aac, FFMPEG stops after a certain amount of time, complaining that the AAC audio data is invalid.

I investigated this, and it turns out that certain ADTS AAC frames in the stream don't seem to be valid, with a really long length set (longer than the amount of data in the UDP frame). I used this guide to get the ADTS frame length from the audio data packet - https://wiki.multimedia.cx/index.php/ADTS

These frames still start 0xFF 0xF1 or 0xFF 0xF9, so the mpe2aac tool counts them as valid and passes them through. I think because the amount of data in the UDP packet is less than the reported AAC frame length, FFMPEG treats it as corrupted.

I'm not a C programmer, so this code may not be the best, but I added a check to test if the length of the UDP data matches the length reported by the AAC packet itself. The packets only then get output if the length matches -

/* when aac located successfully */
    if (len_udp > 8) {
        /* get AAC frame length as reported by the ADTS packet itself */
        int aac_frame_len = ((payload[3] & 0x3) << 11) | ((payload[4] << 3) | (payload[5] >> 5));

        /* Only output AAC frames with matching length in ADTS packet to avoid FFMPEG errors */
        if (len_udp == aac_frame_len)
            fwrite(payload, 1, len_udp, stdout);
    }

The resulting output seems to play OK still is counted as valid by FFMPEG instead of stopping after several minutes.

I don't know enough about AAC/ADTS to know what these other frames are, and if they're necessary for anything. Removing them seems to work in any case!

Config file for ni2out

As far as I can read, it seems that ni2http used the parameter "-c" in order to take a config file as input, I can't find the way to import a config file for ni2out. Any help?

na2ts and ni2na tools

Hi @piratfm ,

Can you please add also a tool na2ts to the "eti-tools"?

The objective is have the tools to encapsulate/deencapsulate an ETI-NA bitstream inside an MPEG-TS.

You agree? 😄

[idea] ni2out EDI output or distinct eti2edi tool

Would it be possible to essentially do the reverse of edi2eti, i.e. encapsulate an ETI-NI stream as EDI and send to a UDP destination?

This would be handy for transporting the DAB data around a local network (or otherwise) to another machine - EDI works very well as a native input for the ODR-DabMod tool for example.

I find that with DAB signals already in EDI format on satellite, the modulation process works very smoothly. I have a PC with tuner card using tsduck with mpe filter, forwarding decapsulated DVB-IP MPE packets onto my local network - e.g. from 7°E 12567V 17017 I could forward 239.132.1.50:5004 (SWR BW S). Then on a Raspberry Pi 4 with a HackRF connected I can run ODR-DabMod with native EDI source (239.132.1.50:5004). This runs very stably - tested for hours at a time.

It would be useful to be able to use a similar mechanism for streams in ETI-NA or ETI V.11 (decoded with tsniv2ni). If we could encapsulate them into EDI and forward them onto the network interface. Command options would be local interface address, multicast address and port. As mentioned in title, I guess this could either be part of the ni2out application as a new option, or a specific eti2edi tool.

Satellite sources of DAB feeds - part 2

Hi!

thank you Serge for fixing the edi2eti converter.
However it seems one of those streams (239.16.242.14:60014) still is a little different then all the other muxes and is not decoded. All those packets have fragement count=1

Satellite sources of DAB feeds - part 3

Summary of closed issue #28 (= Satellite sources of DAB feeds - part 2)

  • In the meanwhile there are lots of radios stations all over Europe using DVB-MPE, use the new tools mpe2aac, mpe2mpa or mpe2ts to extract
  • some more DAB streams detected from Italy (RAI) and Turkey, some (orbital) changes over the past months
  • German EDI transponder filled with (currently) nine DAB ensembles
  • Improvements in Dablin done (frame-align stream not needed any more)
  • NRK DAB feed transponder (DVB-GSE??) still not be decodeable by any tool, only a hex editor shows the content
  • EDI DAB services from both German BR and RBB as well as VRT (Belgium) started with tests over the internet, use
    wget -q -O - https://rbbedi.irt.de:443/services/x | dablin_gtk -f edi -I
    wget -q -O - https://bredi.irt.de:443/services/x | dablin_gtk -f edi -I
    wget -q -O - http://edihttp.vrt.be:8187/services/x | dablin_gtk -f edi -I -1
    to listen to, whereas x is the subchannel ID, see https://www.fmlist.org/sendertabelle/dab-ww.php and http://search-hradio.irt.de/
    Combining them to a single DAB ETI stream is not 100% possible, but there is a workaround with dropouts
  • for DVB-IP streams the TSReader now shows the UDP port number since 2.8.55a, alternatively, you get it in Wireshark as well

Request: Versioning/release-tag

could you add version/revision to the binaries and tag head branch (when you reach a satisfactory point). | version tracking is a bit difficult at the moment.

BTW any advice to use dvb-ip-mpe2ts multiple time?

Hello again.
Sorry if I bather you.
I'm not well skilled in development and Linux scripting.
I have one OUTPUT ts file either as fifo ts or even as nc output file.
This TS content has 10 or maybe more streams under DVB-MPE encapsulation.

I can easily extract one stream.

I need to apply the dvb-ip-mpe2ts 10 times on the source file in order to extract the 10 streams in it. And save them either as fifo or stream them over the LAN.

Any advice about the best approach (Piping, tee, source code customization....)

Best regards

Question: embedded libshout still required?

is the bundled libshout still required? afaik upstream libshout supports aac/raw since 2004(raw)/2012(aac) (https://gitlab.xiph.org/xiph/icecast-libshout) - I could be misreading.

My concern is native integration would be tighter and allow better version control. When building against shared systemlibs, this reduces the risk of security and performance concerns. Ultimately it would take risks from external libraries out of your hands. as the source can only be tracked to a single tarball in this repository and maintenance (as well as security monitoring) currently stuck on you.. | So if im incorrect on any of these assumptions please explain why, and if possible please push or request these changes upstream.

na2ni: add ZeroMQ output

Hi,

The current implementation of the tool na2ni lacks the ZeroMQ output.
So, in order to have the option to interchange the tools (na2ni with edi2eti) will be desirable to support also this other output.

Example: usage: ./na2ni [--no-fec] [-i <inputfile>] [-o <outputfile|zeromq-uri>]

It has sense? You agree?

eti2zmq not created

Using the latest version, I've enabled Zero MQ

CFLAGS+= -DHAVE_ZMQ
LDFLAGS+= -lzmq

but eti2zmq is not created, and the file eti2zmq.o is missing after make.

Then I went back to 4eb5828 (14 March 2019) and here it works.

Seems that on the following merge (files from 25 March 2018 = one year before) in e40d87f or bc13d09 this got lost.

Outputs:

make_15march2019.txt
make_14march2019.txt

I'm NOT a programmer, but it seems that in the Makefile the line should be

all: cleanapps ni2out ts2na na2ts na2ni edi2eti fedi2eti mpe2aac mpe2mpa mpe2ts dvb-ip-mpe2ts eti2zmq

and

	install -m 755 eti2zmq $(DESTDIR)/usr/bin

at the end

@athoik could you check?

[GUIDE] Play in realtime

Hi,

I share this here only as a reference:

  • If you like to play in realtime from the satellite, then you can now do it!
  • First read the "brute-force-workaround" decribed in: http://github.com/AlbrechtL/welle.io/issues/217
  • Then replace the command described in the README:
    -- socat UDP4-RECV:1234,bind=239.1.1.1,ip-add-membership=239.1.1.1:eth0,reuseaddr - | ts2na -p 1061 -s 12 | na2ni -o bbc.eti-ni.
    -- with this one...
    -- socat UDP4-RECV:1234,bind=239.1.1.1,ip-add-membership=239.1.1.1:eth0,reuseaddr - | ts2na -p 1061 -s 12 | na2ni | ./odr-dabmod-next -f ./raw-fifo -F u8.
    -- Hint: The "odr-dabmod-next" is the ODR-DabMod tool from the 'next' branch.
  • Then run the modded rtl_mus.py tool, and open your preferable DAB Player with RTL_TCP input support.

That's all! 😄

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.