jojo61: Es gibt da noch einen Bug bei der 4:3-Umschaltung. Einige wenige Sender wie RTL Nitro oder RTL up strahlen ja noch alte Sendungen in diesem Format aus. Die formatrichtige Umschaltung klappt beim ersten mal (mit kleiner Verzögerung), danach aber bei erneuter Anwahl des Senders nicht mehr. Zumindest nicht, wenn das sehr rasch geschieht - also Wiedergabe einer Aufnahme stoppen und sofort wieder starten, oder Channel vor- zurück. Wen man ein paar Sekunden wartet, scheint es zu klappen. Ich habe mal eine 23MB große Aufnahme hochgeladen, die man zum Testen verwenden kann. Ich blicke leider nicht durch, wie die Umschaltung der aspect ratio im Plugin funktioniert.
Video Treiber für Odroid-N2+ (softhdodroid)
-
-
Teste mal das angehängte Video.c ob das nun besser ist.
-
Danke, das funzt!
-
Prima. Habs eingecheckt.
-
auf die Gefahr hin das ich hier etwas überlesen habe, hat schon jemand den VDR in der chroot als nicht root User zum laufen bekommen, also mit --user=vdr?
Hier hat das Ansatzweise geklappt nachdem ich den vdr User weiteren Gruppen hinzugefügt und die rechte der /dev/am* Devices angepasst habe. Nur ein Bild hatte ich nicht nur in Fragmenten.
Hintergrund der Frage ... das würde es einfacher machen die Rechte der Files im zentralen NFS Aufnahme Ordner zu erhalten. -
Moin jojo61 ,
beim Starten von vdr mit dem Plugin auf der Konsole fiel mir auf, dass immer erstmal The codec is not open. amlSetVideoAxis geloggt wird. Ich konnte das soweit debuggen, dass es beim Aufruf dieser Funktion innerhalb von VideoSetOutputPosition kommt. Vielleicht kannst Du da gelegentlich mal einen Blick drauf werfen.
-
Wahrscheinlich hast Du auch schon bemerkt, dass sporadisch bei einem Kanalwechsel das Bild nicht schwarz wird, so als würde amlSetInt("/sys/class/video/disable_video", 1); nicht verarbeitet. Um das zu debuggen, habe ich den Code von amlSetInt etwas erweitert:
Code
Alles anzeigenint amlSetInt(char *path, int val) { int fd = open(path, O_WRONLY, 0644); int ret = 0; if (fd >= 0) { char bcmd[16]; sprintf(bcmd, "%d", val); if (write(fd, bcmd, strlen(bcmd)) < 0) { ret = -1; printf("amlSetInt: error writing %d to %s!\n", val, path); } close(fd); } else { ret = -1; printf("amlSetInt: could not open device for writing %d to %s!\n", val, path); } if (ret) Debug(3, "%s: error writing %s",__FUNCTION__, path); return ret; }
Das bringt hinsichtlich disable_video zwar keine Erkenntnisse (es wird kein Fehler geloggt, aber dennoch nicht schwarz). Aber man sieht nun einen anderen Fehler in VideoInit:
CodeamlSetInt: could not open device for writing 1920 to /sys/class/graphics/fb0/scale_width! amlSetInt: could not open device for writing 1080 to /sys/class/graphics/fb0/scale_height!
Es scheint, als wenn diese Pfade gar kein Schreibrecht haben:
Code-r--r--r-- 1 root root 4096 Apr 2 12:26 scale_height -r--r--r-- 1 root root 4096 Apr 2 12:26 scale_width
Nachdem ich die Schreibrechte gesetzt habe:
wird nun ein anderer Fehler zurückgemeldet:
CodeamlSetInt: error writing 1920 to /sys/class/graphics/fb0/scale_width! amlSetInt: error writing 1080 to /sys/class/graphics/fb0/scale_height!
Ich vermute es liegt daran, dass die Einträge bei einer Abfrage auch keinen Wert, sondern offenbar einen String zurückliefern.:
CoreELEC:/sys/class/graphics/fb0 # cat scale_height
free_scale_height:1080
CoreELEC:/sys/class/graphics/fb0 # cat scale_width
free_scale_width:1920
Weiter bin ich noch nicht, vielleicht fällt Dir ja was ein...
-
Nach 3 Wochen Urlaub in Spanien muss ich mich da erstmal wieder reindenken. Ich schaue es mir an.
-
Das setzen der scale Parameter ging mal. Das wurde wohl in einer neueren Version des Kernels geändert und wird nun nicht mehr gebraucht.
Da es aber nicht schadet und auch nur beim Start einmalig aufgerufen wird, lasse ich es erstmal drin. Damit auch bei älteren Kernels alles klappt.
Im Prinzip wurde es nur gbraucht bei Auflösungen kleiner 1920x1080. Damit dann das OSD runterscaliert wird.
-
Hast Du Dir auch das Problem The codec is not open. amlSetVideoAxis (siehe #586) mal angesehen?
-
Ja. Leider kommt das SetOutputPosition bevor der Stream geöffnet wird. Das ist auch ok so weil ich das nach dem öffnen nochmal setze. Nur beim PIP wird es dort auch gebraucht. Insofern ist da alles ok und ich sollte den debug print rausnehmen.
-
jojo61 ich hätte jetzt einen Schnipsel von einer Minute bei dem das Bild häufig an der selben Stelle stehen bleibt während der Ton weiterläuft und wollte es dir auf deinen Bommel Speicher hochladen, leider scheint das Ding offline:
-
Oh grad gesehen. Ich schau mal danach und melde mich.
-
So ich habe den Server repariert und der Link sollte wieder funktionieren.
-
Danke, habs dir hochgeladen.
Es tritt relativ häufig wenn auch nicht immer auf - ich vermute schon einen Mini Fehler in der Aufnahme, allerdings sollte der das Frontend nicht so aus dem Tritt bringen: tut es ja bei softhdvaapi/softhdrm/sfthdcuvid auch nicht - die zeigen sich gänzlich unbeeindruckt so das man es nicht erkennen kann
-
noch ein Hinweis: Laut Hilfetext soll es die Option -m geben:
Code
Alles anzeigenconst char *CommandLineHelp(void) { return " -a device\taudio device (fe. alsa: hw:0,0 oss: /dev/dsp)\n" " -p device\taudio device for pass-through (hw:0,1 or /dev/dsp1)\n" " -c channel\taudio mixer channel name (fe. PCM)\n" " -m disable pip in mpeg2 streams\n" " -s\t\tstart in suspended mode\n" " -D\t\tstart in detached mode\n" " -w workaround\tenable/disable workarounds\n" "\talsa-driver-broken\tdisable broken alsa driver message\n" "\talsa-no-close-open\tdisable close open to fix alsa no sound bug\n" "\talsa-close-open-delay\tenable close open delay to fix no sound bug\n"; }
aber bei
kommt
CodeApr 14 13:25:57 CoreELEC vdr[4151]: [4151] loading plugin: /usr/local/lib/vdr/libvdr-softhdodroid.so.2.6.3 Apr 14 13:25:57 CoreELEC vdr.sh[4151]: softhdodroid: invalid option -- 'm' Apr 14 13:25:57 CoreELEC vdr.sh[4151]: Unknown option 'm' Apr 14 13:25:57 CoreELEC vdr[4151]: [4151] deleting plugin: softhdodroid
-
Danke, habs dir hochgeladen.
Es tritt relativ häufig wenn auch nicht immer auf - ich vermute schon einen Mini Fehler in der Aufnahme, allerdings sollte der das Frontend nicht so aus dem Tritt bringen: tut es ja bei softhdvaapi/softhdrm/sfthdcuvid auch nicht - die zeigen sich gänzlich unbeeindruckt so das man es nicht erkennen kannDas ist ein PTS warp. Leider verarbeitet der Kernel Treiber nur 32 Bit PTS und wenn der überläuft dann bleibt das video stehen. Dann geht es nur noch mit einem reset weiter. Ich habe das nun mal eingebaut aber da der reset die Buffer löscht, ruckelt es dennoch etwas.
-
-
Könntest du mir mal ein Stück von dem problematischen Stream zukommen lassen ?
-
Ja klar, wo kann ich es hochladen?
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!