esound Schönheitsfehler

Games, Plugins, Utils, Tools, 3rdParty, etc...
liab
Einsteiger
Einsteiger
Beiträge: 111
Registriert: Samstag 9. Februar 2008, 15:07

Re: esound Schönheitsfehler

Beitrag von liab »

dbt hat geschrieben:Eine gute Gelegenheit, das auch ordentlich zu dokumentieren :wink: Muss nur noch aufgefüllt werden.*g*

http://wiki.tuxbox-cvs.sourceforge.net/Neutrino:Esound.
Habe ich erledigt. Ist mein erstes wiki. Ich hoffe es erspart anderen die vielen Tage, die ich brauchte. Der große run kommt ja noch, da im Moment wohl noch nicht viele ein entsprechendes Image haben. Die Anwendung Esound ist echt gut.

Gruß
liab
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: esound Schönheitsfehler

Beitrag von dbt »

liab hat geschrieben:
dbt hat geschrieben:Eine gute Gelegenheit, das auch ordentlich zu dokumentieren :wink: Muss nur noch aufgefüllt werden.*g*

http://wiki.tuxbox-cvs.sourceforge.net/Neutrino:Esound.
Habe ich erledigt. Ist mein erstes wiki. Ich hoffe es erspart anderen die vielen Tage, die ich brauchte. Der große run kommt ja noch, da im Moment wohl noch nicht viele ein entsprechendes Image haben. Die Anwendung Esound ist echt gut.

Gruß
liab
Danke, habs noch etwas formatiert und einige Links hinzugefügt, wenn's bei was Neuem denn immer so wäre :wink: :wink:
liab
Einsteiger
Einsteiger
Beiträge: 111
Registriert: Samstag 9. Februar 2008, 15:07

Re: esound Schönheitsfehler

Beitrag von liab »

dbt hat geschrieben: Danke, habs noch etwas formatiert und einige Links hinzugefügt, wenn's bei was Neuem denn immer so wäre :wink: :wink:
Danke, sieht super aus!
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: esound Schönheitsfehler

Beitrag von rhabarber1848 »

Ich habe auch noch ein paar Infos hinzugefügt:
http://wiki.tuxbox-cvs.sourceforge.net/ ... ldid=11359
liab
Einsteiger
Einsteiger
Beiträge: 111
Registriert: Samstag 9. Februar 2008, 15:07

Re: esound Schönheitsfehler

Beitrag von liab »

Ich habe für das Internetradio und Esound Autostart Skripte plugins gefertigt. Hochladen kann ich die leider nicht (fehlende Rechte oder ich mache was falsch).

Gruß
liab
dwilx

Re: esound Schönheitsfehler

Beitrag von dwilx »

Schau dir einfach im Wiki einige andere Beiträge an wie das gemacht wird, ist eigentlich ganz einfach.
Hier sind einige Beispiele:
http://wiki.tuxbox-cvs.sourceforge.net/Neutrino:Skripte
Zuletzt geändert von dwilx am Donnerstag 16. April 2009, 12:04, insgesamt 1-mal geändert.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: esound Schönheitsfehler

Beitrag von rhabarber1848 »

liab hat geschrieben: Hochladen kann ich die leider nicht
In welches Verzeichnis willst Du die Skripte hochladen?
Was für ein Image nutzt Du?
liab
Einsteiger
Einsteiger
Beiträge: 111
Registriert: Samstag 9. Februar 2008, 15:07

Re: esound Schönheitsfehler

Beitrag von liab »

rhabarber1848 hat geschrieben:
liab hat geschrieben: Hochladen kann ich die leider nicht
In welches Verzeichnis willst Du die Skripte hochladen?
Was für ein Image nutzt Du?
Mit hochladen meinte ich sie hier diesem Board als Download zu posten.

Vom Prinzip sind es diese, die ich hier schon mal für das Internetradio postete, lediglich für Esound und natürlich so, daß nicht Esound und Internetradio gleichzeitig gestartet werden. http://tuxbox-forum.dreambox-fan.de/for ... 7&p=366496

