Solo aportar que RDS se puede "analizar" con RTL-SDR y el software redsea (output JSON).
https://github.com/windytan/redsea
Ejemplos
# rtl_fm -M fm -l 0 -A std -p 0 -s 171k -g 35 -F 9 -f 92.1M | redsea
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Tuner gain set to 33.80 dB.
Tuned to 921441999 Hz.
Oversampling input by: 8x.
Oversampling output by: 1x.
Buffer size: 5.99ms
Exact sample rate is: 1368000.013046 Hz
Sampling at 1368000 S/s.
Output at 171000 Hz.
{"group":"2A","pi":"0xE715","prog_type":"News","tp":true}
{"di":{"dynamic_pty":true},"group":"0A","is_music":true,"pi":"0xE715","prog_type":"News","ta":false,"tp":true}
{"group":"6A","in_house_data":[1,4660,22136],"pi":"0xE715","prog_type":"News","tp":true}
{"group":"1A","has_linkage":false,"language":"Spanish","pi":"0xE715","prog_type":"News","tp":true}
{"pi":"0xE715"}
{"debug":["TODO 12A"],"group":"12A","pi":"0xE715","prog_type":"News","tp":true}
Y aqui la señal RDS-TMC (Trafico) de RNE3 , segun parece no esta cifrado, redsea soporta decodificar esos datos pero requiere de una tabla de ubicaciones (la posicion se codifica contra esa tabla) que es publica en algunos paises y en otros como el nuestro parece mas dificil de localizar.
{"group":"3A","open_data_app":{"app_name":"RDS-TMC: ALERT-C","oda_group":"8A"},"pi":"0xE213","prog_type":"Pop music","tmc":{"system_info":{"gap":3,"service_id":1}},"tp":true}
{"group":"3A","open_data_app":{"app_name":"RDS-TMC: ALERT-C","oda_group":"8A"},"pi":"0xE213","prog_type":"Pop music","tmc":{"system_info":{"is_encrypted":false,"is_on_alt_freqs":true,"location_table":17,"scope":["urban"]}},"tp":true}
{"group":"8A","pi":"0xE213","prog_type":"Pop music","tmc":{"message":{"description":"Heavy traffic.","direction":"single","event_codes":[122],"extent":"+4","location":61192,"update_class":1,"urgency":0}},"tp":true}