Seite 4 von 4

Re: audioplayer

Verfasst: Dienstag 12. Juni 2012, 19:33
von Gaucho316
Schön, dass du noch dabei bist und nochmal genau geforscht hast. Ich bin auch dafür, dass wir die If-Klausel einfach weglassen und gut ist. Ich wollte aber zumindest mal gucken, ob ich nicht etwas Offensichtliches im Zapit-Code finde, dass das verursachen könnte. Ich habe aber nichts entdecken können. Der Zapit-Code ist mir teilweise auch etwas zu hoch.
Mourice hat geschrieben:Höchstwahrscheinlich aber in einer anderen "Funktion" oder einem anderen "Programm".
Wenn man der Methode

Code: Alles auswählen

CNeutrinoApp::getInstance()->handleMsg( NeutrinoMessages::CHANGEMODE , m_LastMode );
(neutrino.cpp) folgt, sieht man, dass die Methode tvMode() aufgerufen wird. Dort erfolgt dann das Zurücksetzen des Videoformats (Zeile 3668 und 3669).

Re: audioplayer

Verfasst: Dienstag 12. Juni 2012, 23:03
von rhabarber1848
wittinobi hat geschrieben:aber das problem scheint mir nicht neu.
siehe folgenden thread...

http://www.tuxbox-cvs.sourceforge.net/f ... =2&t=46093
(merged threads)
Gaucho316 hat geschrieben:Wenn man der Methode

Code: Alles auswählen

CNeutrinoApp::getInstance()->handleMsg( NeutrinoMessages::CHANGEMODE , m_LastMode );
(neutrino.cpp) folgt, sieht man, dass die Methode tvMode() aufgerufen wird. Dort erfolgt dann das Zurücksetzen des Videoformats (Zeile 3668 und 3669).
Ich vermute eher, dass in neutrino.cpp, ab Zeile 3651

Code: Alles auswählen

if( mode == mode_tv )
{
    return;
}
die Funktion CNeutrinoApp::tvMode() vorher beendet wird, da Neutrino bei der Rückkehr
aus dem Audioplayer bereits im TV-Modus ist, dies geschieht durch das von Gaucho316
zitierte code snippet. Hilft dieser (ungetestete) Patch?

Code: Alles auswählen

--- ../cvs/apps/tuxbox/neutrino/src/gui/audioplayer.cpp 2012-04-13 14:15:20.000000000 +0200
+++ ./apps/tuxbox/neutrino/src/gui/audioplayer.cpp      2012-06-12 22:49:35.763704986 +0200
@@ -223,6 +223,8 @@
        m_title2Pos.clear();
        g_Zapit->setStandby (false);
        g_Sectionsd->setPauseScanning (false);
+       if (g_Controld->getVideoFormat() != g_settings.video_Format)
+               g_Controld->setVideoFormat(g_settings.video_Format);
 }
 
 //------------------------------------------------------------------------
Wenn ja, müsste er ebenfalls in den deconstructors der anderen Bereiche (esd, upnp,
internetradio, pictureviewer) eingebaut werden.

Re: audioplayer

Verfasst: Dienstag 12. Juni 2012, 23:31
von Gaucho316
rhabarber1848 hat geschrieben:Ich vermute eher, dass in neutrino.cpp, ab Zeile 3651 die Funktion CNeutrinoApp::tvMode() vorher beendet wird, da Neutrino bei der Rückkehr
aus dem Audioplayer bereits im TV-Modus ist,
Stimmt nicht, der TV-Modus wird erst in der Methode tvModus() wieder gesetzt.
rhabarber1848 hat geschrieben:Hilft dieser (ungetestete) Patch? [...] Wenn ja, müsste er ebenfalls in den deconstructors der anderen Bereiche (esd, upnp, internetradio, pictureviewer) eingebaut werden.
Bringt nichts, da die Instanzen der Klassen CAudioPlayerGui, CEsoundGui, CPictureViewerGui und CUpnpBrowserGui nie gelöscht werden. Guck einfach mal in neutrino_menu.cpp.

Re: audioplayer

Verfasst: Mittwoch 13. Juni 2012, 13:42
von Gaucho316
Im Movieplayer gibt es ja in Zeile 4612 bis 4622 (movieplayer.cpp) einen Workaround im Zusammenhang mit 16:9. Ob dieses Problem hier auch auftritt und es deshalb falsch dargestellt wird? :gruebel:
Mourice hat geschrieben:Sendung 16:9, Video-Einstellung 16:9, Hintergrund 16:9, TV 16:9
[...]
Ergebniss --> 16:9 mit Balken oben und unten
Was kommt dabei raus, wenn du bei dieser Konstellation die Zeile mit dem If wegnimmst? Der Aufruf von setVideoFormat() muss aber drin bleiben. Wird es dann auch falsch dargestellt?

Re: audioplayer

Verfasst: Mittwoch 13. Juni 2012, 14:04
von Gaucho316
Mourice hat geschrieben:[zapit] cmd 13 refused in standby mode
Mal noch etwas ganz anderes. Dieser Log-Eintrag kommt dadurch, dass g_Zapit->getLastChannel(...) nach g_Zapit->setStandby(true) aufgerufen wird. Ich denke, dass die Reihenfolge vertauscht werden müsste. Bei "cmd 13" handelt es sich nämlich um CMD_GET_LAST_CHANNEL und das ist die Message, die an Zapit geschickt wird, wenn getLastChannel() aufgerufen wird.