Mein Image ist ein vom aktuellen cvs kompiliertes. Da gibt es einen gewissen rhabarber1848 der in jüngster Zeit ständig die infoviewer.cpp ändert und mich damit auf Trapp hält, weil ich dann noch meine Änderungen da reinstricken muß. - Ist naürlich Spaß, arbeiten hält ja jung.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: esound Schönheitsfehler

Beitrag von rhabarber1848 »

rhabarber1848 hat geschrieben:To-Do:
- Ein- und Ausschalten von Esound per Webinterface
Hier ein Patch zum Testen: EDIT: Patch ist im CVS

Die Funktion ist unter Boxcontrol, Control zu finden.
Bitte testet auch, ob Esound nicht mehrfach gestartet werden
kann und dass das Beenden problemlos funktioniert.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: esound Schönheitsfehler

Beitrag von rhabarber1848 »

rhabarber1848 hat geschrieben:To-Do:
- Esound-Port in Neutrino konfigurierbar machen
Es gibt wieder was zu testen: esound_port.diff

Die neue Konfigurationsoption findet sich in Einstellungen, Audioplayer / Bildbetrachter.

Wenn jemand meinen C++-Müll in esound.cpp optimieren möchte, nur zu.
Nach hunderten von segfaults beim Kopieren der Strings habe ich jetzt
eine Version, die scheinbar funktioniert...
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: esound Schönheitsfehler

Beitrag von seife »

Aber nur scheinbar... :-)

Code: Alles auswählen

+	char* esound_start_script = "";
+
+	snprintf(tmp, 26,"%s%s",ESOUND_START_PATH1,ESOUND_START_SCRIPT);
+	if (access(tmp, X_OK) == 0)
+	{
+		esound_start_script = tmp;
+	}
+	else
+	{
+		snprintf(tmp, 30,"%s%s",ESOUND_START_PATH2,ESOUND_START_SCRIPT);
+		if (access(tmp, X_OK) == 0)
+		{
+			esound_start_script = tmp;
+		}
+	}
+
+	if (esound_start_script == "")
Strings in C funktionieren nicht so (ich bin mir gar nicht sicher, was da womit verglichen wird, aber eigentlich müsste das dich mindestens mit üblen Warnings beschimpfen).

Besser:

Code: Alles auswählen

    char * foo = NULL; 
...
    if (bar)
        foo = tmp;
...

    if (foo) // if (foo != NULL)
    {
        do_something_with_foo();
    }
    else
    {
        error();
    }
Dich auf genau 30 oder 26 characters festzulegen führt bei demjenigen, der später mal die #defines ändert auch zu Überraschungen - in der Praxis ist die kleinste allokation sowieso 32 Bytes, aber 64 schaden hier auch nicht.
Ausserdem fügt snprintf kein '0' an, wenn der Platz nicht reicht, der String ist also nicht zwangsweise terminiert... :)
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: esound Schönheitsfehler

Beitrag von rhabarber1848 »

seife hat geschrieben:aber eigentlich müsste das dich mindestens mit üblen Warnings beschimpfen
Das geschieht nicht ;) Den Rest schaue ich mir an, danke!
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: esound Schönheitsfehler

Beitrag von rhabarber1848 »

Sieht der Code nun besser aus? Ich nutze nun std::string,
wohlwissend dass das ein Schießen mit Kanonen auf Spatzen
ist, für mich als C++-Anfänger aber lehrreich.
liab
Einsteiger
Einsteiger
Beiträge: 111
Registriert: Samstag 9. Februar 2008, 15:07

Re: esound Schönheitsfehler

Beitrag von liab »

rhabarber1848 hat geschrieben:
rhabarber1848 hat geschrieben:To-Do:
- Ein- und Ausschalten von Esound per Webinterface
Hier ein Patch zum Testen: EDIT: Patch ist im CVS

