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=37769Ich 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?