Jump to content

H264 - CoreAVC, Cyberlink


Recommended Posts

Hallo,

 

ich hab eine Frage, die zugegebenermaßen nur am Rande mit DVBViewer zusammenhängt. Vielleicht kann mir trotzdem jemand helfen.

Ich habe den DVBViewer erfolgreich mit H264 Decodern von CoreAVC und Cyberlink benutzt. CoreAVC liefert bei nahezu gleicher CPU-Last flüssigere Bilder, sodass ich einer eigenen DVB Anwendung auch darauf zurückgreifen möchte. Cyberlink funktioniert da schon, ruckelt jedoch genauso wie im DVBViewer. Mein Problem ist nun, dass ich zwar mit CoreAVC erfolgreich einen Graphen erstellen kann (Verbindungen vom Demultiplexer zu CoreAVC bzw. CoreAVC zum VideoRenderer bestehen, der Graph läuft, da ich die Audioausgabe bekomme), aber kein bzw. kein vernünftiges Bild erhalte.

 

Aus einem TS Mitschnitt habe ich mit MPC den Formatblock mit meinem bisher verwendeten verglichen und diesen angepasst. Allerdings bekomme ich überhaupt kein Bild. Wenn ich jedoch den SequenceHeader durch den aus der Wiedergabe einer Mp2 Datei ersetze, erhalte ich ein Bild, das aussieht, als würde das Farbformat (RGB32/RGB24//YUV) nicht stimmen (s. Screenshot). Änderungen des Farbformats in der CoreAVC Konfiguration helfen nicht.

 

Hat jemand eine Idee, woran es liegen könnte? Das schon mal selbst gemacht? Oder gibt's einen Link, wie ich CoreAVC am besten anspreche? Es muss ja gehen - im DVBViewer klappt's ja.

 

Viele Grüße

 

post-37965-1181724918_thumb.png

Link to comment
Wenn ich jedoch den SequenceHeader durch den aus der Wiedergabe einer Mp2 Datei ersetze

Welchen Sequenceheader? Gibt es bei H.264 nicht (nur einen sehr anders organisierten seq_parameter_set), und das ist laut MS auch nur im Rahmen der MPEG2VIDEOINFO-Struktur vorgesehen. Dürfte auf H.264 kaum zutreffen. Der DVBViewer Filter übergibt als Formatblock einen VIDEOINFOHEADER2.

Link to comment
Welchen Sequenceheader? Gibt es bei H.264 nicht (nur einen sehr anders organisierten sequence_parameter_set), und das ist laut MS auch nur im Rahmen der MPEG2VIDEOINFO-Struktur vorgesehen. Dürfte auf H.264 kaum zutreffen. Der DVBViewer Filter übergibt als Formatblock einen VIDEOINFOHEADER2.

 

Schon mal danke für die Info! Kein Wunder, dass ich dazu keine Information finden konnte ;-)

 

Der Grund für die "Spielerei" mit dem SequenceHeader war, das ich mal mehr oder weniger versehentlich den MP2 Formatblock verwendet hatte, und dabei festgestellt habe, dass ich zumindest ein Bild - wenn auch ein kaputtes, bekomme. Ursprünglich hatte ich den Formatblock aus dem DVBOwners Forum genommen.

 

Zwischenzeitlich hab ich grad mal den VIDEOINFOHEADER probiert, der den gleichen Screenshot zeigt. Ich werde jetzt mal den VIDEOINFOHEADER2 verwenden.

Edited by ujr
Link to comment

Den seq_parameter_set wirst du eventuell trotzdem lesen und analysieren müssen, um dem Decoder beim Verbinden zumindest die richtige Auflösung melden zu können. Das ist ziemlich aufwändig - allein schon, den Parameterset in den H.264-Daten überhaupt zu finden :oops:

 

Wie der gelesen wird, ist hier zu sehen:

 

http://iphome.hhi.de/suehring/tml/doc/ldec..._8c-source.html

 

Du wirst auch Doku zu H.264 brauchen. Schaue dich mal hier um:

 

http://neuron2.net/library/avc/

 

Du brauchst vor allem die T-REC-H[1].264-200503-I!!PDF-E.pdf. Viel Spaß mit der Exp-Golomb-Codierung - bei H.264 sind sogar die Header komprimiert :bye:

Link to comment

Vielen, vielen Dank für die Hinweise auf die Doku! Werd gleich mal einiges zum Offline-Lesen laden.

 

Ich hab inzwischen auch ein Bild mit CoreAVC - der Decoder ist offensichtlich sehr empfindlich, was

die Werte im BITMAPINFOHEADER angeht. Wo Cyberlink z. B. egal ist, ob die Strukturgröße oder

die Bilddimensionen richtig gesetzt sind, benötigt CoreAVC die richtigen Werte (Strukturgröße 40,

Bildgrößen erstmal hardkodiert), um überhaupt etwas zu machen.

Also nochmal danke für den Hinweis in die richtige Richtung!

 

Wenn ich jetzt noch wüsste, warum das Bild in HD Sendern manchmal hängenbleibt (der Ton aber

weiterläuft, das Programm ansonsten normal funktioniert und nach dem Umschalten oder

Graph Stop/Start auch das Bild wieder aktuell ist)... Vielleicht hat sich das ja nun auch erledigt.

Da der DVBViewer das Problem nicht hat, muss es ja wieder irgendwie bei mir liegen.

Link to comment
Werd gleich mal einiges zum Offline-Lesen laden.

Eine schöne Sommerferien-Lektüre :oops: nein, ehrlich gesagt echt harter Stoff. Eine Hilfe könnte der H.264 Param Reader sein, den es im Mitgliederbereich -> Tools gibt. Der sucht den seq_parameter_set in einer TS-Datei und gibt ihn in als Text in lesbarer Form aus.

 

Wo Cyberlink z. B. egal ist, ob die Strukturgröße oder die Bilddimensionen richtig gesetzt sind, benötigt CoreAVC die richtigen Werte

Habe ich auch festgestellt. Deshalb sollte man im DVBViewer die Videoformaterkennung unter Optionen -> DirectX einschalten, wenn man den CoreAVC verwendet. Ohne dies bekommt er nur Default-Werte (1920 x 1088 usw.), und wenn die nicht stimmen... :bye:

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...