Die Funktion ist unter Boxcontrol, Control zu finden.
Bitte testet auch, ob Esound nicht mehrfach gestartet werden
kann und dass das Beenden problemlos funktioniert.
Funktioniert einwandfrei. Ein Mehrfachstart - auch von einem anderen PC aus - ist nicht möglich. Auch das Beenden geht problemlos, egal von welchem PC.

liab
liab
Einsteiger
Einsteiger
Beiträge: 111
Registriert: Samstag 9. Februar 2008, 15:07

Re: esound Schönheitsfehler

Beitrag von liab »

Hallo,

warum muß man jetzt esound manuell mit "make flash-esound" einbinden? Die automatische Mitnahme gefiel mir besser, die 50 KB sind es doch wohl nicht. Dafür habe ich ein Skript "unnötiges entfernen", welches vor dem Imagebau alles rausnimmt, was ich nicht brauche.

Oder kann man es jetzt bei configure wählen? Mit "--enable-esound" geht es nicht.

Gruß
liab
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: esound Schönheitsfehler

Beitrag von seife »

--enable-esd

Es ist ein extrem obskures Feature, da könnte man auch alle Spiele, FLAC und ntpd support per default ins Image packen.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: esound Schönheitsfehler

Beitrag von rhabarber1848 »

seife hat geschrieben:Es ist ein extrem obskures Feature
Extrem würde ich nicht behaupten, und obskur? Ich weiß
nicht, die Ansichten darüber gehen sicher auseinander.
Dann müsste man auch den Audioplayer, das Internetradio
und den Movieplayer optional machen.

Movie- und Audioplayer nutze ich fast nie, Internetradio
gelegentlich und Esound sehr häufig, da die Dbox schon
an der Anlage hängt, ich zur Steuerung der Musikwiedergabe
dann aber den PC statt des Fernsehers nutzen kann. Jedes
Modul hat seine Vor- und Nachteile und seine Zielgruppe.

Just my 2 cents.

Ich kann mit --enable-esd sehr gut leben, der Grund, dass
ich das selber nicht implementiert habe, liegt in der mit
weniger als 50 KB doch geringen Größe, im Vergleich
z.B. zu FLAC, was mit einigen 100 KB zu Buche schlägt.

Es ist halt jetzt so wie es ist, ich hoffe nur, dass nun die
Kompilierprobleme mit Esound seit heute behoben sind.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: esound Schönheitsfehler

Beitrag von seife »

tatsächlich würde ich das alles eigentlich gerne optional machen.
Andererseits wird dann der neutrino-code mit noch mehr #ifdefs zugepflastert, was ich auch nicht schön finde.
Der esd, der ja schon ein extra Target ist, hing halt sehr niedrig ins Gesichtsfeld ;)

Und ja, "obskur" ist Ansichtssache, da stimme ich zu.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: esound Schönheitsfehler

Beitrag von rhabarber1848 »

seife hat geschrieben:tatsächlich würde ich das alles eigentlich gerne optional machen.
Würde es nicht reichen, sich auf den Audioplayer aka. Internetradio
zu beschränken, _wenn_ damit die Decoderlibs auch wegfallen würden?
Dadurch dürfte ein Image wohl um mehrere 100KB kleiner werden.
liab
Einsteiger
Einsteiger
Beiträge: 111
Registriert: Samstag 9. Februar 2008, 15:07

Re: esound Schönheitsfehler

Beitrag von liab »

Danke!

Mit --enable-esd kann ich gut leben. Lieber nicht zu viel optional machen, da es den Ablauf bremst.
Therket
Interessierter
Interessierter
Beiträge: 32
Registriert: Dienstag 7. August 2007, 20:23

Re: esound Schönheitsfehler

Beitrag von Therket »

Passt vielleicht nicht ganz hierher, aber ich wollte nicht extra ein neues Topic aufmachen...

Imho wäre es ein sehr feines Feature, wenn man esd per default starten könnte und esd selbst "pzapit -esb" bzw. pzapit -dsb" ausführen könnte. Um keine direkten Abhängigkeiten von esd auf neutrino reinzubringen, hatte ich an den Aufruf eines Shellskripts "esd_start_playing.sh" bzw. "esd_stop_playing.sh" gedacht.

