Как получить значения выравнивания шага и плоскости Y для кодера MediaCodec
Там'Несколько вопросов и дискуссий на эту тему:
Медиакодек и камера, цветовое пространство неверноПолучение кодеров QualComm для работы через API MediaCodechttps://groups.google.com/d/msg/android-platform/awaNwgb6EbY/a-YiIOwaL0QJhttps://code.google.com/p/android/issues/detail?id=37769Я кормлю кадры предварительного просмотра камеры (NV21
конвертировано вNV12
) чтобыMediaCodec
кодировщик (NV12
акаCOLOR_FormatYUV420SemiPlanar
). Похоже, что на некоторых устройствах сQualComm
кодировщик, на котором установлены версии Android менее4.3
Я должен сделать некоторые входные кадры обработки, чтобы получить задний кадр с правильным цветом.
НаSony Xperia ZR
БегAndroid 4.2.2
Я должен добавитьY
выравнивание по плоскости, чтобы оно работало практически на всех разрешениях. Код выше добавляет1024
выравнивание байтов для ширины, которая не может быть разделена на32
а также2048
выравнивание байтов для других разрешений. Это делаетMediaCodec
правильно кодировать кадры для всех разрешений, которые можно разделить на16
(Кроме176x144
для которогоUV
самолет выглядит смещенным)
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;
}
мы пытались проверить это выравнивание наLG G2
который работает так жеAndroid 4.2.2
и имеетQualComm
кодировщик, и похоже, что он не работает на нем правильно.UV
плоскость смещена (зеленая полоса внизу рамки). Я не смог рассчитать отступ, который будет работать для обоих телефонов.
У меня также есть доступ кSony Xperia Z1
БегAndroid 4.3
сQualComm
чипсет и похоже у него таких проблем нет. Видео на каждом разрешении выглядит нормально иY
Самолет не должен быть выровнен так или иначе.
Я понимаю, что этос аппаратным обеспечением и может быть сложным, но так как я должен поддерживать пользователей под управлением Android до4.3
У меня вопрос. Можно ли программно определитьY
значения выравнивания плоскости и вертикального / горизонтального шага, какой кодер ожидает для данного цветового формата?