[Gelöst] Frontend Xinelibout: HD, Deinterlacing, OSD
#1
Das Frontend Xinelibout bietet ja so einige Vorteile, z.B. bei der Medienwiedergabe. Ich habe allerdings so meine liebe Müh und Not, alle wesentlichen Features zum Laufen zu bringen. Auf einer selbst gebastelten VDR Variante hatte ich es hingebracht, aber jetzt klemmt es.

Also, HD funktioniert nur mit der Videoausgabe "xv" oder "opengl2" richtig. Bei "vaapi" gibt es grüne Klötzchenbildung bei HD-Sendern und HD-Aufnahmen. Fürs Deinterlacing klappt bei "vaapi" nur, wenn ich die Datei /var/lib/vdr/plugins/xineliboutput/config anpasse, und zwar den Eintrag video.output.vaapi_deinterlace. Könnte hinhauen, weil eben direkt über Hardware realisiert.

So, jetzt sehe ich aber bei "xv" oder "opengl2" kein OSD. Als Skin verwende ich "SkinFlatplus". Mit der Option --hud habe ich erfolglos herumgespielt, --hud=xshape und --hud=opengl tun beide nicht.

Mit anderen Skins und Kombinationen von --hud sowie Einstellungen im OSD gibt es Teilerfolge, aber niemals Transparenz, glatte Schrift oder andere ähnlich gelagerte Features gleichzeitig. Die Anzahl der Kombinationen wächst ziemlich schnell, so dass ich gar nicht alle hier auflisten möchte. Irgendwie vertragen sich auch nicht alle Kombinationen der Videoausgabe und des Deinterlacings mit HD (vom Stottern bis zum Einfrieren der Wiedergabe war alles zu beobachten).

Jetzt mal eine konkrete Frage: Wie kriege ich ein transparentes OSD mit hochwertiger Schrift bei "xv" oder "opengl2"? Bei meinen eigenen VDR-Gehversuchen auf einer Ubuntu-Distribution musste ich mit compiz arbeiten. Aber bei easyVDR?
easyVDR 3.5 auf Moneual MonCaso 320 & MSI B150M MORTAR & Intel Pentium G4560 & 8GiB RAM & DVBSky T9580 DVB-T/T2/C PCIe & SANDISK SSD 64GB & Seagate ST1000VM002 & Plextor BD-R PX-LB950SA
Zitieren
#2
Hallo

Zitat:Bei meinen eigenen VDR-Gehversuchen auf einer Ubuntu-Distribution musste ich mit compiz arbeiten.

Das geht hier auch. Du musst einen Desktop wählen, NICHT KDE dann Desktop Manager aktivieren und in der xorg.conf den letzten Eintrag (ich weiß den Namen gerade nicht) auf enable setzen.

Falls du funktionierende Parameter hast, hier posten.
Unter OpenGL wird das eher nichts mit durchsichtig wenn dann mit xv.

Die Startparameter findest du unter /var/lib/vdr/easyvdr-frontend-sxfe.conf da kannst du anpassen.

Du kannst auch mal 3.0 Testen, da geht mit Vaapi mehr, es wird je nach Hardware auch VDPAU emuliert.
Produktiv-VDR:
Board GA H77-DS3H, Intel Intel(R) Core(TM) i5-3470, Cine S2 DVB, WD 3TB Green, WDC WD20EARS-00J  2TB, Geforce 750Ti oder Intel HD
Easyvdr 3.0
Zitieren
#3
Bleifuss2, danke für den Tipp. Der hat mich in die richtige Richtung geschubst.

Als Desktop Manager habe ich Openbox und XFCE ausprobiert. Funktionieren beide, wenn ich Compositing aktiviert habe.
  • Openbox: Nach Installation von xcompmgr habe ich in /etc/X11/openbox/autostart eine Zeile hinzugefügt: xcompmgr &
  • XFCE: Hier musste ich mittels xfce4-settings-manager Compositing einschalten. Mit diesem Kommando öffnet sich ein Fenster mit der Kachel "Feinstellungen des Fensterverhaltens"  (kommt man auch über die Oberfläche dran, halt Menüs durchstöbern). Nach Klick auf diese Kachel sieht man eine Lasche "Compositor". Dort habe ich "Anzeigen-Compositing", "Vollbildfensterm mit Overlay sofort anzeigen" und "Synchronize drawing to the vertical blank" aktiviert.
Momentan bin ich mit Openbox unterwegs.

