So erhalten Sie Werte für Schrittweite und Y-Ebene für den MediaCodec-Encoder

Es gibt ein paar verwandte Fragen und Diskussionen zu diesem Thema:

Mediacodec und Kamera, Farbraum falschQualComm-Encoder über die MediaCodec-API zum Laufen bringenhttps://groups.google.com/d/msg/android-platform/awaNwgb6EbY/a-YiIOwaL0QJhttps://code.google.com/p/android/issues/detail?id=37769

Ich füttere Kameravorschaubilder (NV21 konvertiert zuNV12) bisMediaCodec Encoder (NV12 akaCOLOR_FormatYUV420SemiPlanar). So sieht es bei manchen Geräten mit ausQualComm Encoder, auf denen Android-Versionen ausgeführt werden, sind kleiner als4.3 Ich muss einige Eingabe-Frames verarbeiten, um einen Back-Frame mit der richtigen Farbe zu erhalten.

AufSony Xperia ZR LaufenAndroid 4.2.2 Ich muss hinzufügenY Ebenenausrichtung, damit es auf fast allen Auflösungen funktioniert. Code oben fügt hinzu1024 Byteausrichtung für Breiten, die nicht durch geteilt werden können32 und2048 Byteausrichtung für andere Auflösungen. Es machtMediaCodec um Frames für alle Auflösungen, die durch geteilt werden können, richtig zu kodieren16 (außer176x144 für welcheUV Flugzeug sieht falsch ausgerichtet aus).

int getYPadding() {
    if (mediaCodecInfo.getName().contains("OMX.qcom") && android.os.Build.VERSION.SDK_INT < 18) {
        if ((getWidth() % 32) != 0) {
            return (getWidth()*getHeight()) % 1024;
        } else {
            return (getWidth()*getHeight()) % 2048;
        }
    }
    return 0;
}

Ich habe versucht, diese Ausrichtung zu testenLG G2 das läuft gleichAndroid 4.2.2 und hatQualComm Encoder, und es sieht so aus, als würde es nicht richtig funktionieren.UV Flugzeug ist falsch ausgerichtet (ein grüner Streifen am unteren Rand des Rahmens). Ich konnte die Polsterung nicht berechnen, die für beide Telefone funktioniert.

Ich habe auch Zugang zuSony Xperia Z1 LaufenAndroid 4.3 mitQualComm Chipsatz und es sieht aus wie es nicht solche Probleme hat. Video in jeder Auflösung sieht gut aus undY Flugzeug muss ohnehin nicht ausgerichtet werden.

Ich verstehe, dass es hardwarebezogen ist und kompliziert sein könnte, aber da ich Benutzer unterstützen muss, die Android ausführen, bevor4.3 Ich habe eine Frage. Ist es möglich, programmgesteuert zu bestimmenY Ebenenausrichtung und vertikale / horizontale Schrittwerte, die der Encoder für das angegebene Farbformat erwartet?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage