2009-03-10 14 views
0

Ich habe eine bestimmte FLV (VP6/LAME) -Datei mit 400 x 171 Pixeln, wie von der BITMAPINFOHEADER-Struktur gemeldet und von einer Reihe von FLV-Metadaten-Editoren wie RichFLV überprüft.DirectShow: BITMAPINFOHEADER und ISampleGrabber geben verschiedene Größen zurück

Wenn Sie jedoch eine Stichprobe mit einem ISampleGrabber greifen, ist das resultierende Beispiel (bei 3 Byte pro Pixel) nur 204.000 Byte (400 x 170 x 3) statt 205.200 Byte (400 x 171 x 3). d erwarten.

Als ich versuche, nur 400 x 170 Daten in einen 400 x 171 Bitmap Objekt-Konstruktor schieben, wird es ziemlich verärgert und verursacht A/V-Ausnahmen.

Ich könnte das hacken, um 'nahe, aber nicht ganz wie erwartet' Stichprobengrößen zu erkennen, aber ich würde wirklich gerne wissen, wo die 1px der vertikalen Höhe in den Prozess gegangen ist. Meine Vermutung ist ein dubioser Filter, der keine ungeraden Werte für Breite/Höhe unterstützt und ihn entfernt, aber ich bin mir nicht sicher, ob das leicht zu überprüfen ist.

Jeder hat eine Idee, was passieren könnte und wie es zu überprüfen?

(PS: Ich bin kein guter C/C++ Entwickler, so wenden Sie sich bitte keine Lösungen übermäßigen Gebrauch davon Beteiligung)

+0

Welcher Filter wird zur Decodierung des FLV verwendet? AFAIK gibt es keinen Eingeborenen. –

+0

Wir verwenden das, das Teil des CCCP ist. –

Antwort

0

Meine beste Vermutung ist ein dodgey/Buggy FLV-Filter. Was passiert, wenn Sie einen anderen FLV-Filter ausprobieren? Zeigen andere FLV-Dateien falsche Videodimensionen an?

Verwandte Themen