In /etc/X11/xorg.conf steht jetzt ("Composite" ist die wesentliche Zeile):
Code:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 1.0  ([email protected])  Thu Feb 25 05:39:23 PST 2010
# 28.11.13 V 0.0.1 Bleifuss
#Wenn die Xorg.conf händisch geändert wird hier "no" eintragen
#XORG_CONF_AUTO_MODE="yes"
Section "Files"
EndSection
Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection
Section "Device"
    Identifier     "Intel Graphics"
    Driver         "intel"
#    Option         "AccelMethod" "uxa"
#Schneller, aber nur fuer neuere Chip's
    Option         "AccelMethod" "SNA"
    Option         "TearFree"    "true"
#    Option         "DPI"   "100x100"
EndSection
Section "Extensions"
        Option "Composite" "Enable"
EndSection
Section "InputClass"
  Identifier     "disable Remote key mapping in X"
  MatchProduct   "kein_FB-Receiver|"
  Option         "Ignore" "on"
EndSection

/var/lib/vdr/easyvdr-frontend-sxfe.conf liest sich wie folgt:
Code:
FULLSCREEN="--fullscreen"
GEOMETRY=""
ACCELERATION=""
VIDEO_DEVICE="--video xv"
VIDEO_MISCELLANEOUS_1="--post tvtime:method=Greedy2Frame,cheap_mode=0,pulldown=none,framerate_mode=full,judder_correction=0,use_progressive_frame_flag=1,chroma_filter=0,enabled=1"
VIDEO_MISCELLANEOUS_2="--hud"
FRONTEND_DISPLAY=":0"
AUDIO_DEVICE="--audio=alsa"
AUDIO_DEVICE_PASSTHROUGH=""
AUDIO_MIXER_CHANNEL=""
AUDIO_MISCELLANEOUS=""
MISCELLANEOUS="--verbose --syslog --reconnect --tcp"
CONFIG_FILE="--config /var/lib/vdr/plugins/xineliboutput/config"
CONNECTSTRING="xvdr://127.0.0.1:37890"
Ohne Hinzufügen der Option --post klappt das Deinterlacing nicht richtig. Einstellungen per OSD werden nämlich beim Booten ignoriert.

Nach diesen Schritten klappt Videoausgabe und transparentes OSD bei allen Skins.

Jetzt kommt aber noch ein Aber. VDR zeigt eine Kanalinfo an, so auch beim Start des VDR samt Frontend. Das ist insbesondere nach dem Booten so. Bei einigen Skins bleibt die Kanalinfo auf dem Bildschirm stehen, und zwar in nicht-transparenter Darstellung. Diese Übrigbleibsel kriegt man auch nicht weg. Es bleibt über dem Videobild, egal ob man den Kanal wechselt oder das OSD verwendet. Ganz so, also ob die Kanalinfo zu einem Zeitpunkt angezeigt wird, wo das OSD noch nicht richtig zur Verfügung steht.

Es scheint also zeitliche Ablaufschwierigkeiten im Wechselspiel von VDR und Frontend beii Deinterlacing und Kanalinfo zu geben. Gibt es hier noch einen Kniff, denn man beachten muss?

Jedenfalls kann ich bestätigen, dass der Skin "flatPlus" funktioniert. Allerdings musste ich mit den OSD-Abmessungen jonglieren, weil es hier - wieder - bei der Kanalinfo bei gewissen Werten zu Abstürzen kam. Das ist anscheinend der Fall, wenn der untere Rand der Kanalinfo dem unteren Bildschirmrand zu nahe kommt oder darüberhinaus ragt.
easyVDR 3.5 auf Moneual MonCaso 320 & MSI B150M MORTAR & Intel Pentium G4560 & 8GiB RAM & DVBSky T9580 DVB-T/T2/C PCIe & SANDISK SSD 64GB & Seagate ST1000VM002 & Plextor BD-R PX-LB950SA
Zitieren
#4
Hallo

Ich habe das aber schon richtig verstanden du verwendest Intel + Vaapi?

Warum eigentlich kein Softhddevice?

Ich würde es ja einbauen, aber so 100%ig hört es sich ja leider nicht an.

Ich würde dir immer noch die V3 zum testen empfehlen ...


Code:
#Wenn die Xorg.conf händisch geändert wird hier "no" eintragen
#XORG_CONF_AUTO_MODE="yes"


Hier no eintragen, sonst wird es vom Setup wieder überschrieben.


Gruß
Bleifuss
Produktiv-VDR:
Board GA H77-DS3H, Intel Intel(R) Core(TM) i5-3470, Cine S2 DVB, WD 3TB Green, WDC WD20EARS-00J  2TB, Geforce 750Ti oder Intel HD
Easyvdr 3.0
Zitieren
#5
Zitat:Ich habe das aber schon richtig verstanden du verwendest Intel + Vaapi?
War mein Ziel. Nun bin ich bei Intel und "xv" als Videoausgabe. Aus meiner Sicht ist die Intel CPU mit eingebauter Grafik ein passender Baustein für stromsparende VDRs.

