Video Treiber für Odroid-N2+ (softhdodroid)

  • Das ist wohl die Zeitlupe :) Ich glaube da muss ich noch nacharbeiten weil da die Trickspeed Werte zu hoch sind. Wie sieht es denn bei dem "normalen" Rückwärts aus ?

    Ne, das war das normale zurückspulen ... ich sehe die Uhr läuft schnell zurück, aber es kommt kein neues Bild. Dann kamen gefühlt 3-4 Bilder, als er von "Tagesschau" auf die Werbung davor gewechselt ist, dann wieder länger gar nichts ... evtl. kannst Du es ja auch mit der Tagesschau reproduzieren.

  • Habe gerade auch nochmal zur Probe eine Aufnahme vom ZDF gemacht ... da kann ich zurückspulen ... kannst Du evtl. auch mal mit der Tagesschau um 20:00 testen, ob Du da bei Dir zurückspulen kannst? Sonst stell ich einen Ausschnitt der Tagesschau zur Verfügung, wo es bei mir nicht geht.

    Beim ZDF (gerade Rosenheim-Cops) kann ich in der Aufnahme vor- und zurückspulen und auch Zeitlupe vorwärts/rückwärts geht ... auch wenn es bei Pause und dann in Zeitlupe rückwärts erst ein paar Sekunden dauert, bevor er mit der Zeitlupe beginnt. Der Wiedergabe-Zeitstempel springt dabei auch erst ~3m zurück, dann wieder auf die aktuelle Zeit und dann läuft die Zeitlupe rückwärts los ...

  • Ich habe jetzt ZDF, arte und Servus TV getestet (jeweils HD, Vodafone Kabelnetz). Zurückspulen geht nirgendwo.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Ich habe mir das nun angeschaut und bin verwirrt :) Ja bei ARD habe ich das Problem auch. Im Unterschied zum ZDF schickt der VDR eine Sekunde nach dem start des Zurückspulen ein Clear. Damit geht der ganze Setup kaputt und deswegen funktioniert es nicht. ABER, warum schickt der VDR ein Clear ?? Ich denke es liegt an den PCR Values die ich in GetSTC zurückschicke. Leider kann ich da nicht die realen Values aus dem Kernel zurückschicken, weil der Odroid hier nur mit 32Bit arbeitet. Deswegen speichere ich den letzten PCR Value den ich in die Queue zum Kernel geschrieben habe und schicke den zurück. Das ergibt schonmal eine kleine Diskrepanz zum real angezeigten I-Frame. Aber warum der VDR sich daran stört und ein Clear schickt ist mir ein Rätsel. Zumal es ja beim ZDF auch so ist.

    Bei der Gelegenheit habe ich noch einen Fehler gefunden. Derzeit funktioniert das Springen zwischen Schnittmarken nicht sauber. Das habe ich aber schon gefunden und werde es mit korrigieren wenn ich eine Lösung für das Spulen gefunden habe.

    Ich bin also noch am suchen. Geduld :)

  • Nach weiteren Stunden des analysierens bin ich zu dem Ergebniss gelangt das es nicht geht.


    So wie ich das sehe werden bei ARD und anderen Sendern die Frames in einer anderen Reihenfolge codiert als z.b. beim ZDF. Das ist sicher im Rahmen der h264 Spec völlig ok, aber der Decoder des Odroid hat damit offensichtlich Probleme. Beim normalen vorwärts klappt das auch, nur wenn ich I-Frames schicke die aus einem ARD Stream stammen dann werden sie zwar angezeigt, aber der decoder bleibt dann stehen und alle weiteren I-Frames (mit kleinerem PCR) werden nicht mehr angezeigt. (bei Trickpeed). Deswegen geht da kein Rückwärtsspulen.

    Beim Rückwärtspringen (Grüne Taste) wird vor jeden Sprung ein Reset vom VDR gemacht und da geht das dann einmal. Deswegen fällt das da nicht auf.


    Was nun wirklich anders ist am ARD Stream habe ich nicht weiter analysiert. Evtl. fehlt da nur irgendein Flag im Stream was man nachpatchen könnte, aber das ist mir derzeit zu hoch. Evtl. gibt es hier bessere Spezialisten was im Stream zw. ARD und ZDF unterschiedlich ist.


    Ich checke nun noch den fix für das Springen zwischen EDIT Marken ein.

  • Ich habe auch nochmal etwas rumprobiert ... ich habe noch einen RockPi 4 mit softhdevice-drm-gles ... da sieht es mit dem Spulen ähnlich aus. Auf meinem Wohnzimmer-VDR mit Intel via softhddevice von lnj geht es aber. Liegt das am Decoder von der Intel Gfx oder ist vlt. im softhddevice von lnj noch irgendwas drin? Leider ist der VDR auf so einem alten OS Stand, das ich keine Pakete mehr bauen kann, sonst hätte ich mal das originale softhddevice dagegen getestet.

  • Was für ein Reset ist das, den vdr bei Drücken der grünen Taste durchführt? Wenn man die wiederholt schnell hintereinander drückt und im setup eine kleine Sprungweite eingestellt hat, funktioniert das wiederholte Anzeigen von rückwärts laufenden i-frames und es sieht wie Spulen aus.


    Kann man vielleicht die player-Funktionen, die im Moment aus dvbplayer.c kommen, mit einem eigenen, im Plugin integrierten Player ersetzen und dann für Zeitlupe und Bildsuchlauf unter Verwendung von SkipSeconds statt Trickspeed das gewünschte Ergebnis erreichen?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Was für ein Reset ist das, den vdr bei Drücken der grünen Taste durchführt?

    Da kommt ein Clear vom vdr. Daraus mache ich dann ein amlReset. Sonst löscht er nicht die Queue im Kernel.

    Mich würde eher mal interessieren was der Unterschied in den I-Frames zw. ARD und ZDF ist. Gibt es ein Tool das ein I-Frame zerlegen kann ?

  • Ich habe zwar leider nicht wirklich Ahnung davon, aber es gibt scheinbar mehrere Trickspeed Modes bei AML, zumindest finde ich sowas


    #define TRICKMODE_NONE 0x00

    #define TRICKMODE_I 0x01

    #define TRICKMODE_FFFB 0x02


    auf der folgenden Seite: https://github.com/hardkernel/…mples/TsPlayer/TsPlayer.h


    Wenn ich das bei Dir im Code richtig gesehen habe, nutzt Du nur Trickmode 0 oder 1 ... im AMLPlayer wird aber für FF oder FB der Trickmode 2 gesetzt. Keine Ahnung, ob das bei der Lösungssuche hilft ... aber vlt. war das ja noch nicht bekannt?

  • Da der vdr i-frames sendet, sollte das schon passen.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Ah, verstehe, TRICKMODE_I == I-Frames :D

  • #define TRICKMODE_FFFB 0x02

    Hab ich schon ausprobiert, keine Änderung. Da es ja im Prinzip geht (z.b. Bei ZDF) denke ich nicht das ich hier etwas falsch mache.

    Es muss etwas im I-Frame sein was ihn stört.


    Im Übrigen ist es nicht der Trickmode sondern der Freerun Mode der hier genutzt wird. Damit wird das Video/PCR Sync abgeschaltet und jedes Frame unabhängig vom PCR angezeigt. Bei ARD halt nur das erste :(

  • Es ist nicht nur die ARD. Ich habe Dir mal einen Ausschnitt aus einer ZDF-Aufnahme hochgeladen, bei der ich auch nicht zurückspulen kann.

    %ZDFzeit.tar.gz
    Shared with Dropbox
    www.dropbox.com

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Stimmt da geht es auch nicht. Ich habe mir die Streams nun nochmal genauer angesehen und es gibt einen Unterschied in der Codierung.

    Im ZDF (da wo es geht ) kommt ein I-Frame mit den Nal Units 9, 7, 8, 8, 6, 5. Wobei die 5 sagt es ist ein IDR Frame also ein I-Frame.

    Bei der ARD (wo es nicht geht) kommt das I-Frame als 9, 7, 8, 6, 1. Wobei die 1 sagt das es ein B-Frame ist. In diesen Streams sind keine Nal Units mit 5 vorhanden. Das lässt darauf schliessen das hier Reference B-Frames genutzt werden. Wenn ich das richtig verstanden habe kann man die auch als I-Frames ansehen. Nur scheint der Decoder damit aber stehen zu bleiben.

  • Werden B-Frames nicht deswegen in Reference- und nicht-Reference Frames unterschieden, je nachdem, ob ein anderes Frame dieses Frame als Reference nutzt oder halt nicht? Sprich ob der Decoder das Frame anschließend entsorgen kann oder nicht. Aber so wie ich das verstehe, kann man nur I-Frames für die TrickModes nutzen, weil sie auf kein anderes Bild referenzieren. B-Frames können sowohl vor- als auch rückwärts referenzieren (bi-directional) und P-Frames nur Rückwärts (previous). Insofern muss es doch eigentlich auch in dem ARD Stream I-Frames geben, sonst könnte man doch auch gar nicht schneiden oder Schnittmarken verschieben, welche ja nur auf I-Frames sitzen.

  • Aber ich habe mal ffprobe auf die ZDF Zeit laufen lassen, da kommt scheinbar alle 48 Frames ein I-Frame:

  • es liegt möglicherweise nicht nur am Sender, sondern auch noch am Provider - die Kabel- und iptv-Provider machen ggf. eine Recodierung.

    Ich habe auch schon den Fall gehabt, dass der Stream beim Rückwärtsspulen vorwärts läuft (angezeigte Zeit läuft dann ebenfalls vorwärts, obvwohl der Balken sich nach links bewegt) -wiederum ohne Anzeige der Einzelframes.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • ich habe die Aufnahme von Dir mal auf meinem Intel VDR mit softhddevice abspielen lassen und dort geht sowohl Zeitlupe vorwärts/rückwärts als auch Spulen vorwärts/rückwärts. Wenn ich es richtig verstanden habe, liefert aber der VDR beim Spulen die I-Frames, richtig? Dann sollten ja beide Plugins die gleichen Frames erhalten. Und kann man evtl. vor jedem Senden eines neuen I-Frames ein amlReset schicken?

  • Und kann man evtl. vor jedem Senden eines neuen I-Frames ein amlReset schicken?

    Am amlReset bzw. dem Clear(), welches amlReset aufruft, kann es nicht liegen.


    Wenn ich in Clear() den gleichen Code wie für Playmode pmNone verwende, nur ohne Aufruf von amlReset, kann ich immer noch Schnittmarken nach links verschieben und mit wiederholtem Drücken der grünen Taste Rückwärtssprünge machen. Jedes i-frame wird dabei korrekt angezeigt.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

Jetzt mitmachen!

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