Auf ersten OSD Aufruf prüfen

  • Hi,


    habe ich in einem Plugin irgendwie die Möglichkeit zu prüfen, ob das OSD das erste Mal nach dem Neuskalieren der Ausgabe aufgerufen wird?


    Grund der Frage: ich habe immer wieder Probleme beim ersten Aufruf von displayChannel beim Start des VDR oder nach neuskalieren des OSD. Das ganze scheint auch vom Ausgabeplugin abzuhängen. Bei Xine scheint teilweise noch kein OSD erzeugt werden zu können, unter softhddevice werden einge Pixmaps irgendiwe nicht gezeichnet, und beim Umskalieren entstehen auch seltsame Effekte.


    Für mich wäre es das einfachste, in einem solchen Fall das OSD gar nicht zu zeichnen und die Funktionen direkt abzubrechen....irgendwelche Abfragen auf komische Werte sind wohl immer nür ein Workaround. Kennt da jemand ne Möglichkeit?


    Ciao Louis


  • habe ich in einem Plugin irgendwie die Möglichkeit zu prüfen, ob das OSD das erste Mal nach dem Neuskalieren der Ausgabe aufgerufen wird?


    Was meinst du mit "Neuskalieren der Ausgabe"? Ein geändertes Video-Format oder eine Änderung in der OSD-Größe?


    Zitat


    Grund der Frage: ich habe immer wieder Probleme beim ersten Aufruf von displayChannel beim Start des VDR oder nach neuskalieren des OSD. Das ganze scheint auch vom Ausgabeplugin abzuhängen. Bei Xine scheint teilweise noch kein OSD erzeugt werden zu können, unter softhddevice werden einge Pixmaps irgendiwe nicht gezeichnet, und beim Umskalieren entstehen auch seltsame Effekte.


    Für mich wäre es das einfachste, in einem solchen Fall das OSD gar nicht zu zeichnen und die Funktionen direkt abzubrechen....irgendwelche Abfragen auf komische Werte sind wohl immer nür ein Workaround. Kennt da jemand ne Möglichkeit?


    VDR selber "weiß" ja nicht, welche Auflösung das Video hat (falls es das ist, was du meinst).
    Ich könnte mir höchstens vorstellen, daß du dir in deinem Plugin die aktuelle Auflösung merkst und beim nächsten OSD-Aufruf vergleichst.
    Im Idealfall sollte natürlich das Ausgabeplugin gefixt werden.


    Klaus

  • Hi Klaus,


    ich meine die Größe des Ausgabefensters (bzw. bei Fullscreen Ausgabe eben die Bildschirmgröße), also im Prinzip das, was mir cOsd::Top(), cOsd::Left(), cOsd::Width() und cOsd::Height() zurückliefert.


    Beim Starten des Plugins bekomme ich da meiner Erinnerung nach für alles die im Setup eingestellten Größen, die "echten" Größen bekomme ich erst, wenn das Ausgabeplugin vollständig aktiv ist. DisplayChannel wird vom VDR wohl das erste Mal irgendwo dazwischen aufgerufen.


    Beim Ändern der Fenstergröße beispielsweise im Softhddevice scheint der erste Aufruf auch irgendwie in die Hose zu gehen und komische Werte zu liefern.


    Mit "merken" im Plugin ist ncht so einfach, im Fullscreen Modus ist der im Setup eingestellte Wert ja meist auch der reale...deshalb würde ich da keine Änderung mitbekommen...


    Ciao Louis

  • Es gibt kene Möglichkeit die Änderung der OSD Größe zu reporten.
    Man könnte das OSD automatisch skalieren, bis der VDR die neue Größe gepollt hat.
    IIRC ruft der VDR cDevice::GetOsdSize erst auf, wenn kein OSD mehr dargestellt wird.


    Also Fenstergröße des Ausgbedevice ändern. Ausgabedevice hat nun eine neue Größe des
    OSD. Erst wenn der VDR kein OSD mehr darstellt und ein neues OSD darstellen will, wird
    die richtige Größe geholt und dann haben Ausgabedevice und VDR den gleichen Kenntnissstand.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

Jetzt mitmachen!

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