Zitat:Warum eigentlich kein Softhddevice?
Bin ich auch am Ausprobieren. Funktioniert sehr ordentlich und sehr stabil. Für mich hat Xineliboutput noch ein paar sehr interessante Features wie etwa die Wiedergabe von CDs, DVDs und Videos. Ich habe in der Familie auch noch einen zweiten VDR am Start, wo möglichst wenig Brüche in der Bedienung erforderlich sind. Ich bin außerdem sozusagen mit Xineliboutput groß geworden. Softhddevice ist jedoch noch längst nicht aus dem Rennen...

Zitat:Ich würde es ja einbauen, aber so 100%ig hört es sich ja leider nicht an.
Nach einigem Herumprobieren funktioniert es jedenfalls sehr gut. Für einen Einbau nach Art Plug&Play ist es vielleicht zu wacklig, aber etwaigen Mitlesern hilft dieser Thread, glaube  ich, auch so schon weiter.

Code:
Ich würde dir immer noch die V3 zum testen empfehlen ...
Ich habe hier sozusagen ein Produktivsystem vor mir. Mit meiner Erfahrung mit VDR & Co. bin ich mit easyVDR 2.5 mehr als zufrieden. Wenn ich wieder etwas mehr Zeit habe...
easyVDR 3.5 auf Moneual MonCaso 320 & MSI B150M MORTAR & Intel Pentium G4560 & 8GiB RAM & DVBSky T9580 DVB-T/T2/C PCIe & SANDISK SSD 64GB & Seagate ST1000VM002 & Plextor BD-R PX-LB950SA
Zitieren
#6
Nachtrag: Für HD-Sender musste ich in /etc/vdr/plugins/xineliboutput/config Puffergrößen erhöhen, sonst gab es beim Umschalten Probleme. Welcher Puffer letztendlich für die Schwierigkeiten verantwortlich war, habe ich nicht genauer untersucht. Jedenfalls sind die neuen Einträge wie folgt:
Code:
media.xvdr.num_buffers_hd:3000
engine.buffers.audio_num_buffers:300
engine.buffers.video_num_buffers:750
engine.buffers.video_num_frames:75
easyVDR 3.5 auf Moneual MonCaso 320 & MSI B150M MORTAR & Intel Pentium G4560 & 8GiB RAM & DVBSky T9580 DVB-T/T2/C PCIe & SANDISK SSD 64GB & Seagate ST1000VM002 & Plextor BD-R PX-LB950SA
Zitieren
#7
(16.09.2016, 19:14)Bleifuss2 schrieb:
Code:
#Wenn die Xorg.conf händisch geändert wird hier "no" eintragen
#XORG_CONF_AUTO_MODE="yes"
Hier no eintragen, sonst wird es vom Setup wieder überschrieben.
Nicht dass noch jemand denselben Fehler wie ich macht... Zunächst hatte ich fälschlicherweise das Kommentarzeichen # ebenfalls entfernt, was dazu führt, dass X nicht hochfährt: Der Bildschirm bleibt schwarz und der VDR lässt sich nicht steuern.
easyVDR 3.5 auf Moneual MonCaso 320 & MSI B150M MORTAR & Intel Pentium G4560 & 8GiB RAM & DVBSky T9580 DVB-T/T2/C PCIe & SANDISK SSD 64GB & Seagate ST1000VM002 & Plextor BD-R PX-LB950SA
Zitieren
#8
(14.09.2016, 19:56)Bleifuss2 schrieb:
Zitat:Bei meinen eigenen VDR-Gehversuchen auf einer Ubuntu-Distribution musste ich mit compiz arbeiten.
Das geht hier auch. Du musst einen Desktop wählen, NICHT KDE dann Desktop Manager aktivieren und in der xorg.conf den letzten Eintrag (ich weiß den Namen gerade nicht) auf enable setzen.

