[ANNOUNCE] vdr-SOFTOSD-Patch (nicht NUR für Softies)


  • Das geht Gut. Die Fade-Schleife wird nur aufgerufen wenn fade=0 ist. In der Schleife wird fade sofort auf !=0 gesetzt.


    ardi

    :welle ASRock K10N78FullHD-hSLI R3.0, Atlon64 X2 4850e (45W), 2GB RAM,500GB SATA, SkyStar2+TT-S21600, yaVDR

  • Zitat

    Original von ardi


    Das geht Gut. Die Fade-Schleife wird nur aufgerufen wenn fade=0 ist. In der Schleife wird fade sofort auf !=0 gesetzt.


    ardi


    Und was ist mit Seiteneffekten infolge der Treiberaufrufe über Cmd()?


    CU
    Oliver

  • Zitat

    Original von UFO


    Und was ist mit Seiteneffekten infolge der Treiberaufrufe über Cmd()?


    CU
    Oliver


    Was meinst Du?
    Das einzige was bis zur Fade-Schleife aufgerufen wird ist "Cmd(OSD_SetWindow, 0, i + 1);" und zwar mit i=0.
    "Cmd(OSD_SetWindow, 0, i + 1);" wählt nur das Window auf welches sich die folgenden Cmd's beziehen. Das kann ich so oft aufrufen wie ich will. Ohne nebeneffekt.


    ardi

    :welle ASRock K10N78FullHD-hSLI R3.0, Atlon64 X2 4850e (45W), 2GB RAM,500GB SATA, SkyStar2+TT-S21600, yaVDR

  • Zitat

    Original von ardi


    Was meinst Du?
    Das einzige was bis zur Fade-Schleife aufgerufen wird ist "Cmd(OSD_SetWindow, 0, i + 1);" und zwar mit i=0.
    "Cmd(OSD_SetWindow, 0, i + 1);" wählt nur das Window auf welches sich die folgenden Cmd's beziehen. Das kann ich so oft aufrufen wie ich will. Ohne nebeneffekt.


    ardi


    Was ist mit OSD_Open?


    Oliver

  • So ich habe jetzt den Patch erweitert (siehe ersten Post)



    Es sind ein paar #defines dazugekommen.


    Interessant ist vielleicht wenn man SOFTOSD_PALETTE_ONLY auf 2 setzt


    #define SOFTOSD_PALETTE_ONLY 2


    Dann wird beim Faden nur die Palette aktualisiert
    ABER: beim letzten Step werden auch Pixel refresht. Dadurch sollten die Farbfehler weg sein.
    Ich habe keine Ahnung ob es hilft und was wichtiger ist ob es "aussieht".


    Achja FADEIN und FADEOUT lassen sich getrennt de/aktivieren


    ardi

    :welle ASRock K10N78FullHD-hSLI R3.0, Atlon64 X2 4850e (45W), 2GB RAM,500GB SATA, SkyStar2+TT-S21600, yaVDR

  • Zitat

    Original von UFO


    Was ist mit OSD_Open?


    Oliver


    In der Tat. Ich bin bisher davon ausgegangen, dass ein Osd angelegt wird, das auch angezeigt werden kann (also das kleinste Level hat).
    Dann wird es schon einmal vom OsdProvider geflusht. Da aber zu dieser Zeit die Palette leer ist (if (Colors)) in diesem Fall Colors=0 es nicht zur Fade-Schleife kommt.
    Du hast aber recht. Denn wenn ein Osd durch ein anderes mit höherem Level in den Hintergrund gedrückt wird und anschließend wieder vor kommt, dann wird OSD_Open 2 mal aufgerufen.


    Allerdings sollte man annehmen das die Treiber sauber genug geschrieben sind, dass sie ein doppeltes OSD_Open ablehnen oder ein ReOpen veranlassen. Hier also effektlos bleiben.


    Im ersten Patch hatte ich die Fade-Schleife in einen Thread ausgelagert. Vieleicht sollte ich das wieder einbauen.


    ardi

    :welle ASRock K10N78FullHD-hSLI R3.0, Atlon64 X2 4850e (45W), 2GB RAM,500GB SATA, SkyStar2+TT-S21600, yaVDR

    Einmal editiert, zuletzt von ardi ()

  • Das geht ja mächtig voran hier. :) Ich teste jetzt erstmal nur die Variante mit SOFTOSD_PALETTE_ONLY auf 2. Leider kompiliert die Activy 300 eher gemächlich; da ist leider nix mit "mal eben".


    Danke euch beiden (ihr scheint euch gut zu "befruchten")


    Gruß
    Holger


  • Hmm, irgendwas scheint mit dem patch nicht ganz in Ordnung zu sein. Läuft bei mir zwar ohne rejects durch, das OSD hängt sich aber direkt nach dem Start von VDR auf. Die Channelinfo wird angezeigt, bleibt eingeblendet und dann kommt irgendwann der watchdog. Im log steht nichts erhellendes. Das trifft auf alle 3 Einstellungen von SOFTOSD_PALETTE_ONLY zu. Der 2-er patch lief bei mir ohne Probleme.


    Grüße, Peter

    KODI, tvh, arch x86_64, Octopus net 2 x Duoflex C/C2/T2 , NUC7i3BNH, Crucial MX300 2TB, LG LM 669S

    Linux is the best OS I have ever seen -- Albert Einstein

    Einmal editiert, zuletzt von lostinspc ()

  • Nope... sorry. Da ist noch irgendwas gewaltig krumm. Der VDR startet mit eingeblendeter Kanalinfo. Die bleibt die ganze Zeit stehen, bis sich der VDR von alleine neu startet. Eine Bedienung (Menüaufruf, Umschalten, etc.) ist zu keiner Zeit möglich.


    Gruß
    Holger


    EDIT: Siehe Post über mir ;)

  • Zitat

    Original von HolgerR
    Nope... sorry. Da ist noch irgendwas gewaltig krumm. Der VDR startet mit eingeblendeter Kanalinfo. Die bleibt die ganze Zeit stehen, bis sich der VDR von alleine neu startet. Eine Bedienung (Menüaufruf, Umschalten, etc.) ist zu keiner Zeit möglich.


    Gruß
    Holger


    EDIT: Siehe Post über mir ;)


    Sorry, das der Patch nicht läuft. Kann wie ihr wisst nicht testen.


    Ich werds mir morgen noch mal ansehen. Heute wird das nichts mehr.

    :welle ASRock K10N78FullHD-hSLI R3.0, Atlon64 X2 4850e (45W), 2GB RAM,500GB SATA, SkyStar2+TT-S21600, yaVDR

    Einmal editiert, zuletzt von ardi ()

  • Zitat

    Original von ardi


    Sorry, das der Patch nicht läuft. Kann wie ihr wisst nicht testen.


    Ich werds mir morgen noch mal ansehen. Heute wird das nichts mehr.


    Kein Problem! Mach dir keinen Stress...


    Gruß
    Holger

  • Zitat

    Original von HolgerR


    Kein Problem! Mach dir keinen Stress...


    So. Hab mir den Patch nochmal angesehen und habe den Fehler auch schon gefunden. Heute abend kommt dann der neue Patch.


    Für eilige:

    Code
    cCondWait::SleepMs(wait_time-flush_time);
        }
        fading = false;
        return;
     }
    - fade = SOFTOSD_STEPS;
    #endif

    :welle ASRock K10N78FullHD-hSLI R3.0, Atlon64 X2 4850e (45W), 2GB RAM,500GB SATA, SkyStar2+TT-S21600, yaVDR

  • Danke! Das ist auf jeden Fall schon mal der richtige Weg. Die Anzeige funktioniert jetzt verläßlich; während des Einblendens sieht man natürlich die Falschfarben, aber das wird sich wohl kaum verhindern lassen. Die "stehende" Anzeige am Ende ist jedenfalls korrekt und die Performance ist wesentlich besser.


    Gruß
    Holger

  • So. Jetzt der korrigierte Patch 0.0.3. Wie immer im ersten Post zu finden.


    Neu:

    • die Fade-Schleife ist jetzt am Anfang von Flush() (verhindert dadurch mögliche Seiteneffekte)
    • Steps und Rate für FadeIn und FadeOut separat einstellbar bzw. komplett Abschaltbar.
    • Syslog-Ausgabe hinzugefügt
    • MAX_OSD_SIZE hiermit kann das Fading für OSDs ab einer bestimmten Größe abgeschaltet werden


    Ich hoffe das der Patch nicht wieder einen Fehler enthält ;)


    Zitat

    Original von HolgerR
    Danke! Das ist auf jeden Fall schon mal der richtige Weg. Die Anzeige funktioniert jetzt verläßlich; während des Einblendens sieht man natürlich die Falschfarben, aber das wird sich wohl kaum verhindern lassen. Die "stehende" Anzeige am Ende ist jedenfalls korrekt und die Performance ist wesentlich besser.


    Richtig. Wird sich leider nicht verhindern lassen. Aber sieh dir mal den neuen Patch an. Mit MAX_OSD_SIZE kannst du OSDs ab einer bestimmten Größe "aussperren". Der Effekt kommt meiner Meinung nach bei den "großen" Menüs eh nicht so zur Geltung. Wenn die "kleinen" (z.B. Kanalinfo, Lautstärke und Sprachwahl) mit SOFTOSD_PALETTE_ONLY 0 ausreichend schnell gefadet werden, könnte das für dich eine akzeptable Alternative sein.


    ardi

    :welle ASRock K10N78FullHD-hSLI R3.0, Atlon64 X2 4850e (45W), 2GB RAM,500GB SATA, SkyStar2+TT-S21600, yaVDR

  • Zitat

    Original von ardi
    Richtig. Wird sich leider nicht verhindern lassen. Aber sieh dir mal den neuen Patch an. Mit MAX_OSD_SIZE kannst du OSDs ab einer bestimmten Größe "aussperren". Der Effekt kommt meiner Meinung nach bei den "großen" Menüs eh nicht so zur Geltung. Wenn die "kleinen" (z.B. Kanalinfo, Lautstärke und Sprachwahl) mit SOFTOSD_PALETTE_ONLY 0 ausreichend schnell gefadet werden, könnte das für dich eine akzeptable Alternative sein.


    Das siehst du vermutlich völlig richtig. :) Danke für den neuen Patch; wird jetzt getestet... ich werde berichten.


    Gruß
    Holger

  • Klasse! Ich habe jetzt nicht die diversen Optionen durchgespielt, aber die Variante mit "SOFTOSD_PALETTE_ONLY 0" und "ausgesperrten" großen Menüs scheint wirklich das zu sein, was mir am meisten entspricht. Funktioniert bestens!


    Bei den vielen Möglichkeiten ist wohl für jeden was dabei. Siehst du die Möglichkeit (und dein Interesse), die Früchte dieses Patches auch in deinen xineliboutput-Patch einfließen zu lassen? Nur so wegen der Konsistenz...


    Viele Grüße
    Holger

  • Hi,


    bei mir scheint das "Auftrennen" der Fadings nicht zu funktionieren. Will sagen: Wenn ich das FadeIn = 0 setze, findet auch kein FadeOut statt.


    Könnte das bitte jemand anders noch mal verifizieren?


    Danke und Gruß
    Holger


  • Ja, liegt an einem kleinen Bug in dem Block, der die Palette berechnet. Damit geht's:

    Code
    #ifdef SOFTOSD
                    int steps = fading < 0 ? SOFTOSD_FADEOUT_STEPS : SOFTOSD_FADEIN_STEPS;
                    if (SOFTOSD_ON && 0 < fade && fade < steps)
                        colors[i] = (((((Colors[i] >> 24) & 0x000000FF) * fade) / steps) << 24) |
                                    ((Colors[i] & 0x0000FF) << 16) | (Colors[i] & 0x00FF00) | ((Colors[i] & 0xFF0000) >> 16);
                    else
    #endif


    Sorry für's Umformatieren, aber meine Augen brauchen Leerzeichen... ;)


    CU
    Oliver


  • Danke für die schnelle Diagnose. Habe einen korrigierten Patch hochgeladen.


    ardi

    :welle ASRock K10N78FullHD-hSLI R3.0, Atlon64 X2 4850e (45W), 2GB RAM,500GB SATA, SkyStar2+TT-S21600, yaVDR

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!