Meine Versuche der vergangenen Tage, das selbst umzusetzen, sind leider grandios gescheitert. Ich hatte es über einen "System()"-Aufruf in clients.c, add_new_client() bzw erase_client() versucht. Irgendwas muss ich aber falsch gemacht haben..

Komischerweise funktionieren bei mir nichtmal "printf"-Ausgaben nach diesem Code-Block in esd.c - main():

Code: Alles auswählen

   /* close all open file descriptors */
    max_fds = getdtablesize();
    for(i=0;i<max_fds;i++){
      close(i);
    }
    fd0 = open("/dev/null", O_RDWR);
    dup(0);
    dup(0);
..den ich trotz Kommentar nicht verstehe.

Kann mir jemand einen Schubs in die richtige Richtung geben?

Danke
Jens
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: esound Schönheitsfehler

Beitrag von seife »

Hinter diesem Code schreibst du alles nach /dev/null, was auf fd 1 (stdout) oder fd 2 (stderr) ausgegeben wird...
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: esound Schönheitsfehler

Beitrag von rhabarber1848 »

Therket hat geschrieben:Um keine direkten Abhängigkeiten von esd auf neutrino reinzubringen
Es spricht IMHO nichts dagegen, wenn Esound auf libzapitclient.so zugreift.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: esound Schönheitsfehler

Beitrag von seife »

Wenn man hinter dem Rücken von neutrino irgendwas an zapit rumstellt (z.B. es in den standby schickt), dann handelt man sich unweigerlich Probleme mit Aufnahmen etc. ein.

Ich würde das sein lassen.
Therket
Interessierter
Interessierter
Beiträge: 32
Registriert: Dienstag 7. August 2007, 20:23

Re: esound Schönheitsfehler

Beitrag von Therket »

Danke seife für den Hinweis :-). Ich versteh zwar nicht, warum man stdout / stderr auf /dev/null umleiten möchte, aber irgendwas wird man sich schon bei gedacht haben...

Mit diesen kleinen Diffs funktioniert das schonmal prinzipiell. Ist aber noch recht wackelig das Ganze. Zum Einen wird der Rückgabewert von esd_audio_open() kurzerhand ausgehebelt / ignoriert. Zum Anderen vermute ich mal, dass die jetzige Konstruktion fehlschlägt, sobald sich ein zweiter Client auf den esd verbinden will.

Code: Alles auswählen

--- esound-0.2.41/esd.c	2009-04-30 21:24:57.000000000 +0200
+++ esound-0.2.41_therket/esd.c	2009-04-30 21:27:30.000000000 +0200
@@ -867,7 +867,11 @@
     esd_audio_rate = default_rate;
 
   /* open and initialize the audio device, /dev/dsp */
-  itmp = esd_audio_open();
+  // do not acquire audio device yet.
+  // will be done later, when first client connects
+
+  // assign a valid fake value for the moment...
+  itmp = 0;
   if (itmp == -2) { /* Special return value indicates that opening the device failed. Don't bother
 		       trying */
     if(esd_spawnpid)

Code: Alles auswählen

--- esound-0.2.41/clients.c	2008-11-18 21:35:19.000000000 +0100
+++ esound-0.2.41_therket/clients.c	2009-04-30 21:23:43.000000000 +0200
@@ -89,6 +89,9 @@
 /* add a complete new client into the list of clients at head */
 void add_new_client( esd_client_t *new_client )
 {
+    system("pzapit -esb");
+    int itmp = esd_audio_open();
+
     /* printf ( "adding client 0x%08x\n", new_client ); */
     new_client->next = esd_clients_list;
     esd_clients_list = new_client;
@@ -99,6 +102,9 @@
 /* erase a client from the client list */
 void erase_client( esd_client_t *client )
 {
+    esd_audio_close();
+    system("pzapit -lsb");
+
     esd_client_t *previous = NULL;
     esd_client_t *current = esd_clients_list;