[rpihddevice] Automatische Mode-Umschaltung

  • Bleibt ein Problem, die PixelAspectRatio bezieht sich auf die sichtbaren Pixel des Storage Containers. Nichts hindert einen daran, 704 in 720 Pixel Zeilenbreite zu versenden, also den analogen, schwarzen Rand mitzusenden. Dies macht Sky und - praktisch für Dich I24 News

    Code
    I24 NEWS;TSA:11067:VC56M2S0:S19.2E:22000:1081=27:1082=@4:0:0:31307:1:1040:0


    Dort kommt man mit bei 4:3 auf 720 * 12 / 11 auf 785, bzw 16:9 1047 Pixel. Stopft man dies so in den Scaler, skaliert er auch die Vertikale -> Kammeffekte.


    Das Problem hier ist, dass es eben kein 16:9 sondern 20:11 ist:


    Code
    Stream #0:0[0x439]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, bt470bg), 720x576 [SAR 16:11 DAR 20:11], 25 fps, 50 tbr, 90k tbn, 50 tbc


    Hier gibt es schlicht keinen passenden Mode, am ehesten aber 720x576 mit PAR 64:45 und zwar so, dass links und rechts ein Stück abgeschnitten wird. Stelle ich bei mir im Plugin-Setup die Formatanpassung von "einrahmen" auf "abschneiden", dann passt das auch. (auf die Schnelle getestet mit rpihddevice-1.0.2)


    Was sollte denn hier, deiner Meinung nach, anders gemacht werden?


    Gruss
    Thomas

  • Hallo Thomas,


    Ich bin mir nicht sicher. Wozu nicht-quadratische Pixel auf quadratische mappen? Mein Fernseher kennt keinen 1024x576px-Mode, sondern nur 720x576, und zwar einmal für 4:3 und 16:9. Ich muss im Fall von PAL/NTSC also nur unterscheiden zwischen (fast) quadratischen (4:3) und gestreckten Pixeln (16:9) um den richtigen Mode zu wählen.


    Wir nähern uns, aber vermeiden weiterhin, genau hinzugucken... :rolleyes:


    Also, es gab analoges PAL und NTSC, die für quadratische Darstellung 768 x 576, bzw. 640 x 480 Pixel benötigt hätten. Da man bei digitalen Geräten mit nur einer Hardware (A/D & D/A Processing) auskommen wollte, traf man sich bei der Breitendarstellung in der Mitte (768 - 640) / 2 + 640 = 704 Pixel bei einem Pixeltakt von 13,5 MHz (A/D Abtastrate).


    => Bei einem analogen(!) TV bekommt man mit 704 / 576 ein 4:3 Bild


    Historisch bedingt dienten die Anteile der Zeile vor und nach den sichtbaren 52 µs der horizontalen Bildlageregelung ("Sandcastle-Impuls"). Als in den Achtzigern Videorekorder in den Markt kamen, stellte man fest, daß man für diese Bildlagereglung bei mechanischen Quellen nacharbeiten mußte, damit die Halbbilder nicht V-förmig auseinander liefen.


    Ein ähnliches Problem stellte sich bei der Digitalisierung - daher verlängerte man die digitale Zeitenbreite auf 53,.. µs bzw. 720 Pixel, um jeweils 8 Pixel R/L Spielraum zu bekommen.
    Dies ist unser SD Zielformat: 720 x 480 bzw. 720 x 576.


    Nun wird im DVB-System SD mit 352 bis 720 Pixeln in 4:3 oder 16:9 gesendet, die PAR enthält also 16:9/4:3 und Sendebreite auf 720 Skalierung. Will ich jetzt feststellen, ob ich ein 4:3 oder 16:9 Format habe, bleibt nur, die metrische Darstellung zu berechnen:


    Sendebreite (352, 480, 544, 704, 720) * PAR = Breite in Pixeln, Metern oder quadratischen Fußballfeldern.


    Komme ich bei dieser Brechnung auf < 810 Pixel, Meter oder quadratische Fußballfelder, ist es 4:3, sonst 16:9.


    Parktischerweise gilt dies auch für HD, auch wenn dort die PAR nur die Verzerrung des Sendewegs für 1280, 1440 oder 1920 Sendebreite enthält.


    Damit sind wir mit zwei if-Abfragen fertig:



    Wenn du Aufnahmen hast, bei denen die Frameratenerkennung nicht korrekt funktioniert, dann bitte ich dich, entweder auf github ein Issue zu erstellen oder mir einen Ausschnitt zukommen zu lassen, damit ich das tun kann.


    Ich schneide Dir mal was zusammen, dann gucken wir, ob es der VDR, Dein Plugin oder die Firmware ist.


    Grüße,
    Stefan

  • Hallo Thomas,



    Das Problem hier ist, dass es eben kein 16:9 sondern 20:11 ist:


    Code
    Stream #0:0[0x439]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, bt470bg), 720x576 [SAR 16:11 DAR 20:11], 25 fps, 50 tbr, 90k tbn, 50 tbc


    Hier gibt es schlicht keinen passenden Mode, am ehesten aber 720x576 mit PAR 64:45 und zwar so, dass links und rechts ein Stück abgeschnitten wird. Stelle ich bei mir im Plugin-Setup die Formatanpassung von "einrahmen" auf "abschneiden", dann passt das auch. (auf die Schnelle getestet mit rpihddevice-1.0.2)


    Also, soweit mir bekannt, ist dieses PAR 16:11 / 12:11 die Empfehlung für den HD 1080 -> SD 576 Transfer, weil der 4:3 Bildschirm ja eigentlich bei 704x576 4:3 darstellt, nicht etwa bei 720x576. Wenn man mal rechnet kommt man mit 704 * 12/11 auf 768, mit 704*16/11 auf 1024 (siehe oben), was den korrekten 4:3, bzw 16:9 Formaten entspräche.


    Das heißt, der Transfer würde rechts und links jeweils 8 Pixel schwarz (oder zusätzliche Bildinfo bei minimalem oben/unten Beschnitt) anfügen, womit man das ganze als "720" ausgeben sollte, sprich das Bild nach PAR Berechnung wieder horizontal um 704/720 stauchen:



    Mein Panel ist damit zufrieden, aber mache Dir selbst ein Bild. Ich habe mal zwei Bilder aus dem Film Final Destination angefügt, der hier einmal als SD-MPEG2, einmal als SD-MPEG4 vorlag. Leider wohl nicht der gleiche Transfer, aber beide im Format 720x576 Pixel (zur Eigenskalierung).


    [EDIT]
    1:
    Wofür hat man eigentlich einen SAT-Tuner im Fernseher, und eine P&P Funktion:
    Mit obiger Skalierung ist das Bild über den TV-Tuner und rpihddevice auf "I24 News" exakt gleich groß.


    2:
    Der Pi braucht übrigens ca 1 - 1,5 Sekunden länger, bis er den gleichen Inhalt zeigt. Auto-Timeshift. :)
    [/EDIT]



    Grüße,
    Stefan

  • Hallo Stefan


    Also, soweit mir bekannt, ist dieses PAR 16:11 / 12:11 die Empfehlung für den HD 1080 -> SD 576 Transfer, weil der 4:3 Bildschirm ja eigentlich bei 704x576 4:3 darstellt, nicht etwa bei 720x576. Wenn man mal rechnet kommt man mit 704 * 12/11 auf 768, mit 704*16/11 auf 1024 (siehe oben), was den korrekten 4:3, bzw 16:9 Formaten entspräche.

    Stimmt, da hast du natürlich recht, steht auch hier geschrieben - da habe ich übrigens die Werte im Code hergenommen.


    Das heißt, der Transfer würde rechts und links jeweils 8 Pixel schwarz (oder zusätzliche Bildinfo bei minimalem oben/unten Beschnitt) anfügen, womit man das ganze als "720" ausgeben sollte, sprich das Bild nach PAR Berechnung wieder horizontal um 704/720 stauchen

    Müssten dann aber nicht die "überzähligen" Pixel links und rechts abgeschnitten werden, um das Gesamtbild nicht zu verzerren? Wenn ich mir deine beiden Screenshots anschaue, so fehlen bei der 16/11-PAR-Variante oben und unten ein paar Zeilen. Hier müsste ich demnach horizontal stauchen, damit der Render die vollen 576 Zeilen nutzt - würde wohl keiner merken und wäre einfacher zu implementieren, wäre aber, meiner Meinung nach, falsch. Oder mache ich einen Denkfehler?


    Gruss
    Thomas

  • Wir nähern uns, aber vermeiden weiterhin, genau hinzugucken...

    Ich denke, beim Verständnis des Problems kommen wir uns tatsächlich näher. ;)


    [..] Damit sind wir mit zwei if-Abfragen fertig

    Deine Umsetzung gefällt mir so trotzdem nicht. Du entscheidest aufgrund einer fixen, absoluten Grösse, ob es sich um 16:9 oder 4:3 handelt. Das funktioniert, wenn man ausschliesslich PAL-/NTSC-SD und aktuelle HD-Formate betrachtet. Unter meinen VDR-Aufnahmen befinden sich aber auch importierte Videos, bei denen das nicht zwingend stimmt. Gut, in der Praxis ist das nicht von Bedeutung, da hier sowieso kein passender TV-Mode gefunden wird, trotzdem gefällt mir deshalb die aktuelle Variante besser. Diese mag unvollständig sein, liefert aber zumindest keine falschen Werte und ist gut erweiterbar.


    Gruss
    Thomas

Jetzt mitmachen!

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