ujr Posted June 13, 2007 Share Posted June 13, 2007 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 Quote Link to comment
Griga Posted June 13, 2007 Share Posted June 13, 2007 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. Quote Link to comment
ujr Posted June 13, 2007 Author Share Posted June 13, 2007 (edited) 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 June 13, 2007 by ujr Quote Link to comment
Griga Posted June 13, 2007 Share Posted June 13, 2007 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 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 Quote Link to comment
ujr Posted June 13, 2007 Author Share Posted June 13, 2007 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. Quote Link to comment
Griga Posted June 13, 2007 Share Posted June 13, 2007 Werd gleich mal einiges zum Offline-Lesen laden. Eine schöne Sommerferien-Lektüre 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... Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.