Jetzt verwende ich LightDM und Openbox. LightDM deshalb, weil bestimmte Startskripte ausgeführt werden, in denen ich xcompmgr einhängen kann. Einen kleinen Haken gibt es noch: Beim Versuch den VDR auszuschalten, funkt das Plugin Lifeguard dazwischen. Es meldet nämlich, dass noch ein User aktiv sei:
Code:
[email protected]:~$ /usr/share/vdr/shutdown-hooks/10_lifeguard
/usr/share/vdr/shutdown-hooks/10_lifeguard: Zeile 26: [: Zu viele Argumente.
ABORT_MESSAGE="active user"
(Was macht eigentlich die Zeile 26? Eine Variablenzuweisung in eckigen Klammern, was bewirkt denn dieses Konstrukt?)

Das liegt an:
Code:
[email protected]:~$ w -h
easyvdr  pts/2    foobar.localdoma 00:58    0.00 s  0.11 s  0.00 s w -h
easyvdr  :0       :0               01:16   ?xdm?   5:14   0.13 s /usr/bin/openbox --startup /usr/lib/x86_64-linux-gnu/openbox-autostart OPENBOX
Der erste Eintrag stammt natürlich von meinem Login und spielt keine Rolle. Die zweite Zeile macht das Problem.

Daher habe ich in /etc/vdr/lifeguard.conf die Zeile mit dem Eintrag usr auskommentiert. Für mich reicht das. Gibt es eine Lösung, die sich besser in easyVDR einfügt?
easyVDR 3.5 auf Moneual MonCaso 320 & MSI B150M MORTAR & Intel Pentium G4560 & 8GiB RAM & DVBSky T9580 DVB-T/T2/C PCIe & SANDISK SSD 64GB & Seagate ST1000VM002 & Plextor BD-R PX-LB950SA
Zitieren
#9
(16.09.2016, 19:14)Bleifuss2 schrieb: Ich würde dir immer noch die V3 zum testen empfehlen ...

Seit einiger Zeit habe ich meinen VDR aufbauend auf einem Intel Core I3 der ersten Generation auf easyVDR 3.0 umgestellt. Kurz gesprochen: Mit VAAPI klemmt es bei HD, mit XV gibt es einen Schönheitsfehler beim Pausieren der Wiedergabe; "Softhddevice" klappt sehr gut, schwächelt aber bei der Wiedergabe von DVDs und in der Zusammenarbeit mit "Markad". Werde wahrscheinlich dazu in näherer Zukunft in anderen Threads mehr berichten. Insgesamt funktioniert die Geschichte mit XV recht passabel.

Aber jetzt zum Ergebnis meiner Experimente für XV...

Compositing wird benötigt.
/etc/X11/xorg.conf:
Code:
#XORG_CONF_AUTO_MODE="no"
Section "InputDevice"
   Identifier     "Mouse0"
   Driver         "mouse"
   Option         "Protocol" "auto"
   Option         "Device" "/dev/psaux"
   Option         "Emulate3Buttons" "no"
   Option         "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
   Identifier     "Keyboard0"
   Driver         "kbd"
EndSection
Section "ServerFlags"
   Option "BlankTime"   "0"
   Option "StandbyTime" "0"
   Option "SuspendTime" "0"
   Option "OffTime"     "0"
EndSection
Section "Device"
   Identifier     "Intel Graphics"
   Driver         "intel"
#   Option         "AccelMethod" "uxa"
   Option         "AccelMethod" "SNA"
   Option         "TearFree"    "true"
EndSection
Section "Extensions"
 Option "Composite" "true"
EndSection
Section "InputClass"
 Identifier     "disable Remote key mapping in X"
 MatchProduct   "kein_FB-Receiver"
 Option         "Ignore" "on"
EndSection
Übrigens: "SNA" funktioniert ganz gut, und wird auch benötigt, um Tearing zu vermeiden.
/etc/X11/openbox/autostart:
Code:
xcompmgr &

Konfiguration für easyVDR-Infrastuktur, /var/lib/vdr/easyvdr-frontend-sxfe.conf:

Code:
FULLSCREEN="--fullscreen"
GEOMETRY=""
ACCELERATION=""
VIDEO_DEVICE="--video=xv --hud"
#VIDEO_DEVICE="--video=vaapi"
VIDEO_MISCELLANEOUS_1="--buffers=5000"
VIDEO_MISCELLANEOUS_2="--post=tvtime:method=Greedy2Frame,cheap_mode=0,pulldown=none,framerate_mode=full,judder_correction=0,use_progressive_frame_flag=1,chroma_filter=0,enabled=1"
#VIDEO_MISCELLANEOUS_2="--post=tvtime:method=use_vo_driver,cheap_mode=0,pulldown=none,framerate_mode=full,judder_correction=0,use_progressive_frame_flag=1,chroma_filter=0,enabled=1"
FRONTEND_DISPLAY=":0"
AUDIO_DEVICE="--audio=alsa"
AUDIO_DEVICE_PASSTHROUGH=""
AUDIO_MIXER_CHANNEL=""
AUDIO_MISCELLANEOUS=""
MISCELLANEOUS="--verbose --syslog --reconnect --tcp"
CONFIG_FILE="--config /var/lib/vdr/plugins/xineliboutput/config"
CONNECTSTRING="xvdr://127.0.0.1:37890"
Die auskommentierten Einträge sind für den Fall, VAAPI verwendet wird, inlusive Deinterlacing.

Für "Xineliboutput" schlagen sich folgende Einstellungen aus /var/lib/vdr/plugins/xineliboutput/config ganz gut:
Code:
audio.device.alsa_front_device:default
audio.device.alsa_passthrough_device:passthrough
audio.device.alsa_surround40_device:default
audio.device.alsa_surround51_device:default
audio.output.speaker_arrangement:Pass Through
audio.synchronization.av_sync_method:resample
video.processing.ffmpeg_thread_count:4
media.xvdr.num_buffers_hd:4000
media.xvdr.scr_treshold_hd:20
media.xvdr.scr_treshold_sd:10
media.xvdr.scr_tuning_step:1000
subtitles.separate.subtitle_size:tiny
engine.buffers.audio_num_buffers:500
engine.buffers.video_num_buffers:5000
engine.performance.memcpy_method:libc
Alle anderen Werte sind bei ihren Standwerten belassen. Tipp: VDR stoppen, Konfigurationsdatei löschen, VDR starten, VDR stoppen, Konfigurationsdatei mit Default-Werten nehmen.

Die ALSA-Toneinstellungen möchte ich auch noch anfügen. Da habe ich ganz schön lange daran rumgetüftelt. Die Einstellungen aus /etc/asound.conf bewirken, dass "Pass-Through" sowohl an den Fernseher über HDMI ("hdmi:0,1") als auch über  S/PDIF an die Surround-Anlage ("hdmi:1,0") gehen:
Code:
pcm.!default    {
               type plug
               slave   { pcm multi_audio }
               ttable.0.0 1.0
               ttable.1.1 1.0
               ttable.2.0 0.707  # hinten links -> links, Daempfung 3dB
               ttable.3.1 0.707  # hinten rechts -> rechts, Daempfung 3dB
               ttable.4.0 0.5    # zentrum -> links, Daempfung 6dB
               ttable.4.1 0.5    # zentrum -> rechts, Daempfung 6dB
               ttable.5.0 0.5    # basskanal -> links, Daempfung 6dB
               ttable.5.1 0.5    # basskanal -> rechts, Daempfung 6dB
               ttable.0.2 1.0
               ttable.1.3 1.0
               ttable.2.2 0.707  # hinten links -> links, Daempfung 3dB
               ttable.3.3 0.707  # hinten rechts -> rechts, Daempfung 3dB
               ttable.4.2 0.5    # zentrum -> links, Daempfung 6dB
               ttable.4.3 0.5    # zentrum -> rechts, Daempfung 6dB
               ttable.5.2 0.5    # basskanal -> links, Daempfung 6dB
               ttable.5.3 0.5    # basskanal -> rechts, Daempfung 6dB
               }
pcm.passthrough    {
               type plug
               slave   { pcm multi_passthrough }
               ttable.0.0 1.0
               ttable.1.1 1.0
               ttable.0.2 1.0
               ttable.1.3 1.0
               }
pcm.multi_audio {
               type multi
               slaves.a.pcm "hdmi:0,0"
               slaves.a.channels 2
               slaves.b.pcm "hdmi:0,1,AES0=4"
               slaves.b.channels 2
               bindings.0.slave a
               bindings.0.channel 0
               bindings.1.slave a
               bindings.1.channel 1
               bindings.2.slave b
               bindings.2.channel 0
               bindings.3.slave b
               bindings.3.channel 1
               }
pcm.multi_passthrough   {
               type multi
               slaves.a.pcm "hdmi:0,0"
               slaves.a.channels 2
               slaves.b.pcm "hdmi:0,1,AES0=6"
               slaves.b.channels 2
               bindings.0.slave a
               bindings.0.channel 0
               bindings.1.slave a
               bindings.1.channel 1
               bindings.2.slave b
               bindings.2.channel 0
               bindings.3.slave b
               bindings.3.channel 1
               }
Die Geschichte "AES0=" hilft dem Fernseher auf die Sprünge bei der Umschaltung für die Datenströme. (Fernseher und Anlage benehmen sich ein wenig divenhaft bei der Umschaltung.)
easyVDR 3.5 auf Moneual MonCaso 320 & MSI B150M MORTAR & Intel Pentium G4560 & 8GiB RAM & DVBSky T9580 DVB-T/T2/C PCIe & SANDISK SSD 64GB & Seagate ST1000VM002 & Plextor BD-R PX-LB950SA
Zitieren