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

Dostarczam 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?

questionAnswers(1)

yourAnswerToTheQuestion