Re: audioplayer

Verfasst: Mittwoch 13. Juni 2012, 15:50
von Mourice
Gaucho316 hat geschrieben:Im Movieplayer gibt es ja in Zeile 4612 bis 4622 (movieplayer.cpp) einen Workaround im Zusammenhang mit 16:9. Ob dieses Problem hier auch auftritt und es deshalb falsch dargestellt wird? :gruebel:
Mourice hat geschrieben:Sendung 16:9, Video-Einstellung 16:9, Hintergrund 16:9, TV 16:9
[...]
Ergebniss --> 16:9 mit Balken oben und unten
Was kommt dabei raus, wenn du bei dieser Konstellation die Zeile mit dem If wegnimmst? Der Aufruf von setVideoFormat() muss aber drin bleiben. Wird es dann auch falsch dargestellt?
Hi,

nein, ohne dass IF, also es wird immer ein setvideo gemacht, ist alles korrekt.

Aber so langsam weiss ich bald auch nicht mehr, was denn eigentlich richtig oder falsch ist ...

Ich habe jetzt noch einmal komplett neu gebaut.

Im audioplayer.cpp habe ich am Funktions-Einsprung "g_Controld->setVideoFormat(g_settings.video_backgroundFormat);" und am Ausgang "g_Controld->setVideoFormat(g_settings.video_Format);", jeweils ohne "IF".

Damit funktioniert bei mir jetzt alles korrekt. 16:9 wird wieder sauber zu 16:9 und 4:3 wird wieder zu 4:3 beim Verlassen des Audioplayers (bzw. Internet-Radio).
Unabhängig, ob Video-Format und Hintergrund-Format in den "Einstellungen" gleich sind oder auch nicht.

Ob diese Lösung jetzt korrekt ist, oder auch nicht, weiss ich nicht ... ist mir aber auch egal. Bei mir lass ich es jetzt so.

MfG

Re: audioplayer

Verfasst: Mittwoch 13. Juni 2012, 20:53
von Gaucho316
Ich konnte den Fehler jetzt auch endlich nachstellen. Und ich weiß jetzt auch, warum das passiert. Meine Annahme mit dem Reset des Avia-Chips war richtig. Das passiert nämlich, wenn die Samplerate wechselt. So steht es zumindest in basedec.cpp. Den Reset kann man auch beobachten, wenn man eine Datei abspielt. Der Bildschirm verfärbt sich kurz. Bei einem Reset des Avia-Chips geht leider auch das Videoformat verloren und wird auf den Standardwert 4:3 gesetzt. Deshalb denke ich, dass der folgende Patch am besten fürs CVS ist, damit setVideoFormat() nicht unnötigerweise zweimal hintereinander aufgerufen wird, d.h. am Ende von CAudioPlayerGui::exec() und in CNeutrinoApp::tvMode().

Audioplayer: set video format in 16:9 mode before leaving
Link entfernt, da Patch im CVS

Re: audioplayer

Verfasst: Donnerstag 14. Juni 2012, 19:04
von Mourice
Hi,

funktioniert.

Ob jetzt ein "eingespartes" setvideo schneller ist, als zwei If's ... aber "Wurscht" ... Patch geht in allen Variationen.

MfG

Re: audioplayer

Verfasst: Donnerstag 14. Juni 2012, 19:54
von Gaucho316
Mourice hat geschrieben:Ob jetzt ein "eingespartes" setvideo schneller ist, als zwei If's ...
Auf alle Fälle, du musst mal den Code verfolgen, der ausgeführt wird, wenn g_Controld->setVideoFormat(...) aufgerufen wird. Da passiert so einiges. Du landest am Ende in der Funktion setVideoFormat(...) in apps/dvb/zapit/src/zapost/video.cpp.


Hier nun auch die Patches mit den gleichen Änderungen für Esound und den UPnP-Browser. Da ich beides nicht nutze, verlasse ich mich auf die Aussage, dass die Änderungen dort auch nötig sind.

Esound: set video format in 16:9 mode before leaving
Link entfernt, da Patch im CVS

UPnP Browser: set video format in 16:9 mode before leaving
Link zum Patch entfernt

Edit: Ich sehe gerade, dass das für den UPnP-Browser gar nicht nötig ist. Da wird das Videoformat am Anfang immer auf 4:3 gesetzt.

Re: audioplayer

Verfasst: Donnerstag 14. Juni 2012, 20:14
von Mourice
Hi,

habe es gerade mal getestet ... ohne die zwei If's ist das Bild 234ms schneller wieder da.

MfG

:D :D :D :D :D :D

Re: audioplayer

Verfasst: Donnerstag 14. Juni 2012, 20:30
von rhabarber1848
committed:
Gaucho316 hat geschrieben:audioplayer_set-video-format-in-16-9-mode-before-leaving_2012-06-13_2025.diff
esound_set-video-format-in-16-9-mode-before-leaving_2012-06-14_1916.diff
http://article.gmane.org/gmane.comp.vid ... x.scm/3438