Jak uzyskać wartości wyrównania kroku i płaszczyzny Y dla kodera MediaCodec
Jest kilka powiązanych pytań i dyskusji na ten temat:
Mediacodec i aparat, niepoprawna przestrzeń kolorówUzyskanie koderów QualComm do pracy z interfejsem API MediaCodechttps://groups.google.com/d/msg/android-platform/awaNwgb6EbY/a-YiIOwaL0QJhttps://code.google.com/p/android/issues/detail?id=37769Dostarczam ramki podglądu kamery (NV21
zamienione naNV12
) doMediaCodec
koder (NV12
znany jakoCOLOR_FormatYUV420SemiPlanar
). Tak wygląda na niektórych urządzeniach zQualComm
koder, na którym są uruchomione wersje Androida mniejsze niż4.3
Muszę wykonać przetwarzanie ramek wejściowych, aby otrzymać tylną ramkę o prawidłowym kolorze.
NaSony Xperia ZR
bieganieAndroid 4.2.2
Muszę dodaćY
wyrównanie płaszczyzny, aby działało na prawie wszystkich rozdzielczościach. Powyższy kod dodaje1024
wyrównanie bajtów dla szerokości, których nie można podzielić32
i2048
wyrównanie bajtów dla innych rozdzielczości. To sprawia, żeMediaCodec
do prawidłowego kodowania ramek dla wszystkich rozdzielczości, które można podzielić16
(z wyjątkiem176x144
dla któregoUV
samolot wygląda źle.
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;
}
Próbowałem przetestować to wyrównanieLG G2
który działa tak samoAndroid 4.2.2
i maQualComm
koder i wygląda na to, że nie działa poprawnie.UV
samolot jest źle wyrównany (zielony pasek na dole ramki). Nie byłem w stanie obliczyć wypełnienia, które będzie działać dla obu telefonów.
Mam również dostęp doSony Xperia Z1
bieganieAndroid 4.3
zQualComm
chipset i wygląda na to, że nie ma takich problemów. Wideo w każdej rozdzielczości wygląda dobrze iY
samolot nie musi być tak ustawiony.
Rozumiem, że jest to związane ze sprzętem i może być skomplikowane, ale ponieważ wcześniej muszę wspierać użytkowników z systemem Android4.3
Mam pytanie. Czy możliwe jest programowe określenieY
wyrównanie płaszczyzny i wartości kroku pionowego / poziomego, których koder oczekuje dla danego formatu koloru?