Frage

Ich schreibe eine Anwendung, die ein Video exportiert, das ich erfasst habe (PAL SDI). Der ursprüngliche Farbraum ist Uyvy (4: 2: 2). Wenn ich die Frames mit Swscale auf 4: 2: 0 umwandele und mit Avcodec kodieren, bekomme ich Farbblutungen zwischen den Feldern. Ich vermute, das ist von Swscale, der nicht bewusst ist, dass der Rahmen nicht miteinander verbunden ist. Hier ist ein Beispiel eines Teils eines Bob-desinterlaced-Rahmens von meinem exportierten Video, das eines der Felder zeigt:

Farbblutung zwischen Feldern

Wie Sie sehen, blutet der Farb aus dem anderen Feld. Wie bleibe ich das, was passiert? Ich habe mir die Bibliothek angesehen und versucht, etwas in Swscale zu finden, das es sagt, dass sie die Felder respektieren, aber ich habe nichts gefunden.

Ich speichere jedes Feld in separaten Puffern, sodass ich die Felder einzeln vor der Hand bearbeiten kann, wenn das helfen würde.

dankbar für jede Hilfe dazu!

Grüße Carl

edit: Grundsätzlich, was ich will, ist, PAL DV auszugeben. Ich vermute, Swscale kann diese Art von Interlaced 420 irgendwie erzeugen, da FFMPEG (die Anwendung) dies umgehen kann (ich denke).

War es hilfreich?

Lösung

Die Antwort ist, zwei Swscale-Operationen zu erstellen, eines für jedes Feld.Sie können Swscale trugen, um den gleichen Puffer zu verwenden, indem Sie die Hälfte der Höhe mit doppeltem Stride angeben, und dann den zweiten Betrieb um eine Zeile ausgleichen.

Ich habe endlich die Antwort von der Libav-Benutzerliste erhalten.Beispielcode finden Sie in MPlayer / libmpcodecs / vf_scale.c und libavfilter / vf_scale.c

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top