DAB+ Linux Software
Re: DAB+ Linux Software
DANKE !!!!
Es spielt - und sogar akustisch. Das alles mit Ubuntu 14 vom USB Stick aus, auf einem HP Compaq nc6320, eine tolle Sache. Naja, der alte Notebook wird den Pinguin jetzt wohl dauerhaft bekommen.
Danke nochmals!
73,
Günter
Es spielt - und sogar akustisch. Das alles mit Ubuntu 14 vom USB Stick aus, auf einem HP Compaq nc6320, eine tolle Sache. Naja, der alte Notebook wird den Pinguin jetzt wohl dauerhaft bekommen.
Danke nochmals!
73,
Günter
Re: DAB+ Linux Software
Das freut mich, wenn jemand seine Hardware auf Punguin umstellt, denn ich surfe auch grad unter Ubuntu
Re: DAB+ Linux Software
@Basic.Master: danke für dein DABlin Tool
Bisher bin ich über ni2http und einem Icecast Server gegangen, aber diese Lösung ist natürlich viel komfortabler.
Eine Frage hätte ich noch an dich:
Wann macht es Sinn den FDK-AAC Codec zu verwenden?
Bisher bin ich über ni2http und einem Icecast Server gegangen, aber diese Lösung ist natürlich viel komfortabler.
Eine Frage hätte ich noch an dich:
Wann macht es Sinn den FDK-AAC Codec zu verwenden?
Re: DAB+ Linux Software
Ich hatte auch die Noxon-Player unter Wine mit Fake-DLL Variante versucht. Ich hatte Probleme das Audio aus Wine an Pulseaudio zu leiten und das Alsa Device war durch das System blockiert. MOT/SLS ging aber zumindest. Den Player von Andi habe ich noch nicht versucht.
Mir ist allerdings die Variante dab2eti+dablin auch lieber
Mir ist allerdings die Variante dab2eti+dablin auch lieber
Re: DAB+ Linux Software
Es freut mich, dass DABlib zu passe kommt.
@newspaperman:
Der standardmäßige FAAD2 funktioniert hier seit längerem problemlos und kann bequemer als Paket installiert werden. FDK-AAC ist hier eher zum Ausprobieren gedacht und nicht mit allen möglichen Eingabeformat-Kombis getestet. Im Ausgabeformat ist er außerdem auf 16bit Integer festgelegt (bei FAAD2 benutze ich 32bit Float), wobei ich bezweifle, dass man da einen Unterschied heraushört (höchstens misst).
@newspaperman:
Der standardmäßige FAAD2 funktioniert hier seit längerem problemlos und kann bequemer als Paket installiert werden. FDK-AAC ist hier eher zum Ausprobieren gedacht und nicht mit allen möglichen Eingabeformat-Kombis getestet. Im Ausgabeformat ist er außerdem auf 16bit Integer festgelegt (bei FAAD2 benutze ich 32bit Float), wobei ich bezweifle, dass man da einen Unterschied heraushört (höchstens misst).
Re: DAB+ Linux Software
Vielen Dank für die tolle Software.
DABlin funktioniert bei mir mit dem Trekstor DAB/FM/DVB-T Stick (RTL2838UHIDIR, E4000 tuner). System: Debian 8.0 auf einem Laptop mit Core2Duo Prozessor.
Schön wäre, wenn man die Kanäle im BABlin umschalten könnte. Dazu müsste man dab2eti aus DABlin heraus mit einem popen()-Befehl starten, statt auf der Kommandozeile. Es ist recht mühsam die Frequenzen 9-Stellig auf der Kommandozeile einzugeben.
DABlin funktioniert bei mir mit dem Trekstor DAB/FM/DVB-T Stick (RTL2838UHIDIR, E4000 tuner). System: Debian 8.0 auf einem Laptop mit Core2Duo Prozessor.
Schön wäre, wenn man die Kanäle im BABlin umschalten könnte. Dazu müsste man dab2eti aus DABlin heraus mit einem popen()-Befehl starten, statt auf der Kommandozeile. Es ist recht mühsam die Frequenzen 9-Stellig auf der Kommandozeile einzugeben.
Re: DAB+ Linux Software
Die Kanäle innerhalb vom Programm umschalten wäre relativ praktisch. popen() habe ich mir mal angesehen. Das Problem ist, dass die PID vom dab2eti-Kindprozess dann nicht abgefragt werden kann, man aber für einen Kanalwechsel die Möglichkeit bräuchte, ihn zu killen. Es gibt da aber ein paar Beispiele, die das alles von Hand mit fork(), exec() etc. machen, das werde ich mir dann demnächst mal ansehen.
Re: DAB+ Linux Software
Hier gibt's einen Workaround: http://stackoverflow.com/questions/5480 ... with-popen
Aber vielleicht wäre es besser, gleich die dabtools in eine C oder C++ Library umzuschreiben, die nachher in verschiedenen Programmen sauber und ohne externen Prozess eingebunden werden könnte. Das würde auch weitere Funktionen wie das periodische Abfragen der Signalstärke ermöglichen.
Aber vielleicht wäre es besser, gleich die dabtools in eine C oder C++ Library umzuschreiben, die nachher in verschiedenen Programmen sauber und ohne externen Prozess eingebunden werden könnte. Das würde auch weitere Funktionen wie das periodische Abfragen der Signalstärke ermöglichen.
Re: DAB+ Linux Software
Als Quick and Dirty Ansatz würde wohl auch ein system("killall dabtools"); evtl mit -9 helfen, normalerweise läuft ja eh nur eine Einstanz davon.Stefan Heimers hat geschrieben: Hier gibt's einen Workaround: http://stackoverflow.com/questions/5480 ... with-popen
Das wäre natürlich die saubere Lösung.Aber vielleicht wäre es besser, gleich die dabtools in eine C oder C++ Library umzuschreiben, die nachher in verschiedenen Programmen sauber und ohne externen Prozess eingebunden werden könnte. Das würde auch weitere Funktionen wie das periodische Abfragen der Signalstärke ermöglichen.
Ich würde mich dennoch sehr freuen, wenn DABlin weiterhin die Möglichkeit bietet einen DAB ETI-NI Strom zu dekodieren, welcher von Stdin kommt, wenn beim Start ein bestimmter Übergabeparameter gesetzt wurde.
Ich habe übrigens als Workaround ein kleines Shell Skript geschrieben in welchem die Frequenzen hinterlegt sind.
Re: DAB+ Linux Software
Dieses Beispiel auf StackOverflow hatte ich mir auch schon mal angesehen. Eine Lib wäre aber natürlich das Optimum. Wer macht es?:D
Als Zwischenlösung ist killall zum Abschießen eine Option (auch wenn das nicht gerade sauber ist), weil dab2eti in der aktuellen Version tatsächlich hardkodiert das RTL-SDR Gerät mit Index 0 verwendet.
Ich werde mal ein bißchen rumbasteln.
Die Möglichkeit, direkt einen ETI-NI-Stream per stdin oder Datei abzuspielen, wird auf jeden Fall drinbleiben. Wahrscheinlich baue ich für das Pseudo-Umschalten mit dab2eti einen Parameter ein, der diesen Modus aktiviert und worüber man dann ggf. den Pfad zum dab2eti-Binary übergibt.
@newspaperman:
Wenn nicht, dann stelle dein Skript gerne online bzw. mache einen Pull Request auf GitHub.
Als Zwischenlösung ist killall zum Abschießen eine Option (auch wenn das nicht gerade sauber ist), weil dab2eti in der aktuellen Version tatsächlich hardkodiert das RTL-SDR Gerät mit Index 0 verwendet.
Ich werde mal ein bißchen rumbasteln.
Die Möglichkeit, direkt einen ETI-NI-Stream per stdin oder Datei abzuspielen, wird auf jeden Fall drinbleiben. Wahrscheinlich baue ich für das Pseudo-Umschalten mit dab2eti einen Parameter ein, der diesen Modus aktiviert und worüber man dann ggf. den Pfad zum dab2eti-Binary übergibt.
@newspaperman:
Wenn nicht, dann stelle dein Skript gerne online bzw. mache einen Pull Request auf GitHub.
Re: DAB+ Linux Software
Anbei mein kleines dab.sh Skript. Als Übergabeparamter einfach den DAB Kanalnamen angeben.
Code: Alles auswählen
#!/bin/sh
DAB2ETI=~/dab-software/dabtools/src/dab2eti
DABLIN=~/dab-software/dablin/dablin_gtk
case "$1" in
5a) freq=174928000;;
5b) freq=176640000;;
5c) freq=178352000;;
5d) freq=180064000;;
6a) freq=181936000;;
6b) freq=183648000;;
6c) freq=185360000;;
6d) freq=187072000;;
7a) freq=188928000;;
7b) freq=190640000;;
7c) freq=192352000;;
7d) freq=194064000;;
8a) freq=195936000;;
8b) freq=197648000;;
8c) freq=199360000;;
8d) freq=201072000;;
9a) freq=202928000;;
9b) freq=204640000;;
9c) freq=206352000;;
9d) freq=208064000;;
10a) freq=209936000;;
10b) freq=211648000;;
10c) freq=213360000;;
10d) freq=215072000;;
11a) freq=216928000;;
11b) freq=218640000;;
11c) freq=220352000;;
11d) freq=222064000;;
12a) freq=223936000;;
12b) freq=225648000;;
12c) freq=227360000;;
12d) freq=229072000;;
13a) freq=230784000;;
13b) freq=232496000;;
13c) freq=234208000;;
13d) freq=235776000;;
13e) freq=237488000;;
13f) freq=239200000;;
*) echo "Usage : ./dab.sh DAB-channel"
echo "e. g.: # ./dab.sh 5a"
exit 1;;
esac
$DAB2ETI $freq | $DABLIN
Re: DAB+ Linux Software
Ich kanns mal versuchen, weiss aber noch nicht ob ich es schaffe.Basic.Master hat geschrieben: Eine Lib wäre aber natürlich das Optimum. Wer macht es?:D
Ich denke mal ich ersetze dab2eti.c aus den dabtools durch einen C++ Wrapper und übernehme die anderen Files wie sie sind.
Das Headerfile wird voraussichtlich so ähnlich wie unten aussehen. setChannel() und setFrequency() werden beide die Frequenz setzen, wobei setChannel() den Kanal (z.B. 5C) aus einer Tabelle liest und dann die entsprechende Frequenz setzt.
Code: Alles auswählen
class dab2eti {
public:
dab2eti();
~dab2eti();
bool setGain(std::string channel);
bool setChannel(std::string channel);
bool setFrequency(float frequency);
std:: ostream getEtiStream();
private:
int frequency; // receiving frequency in Hz
int gain;
};
Re: DAB+ Linux Software
Alles klar, sehr gut. Im Lib-Benutzen bin ich gut, im Lib-Schreiben nicht;)
Zwei Sachen sind mir aufgefallen:
Die Frequenz ist (zumindest bei RTLSDR) vom Typ uint32_t; das könnte man dann eigentlich 1:1 bei setFrequency übernehmen.
Bei getEtiStream() weiß ich nicht, ob es so optimal wäre, den Austausch über einen stream zu machen.
Wenn ich das richtig sehe, kann man den nicht pollen, man könnte also höchstens blockierend lesen, was beim Beenden Probleme machen würde.
Und anscheinend gibt es keine Zusicherung, dass streams threadsafe sind.
Ich fände es einfacher, wenn man der Lib eine Callback-Funktion übergibt, über die man dann einfach jedes Mal ein fertiges ETI-Frame bekäme.
Zwei Sachen sind mir aufgefallen:
Die Frequenz ist (zumindest bei RTLSDR) vom Typ uint32_t; das könnte man dann eigentlich 1:1 bei setFrequency übernehmen.
Bei getEtiStream() weiß ich nicht, ob es so optimal wäre, den Austausch über einen stream zu machen.
Wenn ich das richtig sehe, kann man den nicht pollen, man könnte also höchstens blockierend lesen, was beim Beenden Probleme machen würde.
Und anscheinend gibt es keine Zusicherung, dass streams threadsafe sind.
Ich fände es einfacher, wenn man der Lib eine Callback-Funktion übergibt, über die man dann einfach jedes Mal ein fertiges ETI-Frame bekäme.
Re: DAB+ Linux Software
Die Kanalangaben müssen anscheinend in Kleinbuchstaben verwendet werden ... (vielleicht etwas unüblich)
Re: DAB+ Linux Software
OK, ich versuche es mit einem Callback für einzelne ETI Frames. Da muss ich dann wohl noch einen internen fifo-Buffer einbauen. Aber das sollte sich machen lassen.