[RFC] H.265 Frame-Parser

  • Hallo zusammen


    Ich habe mal versucht, dem VDR H.265 beizubringen und den notwendigen Frame-Parser implementiert. Die Testmöglichkeiten sind mangels passendem Ausgabeplugin noch gering, aber nun wäre wenigstens mal das Huhn-Ei-Problem (passend zu Ostern) gelöst. Ich kann jedenfalls von "Astra H265 Tests" aufnehmen und auch bei einer kommerziellen UHD-Aufnahme konnte ich einen Index generieren.


    Vielleicht hat einer der Codec-Cracks ja mal Lust, den Patch mal anzuschauen. Ich habe mich nur flüchtig in die Norm eingelesen, aber so wie ich das sehe, wurden bei H.265 ein paar Sachen vereinfacht. So gibt es z.B. ein First-Slice-in-Pic-Flag und auf interlaced-Material wurde (endlich!) verzichtet.


    Gruss
    Thomas

  • Super, dass ein Anfang gemacht wird.


    Mal ein kurzer einseitiger Brainstorm, was noch gemacht werden muß:


    Ausgabeplugin (softhddevice)
    streamdev
    xvdr


    vdr-User-# 755 to_h264 chk_r

  • Ist das so korrekt?

    Code
    1. +cH265Parser::cH265Parser(void) :
    2. + cH264Parser()
    3. +{
    4. +}


    oder sollte es nicht so lauten?

    Code
    1. +cH265Parser::cH265Parser(void) :
    2. + cH265Parser()
    3. +{
    4. +}


    vdr-User-# 755 to_h264 chk_r

  • Danke für die Info C++ ist nicht so mein Ding


    vdr-User-# 755 to_h264 chk_r

  • Ich habe mal versucht, dem VDR H.265 beizubringen und den notwendigen Frame-Parser implementiert.

    Super, endlich geht es etwas los und es wird daran gearbeitet, dem VDR fit zu machen für den neuen Videocodec h.265 (HEVC). :]


    Der neue Videocodec h.265 (HEVC) wird ja nicht nur bei UHD-Sendern verwendet, sondern auch ab dem 31. Mai bei dem Pilotkanal für das zukünftige DVB-T2 HD.
    Siehe dazu auch hier ein paar weiterführende Infos DVB-T2 HD: Testbetrieb startet im Mai


    Paulaner

  • Ich hab's mit einem Quick'n'Dirty Patch vom streamdev-server getestet, und kann sagen:
    Der Parser funktioniert! Ich bekomme ein Bild mit mplayer als Stream im TS format.


    Bei PES füllt sich der Buffer mit dem schnell-schnell Patch nicht. Genauer habe ich mir das aber noch nicht angesehen.


    Getestet habe ich folgende Sender:

    Code
    1. PEARL TV 4K UHD;:12344:HC23M5O35P0S1:S19.2E:30000:2815=36:0;2816=deu@3:0:0:2010:1:1043:0
    2. Insight UHD;:12344:HC23M5O35P0S1:S19.2E:30000:255=36:0;256=deu@3:0:0:2000:1:1043:0


  • Vielen Dank für das Ostergeschenk,
    und deiner Arbeit in Sachen VDR. :)


    Leider ist HVEC/4k bei mir Hardwareseitig noch nicht wirklich brauchbar.
    Weiters habe ich auch einen kurzen Blick auf das VNSI-Plugin gemacht, das braucht wie's aussieht einen eigenen Parser, und wird somit aufwendiger.

  • Hallo zusammen


    Der Parser scheint zu funktionieren. Mit einem gehackten Prototyp des amlhddevice-Plugins kann ich auf einem Odroid C2 eine Aufnahme von "Astra H265 Tests" abspielen und Schnittmarken anspringen und verschieben. Live-TV habe ich leider weder mit streamdev noch satip ans Rennen gekriegt - evtl. müssen die Plugins noch angepasst werden.


    Allerdings ist meine libamcodec auf dem Odroid C2 ein ziemliches Gebastel, beim Zurücklesen der Audio-Pts crasht z.B. VDR weil über Array-Grenzen geschrieben wird. Leider hat Hardkernel noch keine offizielle 64-Bit-Version herausgebracht, meine Sourcen sind deshalb ein Mix von Codesnake's Repo und einem, Zitat: "early hack", von hier. Momentan also immer noch eine Grossbaustelle an der Amlogic-Front, der ffmpeg-Ansatz auf dem Raspberry Pi scheint mir momentan erfolgsversprechender...


    Gruss
    Thomas

  • Was mir aufgefallen ist.


    Laut Doku sind nuh_layer_id + nuh_temporal_id_plus1 = 9 bit

    Code
    1. nal_unit_header( ) {
    2. forbidden_zero_bit :f(1)
    3. nal_unit_type :u(6)
    4. nuh_layer_id :u(6)
    5. nuh_temporal_id_plus1 :u(3)
    6. }


    Du machst aber nur ein GetByte()
    Dadurch dürfte Dein first_slice_segment_in_pic_flag um ein bit daneben liegen.


    Oder liege ich da falsch?


  • Ein Bit der Layer ID geht beim parsen des NAL Unit Types "verloren", das sollte daher schon passen.


    Gruss
    Thomas

  • channels.conf für Rhein/Main:


    Code
    1. Das Erste HD:778000:B8G16M64P0Q7766S1T32X0:T:27500:1361=36:0;1362=deu@122:1366;1369=deu:0:769:8468:16481:0
    2. ZDF HD:778000:B8G16M64P0Q7766S1T32X0:T:27500:1377=36:0;1378=deu@122:1382;1385=deu:0:16961:8468:16481:0


    Die Privaten sind verschlüsselt und senden damit unter Ausschluss der Öffentlichkeit


    Anbei noch ein Patch für streamdev

    Dateien


    vdr-User-# 755 to_h264 chk_r

  • jsffm
    Danke für den Streamdev patch, der funktionierte auf Anhieb.
    Werde den in den nächsten Tagen noch etwas ausführlicher testen.


    Mein erster Versuch streamdev zu patchen hat nur hin und wieder zu einer Bildausgabe geführt, mir haben da wie es aussieht zwei notwendige Zeilen gefehlt.
    Deshalb hatte ich den Patch auch nicht gepostet.



    Mit freundlichen Grüßen,
    z421 :)

  • PES streaming funktioniert mit dem streamdev patch noch nicht.


    Da schreibt der VDR im Log immer folgende Meldungen:

    Zitat

    May 3 14:22:59 tvserver vdr: [1217] ERROR: unknown picture type '4'
    May 3 14:22:59 tvserver vdr: [1217] ERROR: unknown picture type '5''
    May 3 14:22:59 tvserver vdr: [1217] ERROR: unknown picture type '6'
    May 3 14:22:59 tvserver vdr: [1217] ERROR: unknown picture type '7'


    Je "unknown picture type" Nummer sind's jeweils ca. 25 Log Einträge

  • Bei mir treten die Fehlermeldungen nicht auf, kannst Du Deine Testbedingungen etwas genauer beschreiben?


    vdr-User-# 755 to_h264 chk_r

  • Bei mir treten die Fehlermeldungen nicht auf, kannst Du Deine Testbedingungen etwas genauer beschreiben?


    Kanaleintrag aus der channels.conf

    Code
    1. PEARL TV 4K UHD:12344:HC23M5O35P0S1:S19.2E:30000:2815=36:2816=deu@3:0:0:2010:1:1043:0


    UHD streaming funktioniert mit:

    Zitat

    mplayer http://10.10.10.39:3000/TS/S19.2E-1-1043-2010.ts


    UHD streaming funktioniert nicht mit:

    Zitat

    mplayer http://10.10.10.39:3000/PES/S19.2E-1-1043-2010.ts

  • PES habe ich nicht getestet.


    vdr-User-# 755 to_h264 chk_r

  • Wunderbar, mit diesem Patch kann VDR auch UHD1 entschlüsseln:

    Code
    1. UHD1 by ASTRA / HD+;SES ASTRA:10993:hC56M5O35S1:S19.2E:22000:0:102=deu@3:0:1830,1843,1860,186A:2:1:1035:0


    Streaming funktioniert mit MPC-HC 1.7.10


    Vielen Dank!

  • Ich hab mal versucht hier den derzeitigen Stand von HEVC-Support zusammenzufassen.


    vdr-User-# 755 to_h264 chk_r

  • Ich hab mal versucht hier den derzeitigen Stand von HEVC-Support zusammenzufassen.


    Danke für die Mühen, aber sind nicht die Hardwareangaben etwas zu allgemein bzw. verleiten dazu anzunehmen, dass mehr geht als tatsächlich möglich ist?


    Skylake kann unter Linux nur 8bit 4k Material hardwarebeschleunigt dekodieren, 10bit geht nur über die CPU, und bei den Grafikkarten ist die Auswahl mit 10bit support derzeit noch auf einige wenige Nvidia Karten beschränkt. Es ist wichtig, zu wissen dass UHD über DVB-S2 in der Regel 10bit Material ausstrahlt.


    Details dazu:
    http://www.astra.de/18049106/ultra-hd


    Die Sender:

    • UHD1 by Astra / HD+
    • pearl.tv UHD 4K
    • Fashion 4K
    • Insight

    senden HEVC Main 10, 2160 50p.


    Skylake kann HEVC nur in 8bit & 30Hz via HDMI 1.4.