C++ Frage: VDR Plugin für LG-TV

  • Hallo,


    ich versuche mich gerade an meinem ersten Plugin für den VDR (inclusive Einstieg in C++).


    Das Plugin soll folgendes machen:
    1. Lautstärkeregelung vom VDR in den TV auslagern ()
    2. Laustärke beim VDR immer auf 255 und Unterdrückung des Lautstärke-OSD-Balkens
    3. per SVDRP oder OSD diverse Kommandos an den TV senden


    Der 1. Part, dass bei Tastendruck die entsprechenden Aktionen am Fernseher ausgeführt werden, scheint auch schon ganz gut zu funktionieren.
    Auch mit Punkt 3 gibts keine Probleme.
    Aber zu Punkt 2 und damit nun auch zu meiner Frage: Wie bekomme ich den VDR jetzt dazu die Lautstärke immer auf 255 zu lassen und sonst Lautstärkeänderungen zu ignorieren (am besten auch ohne den OSD Balken).



    Geht das wie ich mir das Denke, oder kann man diese VDR-Interna gar nicht abschalten?


    Vielen Dank schonmal


    Gruß Patrick

  • Wozu denn das? Verhindere doch einfach, dass die Fernsteuer Befehle an den VDR weitergeleitet werden.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Zitat

    Wozu denn das? Verhindere doch einfach, dass die Fernsteuer Befehle an den VDR weitergeleitet werden.


    Ja, dann per script oder so, die Befehle außerhalb des VDRs an den TV senden.
    So läufts ja im Moment.


    Aber:
    1. Ein Plugin benötigt weniger Eingriffe in die Distribution (nur Plugin laden lassen und fertig, keine Scripte kopieren und Konfigurationen anpassen)
    2. Weil ich Bock hab mal was mit c++ und VDR zu machen
    3. Und weil darum :D



    Gesendet von meinem GT-I9100 mit Tapatalk 2

  • Was für einen Skript denn? Einfach die Konfigdatei ändern. Ein Plugin zu installieren ist auch Eingriff in die Distribution.
    C++ lernen macht mit einem sinnvollen Projekt mehr Spass.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

    2 Mal editiert, zuletzt von gda ()

  • Das sndctl kann die Lautstärke auf 100% lassen und den Mixerregler betätigen. Es macht als genau das was du willst (nur statt TV regeln den ALSA Mixer schieben). Ein Blick darein lohnt evtl.?


    cu

  • Evt. Lohnt auch ein Blick ins Vdr Menü.
    Lautstärke beim Einschalten heißt der Punkt.

    VDR:
    Hardware: Thermaltake DH102, Zotac ION ITX-F-E, 2Gig Ram, TechnoTrend
    dual DVB-S2 6400, TechnoTrend Connect CT-3650,


    Software: EasyVDR 1.0

  • Erst einmal Vielen Dank für die Antworten


    Zitat

    gda Was für einen Skript denn? Einfach die Konfigdatei ändern. Ein Plugin zu installieren ist auch Eingriff in die Distribution.


    C++ lernen macht mit einem sinnvollen Projekt mehr Spass.

    Na das Script/Programm, welches die Befehle an den VDR sendet oder kann das yavdr schon von Hause aus?
    Welche Konfigdatei müsste ich denn z.B. bei yaVDR ändern um mit der Fernbedienung mit der ich den VDR bediene, benutzerdefinierte Aktionen ausführen zu lassen (außer vielleicht die User Keys des VDR's da die bei mir schon belegt sind.)?


    Und zum Thema Sinnhaftigkeit, könnte mann noch ewig diskutieren.


    Zitat

    Keine_Ahnung Das sndctl kann die Lautstärke auf 100% lassen und den Mixerregler
    betätigen. Es macht als genau das was du willst (nur statt TV regeln den
    ALSA Mixer schieben). Ein Blick darein lohnt evtl.?

    werd ich mal schauen


    Zitat

    googles Evt. Lohnt auch ein Blick ins Vdr Menü.


    Lautstärke beim Einschalten heißt der Punkt.

    Bringt auch nix, legt ja bloß die Anfangslautstärke fest und die wird ja im VDR Betrieb geändert und dass möchte ich ja abstellen die Anfangslautstärke ist nicht das Problem.

  • Hallo,


    ich kann gut nachvollziehen, warum du ein Plugin bevorzugst. Denn dies ist dan einfach für jede Distribution verfügbar. Die Konfigurationsdateiumbiegerei darf man dann für jede Distri machen.


    Zur Funktionalität: Warum willst du die Lautstärkeregelung auf den TV auslagern? Ist die Tonqualität dadurch besser?


    Interessant fänd ich noch, wenn der VDR den TV automatisch ein und ausschaltet -es sei denn es handelt sich um ein Start/Shutdown aufgrund einer Aufnahme.
    Ich vermute, die Kommunikation läuft via RS232?


    Gruß,
    Hendrik

  • Zitat

    Zur Funktionalität: Warum willst du die Lautstärkeregelung auf den TV auslagern? Ist die Tonqualität dadurch besser?


    Nein, die Qualität nicht, aber die Lautstärkeregelung ist nicht gleichmäßig, von 0-15 sind jeweils sehr große Unterschiede wohingegen ab 20 man die Lautstärkeschritte kaum merkt (Problem wurde schon ein paar mal hier OM Forum angesprochen, aber bis jetzt war noch keine richtige Lösung dabei)


    Zitat

    Interessant fänd ich noch, wenn der VDR den TV automatisch ein und ausschaltet -es sei denn es handelt sich um ein Start/Shutdown aufgrund einer Aufnahme.
    Ich vermute, die Kommunikation läuft via RS232?

    Ausschalten hab ich schon eingebaut. Einschalten wollte ich dann beim ersten Tastendruck machen(ist aber noch noch eingebaut, muss ich mir noch anschauen wie ich das machen kann).
    Und ja, per RS232.



    Gesendet von meinem GT-I9100 mit Tapatalk 2

  • Servus,


    als Besitzer eines LG TVs mit entsprechender Schnittstelle wäre ich an so einem Plugin natürlich interessiert. Momentan nutze ich bash-Skripte und irexec in Verbindung mit einer Harmony Universalfernbedienung, um die Lautstärke am TV zu regeln sowie vdr-sxfe als auch den TV zu starten/anzuschalten bzw. zu stoppen/auszuschalten. Die Lösung habe ich hier beschrieben. Durch die Universalfernbedienung komme ich gar nicht in die Verlegenheit, die Lautstärke im VDR selbst zu regeln, das geht dann direkt am TV. So etwas ist mit einer Nicht-Universal-Fernbedienung nur für den VDR natürlich schwierig, daher verstehe ich die Intention, ein Plugin zu schreiben, welches dies ermöglicht. Es sollte aber wie bei meiner Skriptlösung auf jeden Fall auch die Ausgabe-Devices abschalten bzw. wieder einschalten können, also mind. vdr-sxfe und das SoftHDDevice von johns.


    cu
    Markus, auf so ein Plugin wartend ;)

  • Mal was zum Thema:
    In einem Beispiel zur Erstellung eines Skin-Plugins bin ich über die Klasse "SkinDisplayVolume" gestolpert. Da gibt es eine Methode "virtual void SetVolume(int Current, int Total, bool Mute);". Ohne jetzt C++ zu können, aber kann man diese Methode im Plugin nicht derart überschreiben, dass sie das gewünschte tut? Nämlich nix(im VDR) bzw. stattdessen den TV in der Lautstärke ausregeln? Wie würde das laufen, wenn mehrere Plugins diese Methode überschreiben würden? Das letzte wäre der Gewinner? Oder bin ich hier auf dem Holzweg und die Methode lässt sch gar nicht überschreiben?


    cu
    Markus

  • Moin!


    bin ich über die Klasse "SkinDisplayVolume" gestolpert. Da gibt es eine Methode "virtual void SetVolume(int Current, int Total, bool Mute);".


    Das Skin liefert ein Objekt abgeleitet vom Typ cSkinDisplayVolume zurück, dessen Methode aufgerufen wird, sobald sich die Lautstärke ändert. Wenn es will, kann es dann einen Balken anzeigen o.ä., aber das Ändern der Lautstärke kann man damit nicht verhindern.


    Lars. (der auch ein LG TV hat)

  • Ohne patch wird das vermutlich nix. Die grundfunktionen vom Vdr lassen sich nicht überschreiben.
    Wenn du am Vdr lauter leiser schaltest wird er das auch immer machen. Du könntest aber diese tasten aus der remote.conf löschen und Macrokeys verwenden.

    VDR:
    Hardware: Thermaltake DH102, Zotac ION ITX-F-E, 2Gig Ram, TechnoTrend
    dual DVB-S2 6400, TechnoTrend Connect CT-3650,


    Software: EasyVDR 1.0

  • Hi,


    Zitat

    Eleganter finde ich die Steuerung übers Netzwerk zu machen.


    wär ne Option wenn mein LG TV mit Smart-TV wäre (ne Netzwerkschnitstelle hätte) da das "smarte" bei mir aber der VDR mache hab ich einen ohne dieses Feature genommen


    Zitat

    Ohne patch wird das vermutlich nix.


    Und wenn ich nach jeder Änderung die VDR Lautstärke wieder auf 255 setze dann müsste der VDR doch dabei bleiben oder (oder verursache ich damit eine Schleife)?
    Einziges Problem wie blende ich dann noch den Volumebalken aus?

  • Einziges Problem wie blende ich dann noch den Volumebalken aus?


    Warum willst du ihn ausblenden?


    Wie gesagt, das sndctl Plugin lässt den VDR Ton auf 100% und steuert den ALSA Mixer passend zur Einblendung des VDR Lautstärkebalkens (scheint also per Plugin zu gehen). Ist es nicht das was du willst?
    Oder blendet der TV in dieser Situation auch nen Lautstärkebalken ein? In dem Fall würde ich einfach den Lautstärkebalken aus dem Skin Plugin rausnehmen.


    cu

  • Zitat

    Warum willst du ihn ausblenden?


    Wie Du schon vermutet hast, ja der TV blendet auch die Lautstärke ein.


    Zitat

    Wie gesagt, das sndctl Plugin lässt den VDR Ton auf 100% und steuert den ALSA Mixer passend zur Einblendung des VDR Lautstärkebalkens


    Ja, wie oben aber schon geschrieben will ich mich gerade in C++ einarbeiten und wenn ich mir den Code von sndctl so anschaue verstehe ich im Moment nur Bahnhof.
    Bis ich dahinterkomme was in dem Plugin wie gemacht wird dauerts bestimmt noch ein wenig :rolleyes:

  • Ja, wie oben aber schon geschrieben will ich mich gerade in C++ einarbeiten und wenn ich mir den Code von sndctl so anschaue verstehe ich im Moment nur Bahnhof.


    Naja, du musst es ja nicht komplett verstehen. Es geht ja nur darum zu sehen wie es sich in den VDR einklinkt (VDR Lautstärkeänderung mitbekommen und VDR Lautstärke auf 100% lassen).


    cu

  • Moin!


    VDR Lautstärkeänderung mitbekommen


    Das ist noch das einfache: dafür ist cStatus da und wird auch von sndctl benutzt.


    VDR Lautstärke auf 100% lassen


    Tut es das wirklich? Ein schneller Blick in den Source hat mir nichts gezeigt, wo das passiert. Und kann es eigentlich auch gar nicht. Die vdr-Lautstärkewerte werden ja an den Alsa-Mixer weitergegeben, deshalb kann die vdr-Lautstärke nicht auf 100% bleiben.
    Letztendlich ist das Ausgabe-Device für die Umsetzung der Lautstärke verantwortlich (SetVolumeDevice in der Klasse cDevice). Im Falle von dvbsddevice wird z.B. immer die Lautstärke auf Null gesetzt, wenn Digitalton aktiv ist. Die HD-FF reicht die Lautstärke per ioctl an die Hardware weiter. Auch xine scheint die Lautstärke weiterzugeben.


    Für mich stellt sich da die Frage, wie die Audioausgabe des vdr konfiguriert sein muss, damit sndctl überhaupt "funktioniert" und wie das entsprechende Ausgabeplugin "ignoriert" wird.
    Greift man den Ton über die Soundkarte ab, hat die Lautstärkeänderungen bei den FF-Karten ja sicherlich keine Auswirkung, weil der entsprechende Ausgang ja nicht benutzt wird.
    Wie sieht es bei xine aus? Kann man das Plugin so konfigurieren, dass es seinen Ton ins "Nirvana" schickt oder macht sndctl im Zusammenhang mit xine gar keinen Sinn?


    Und was die Darstellung des vdr-Lautstärkebalkens betrifft: Da ist nur das Skin für zuständig, das lässt sich nicht pauschal "verbieten".


    Was dein Problem mit der ungleichmäßigen Lautstärkeregelung betrifft: Du benutzt laut Signatur xineliboutput, also könnte man in frontend.c des Plugins in der Funktion SetVolume bei der Umrechnung des Lautstärkewertes ja auch nicht-linear vorgehen. Die Werte zwischen 0 und 15 mappst du dann auf 0-80% und die verbleibenden Werte verteilst du auf 80-100%.


    Also eigentlich willst du nicht die vdr-Lautstärke auf 100% lassen, sondern die xineliboutput-Lautstärke, oder?


    Lars.

  • Tut es das wirklich?


    War so meine Vermutung ;)


    Bevor ich rausfand das sofdevice (ohne HD) selber die Mixerregler schieben kann (per extra Kommandozeilenparameter) war es so das der alsa Mixerregler immer auf 100% stand. Also gehe ich davon aus das irgendwer (VDR oder Ausgabeplugin) den Ton leiser gerechnet hat wenn ich die VDR Lauststärkeregelung nutzte.


    Als ich das sndctl Plugin installierte wurde bei Änderung der Lautstärke der alsa Mixerregler (passend zum Lautstärkebalken des VDR) geschoben. Also gehe ich davon aus das der Ton vom VDR/Ausgabeplugin selber nicht mehr leiser gerechnet wurde (muss ja so sein).


    Alles ohne Garantie, aber ich hätte zuerst versucht rauszufinden wie das Plugin das macht (oder was es da überhaupt macht).


    Die vdr-Lautstärkewerte werden ja an den Alsa-Mixer weitergegeben,


    Das ist ja Sache des Ausgabeplugins was es da tut.


    Für mich stellt sich da die Frage, wie die Audioausgabe des vdr konfiguriert sein muss, damit sndctl überhaupt "funktioniert" und wie das entsprechende Ausgabeplugin "ignoriert" wird.


    Ging bei mir einfach so.


    cu

Jetzt mitmachen!

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