2009-07-06 6 views
0

Ich habe ein rohes YUV-Dateiformat, alles was ich an dieser Stelle weiß ist, dass der Clip eine Auflösung von 176x144 hat.Das YUV-Dateiformat in Cocoa finden

der Y pla ist 176x144 = 25344 Bytes, und der UV-Plan ist die Hälfte davon. Nun habe ich einige Lesungen über YUV gemacht, und es gibt verschiedene Formate, die den verschiedenen Arten entsprechen, wie die Y-Flugzeuge gespeichert werden.

Nun, wie kann man eine Art von Check in Cocoa durchführen, um das rohe YUV-Dateiformat zu finden. Gibt es einen Datei-Header im YUV-Frame, in dem ich einige Informationen extrahieren kann?

Vielen Dank im Voraus für alle

Antwort

3

Leider, wenn es Strom nur ein rohes YUV ist, wird es nur die Daten für die auf die Platte geschrieben Rahmen sein, ein anderer nach. Es wird wahrscheinlich keine Kopfzeile geben, die angibt, welches spezifische Format verwendet wird.

Es klingt wie Sie haben festgestellt, dass es ein YUV 4: 2: 2-Stream ist, so dass Sie nur die Interleaving-Reihenfolge ermitteln müssen (die häufigsten Möglichkeiten aufgeführt sind here). Als Antwort auf Ihre vorherige Frage I posted a function, die einen Frame aus dem UYVY (Y422) YUV-Format in das 2VUY-Format konvertiert, das von Apples YUV OpenGL-Erweiterung verwendet wird. Am besten können Sie das ausprobieren und sehen, wie die Bilder aussehen, und dann das Interleaving-Format ändern, bis die Farben und das Bild klar sind.

+0

klingt gut, vielen Dank – ReachConnection

+0

Ich habe gerade herausgefunden, dass mein YUV-Format NV12 ist. irgendwelche Empfehlungen für den nächsten Schritt? – ReachConnection

+0

Das sieht etwas komplizierter aus, weil es ein planares Format ist, nicht verschachtelt (entsprechend dem ersten Link in meiner Antwort). Sie könnten meine Funktion ändern, um zuerst alle Y-Werte zu lesen und sie an die richtigen Stellen innerhalb des Ausgabe-2VUY-Rahmens zu setzen, dann zurückgehen und die Werte U (Cb) und V (Cr) ausfüllen. Da es sich um ein 4: 2: 0-Frame anstelle eines 4: 2: 2-Frames handelt, wird jeder U- und V-Wert für zwei Zeilen verwendet und zusätzlich für zwei Spalten verwendet: http://v4l2spec.bytesex.org/spec/ r5470.htm –