Подтвердить что ты не робот

Android MediaCodec кодер - странные результаты для устройства Samsung

Edit:

Похоже, проблема в том, что для этого устройства не должно быть не более 16 измерений... но несколько из 32. Вещь - я до сих пор не знаю, как определить, что количественно оценивается как проблемное устройство. Это похоже на использование qcom (что я видел, что это проблема на Android 4.X, но это Android 5.1.1).


Я кодирую видео в своем приложении для Android. Я использую Android MediaCodec для этого, конвертируя RGB каждого кадра в YUV и проходя в пикселях.

Используемый мной код существует некоторое время и работает на любом устройстве, с которым я сталкивался.

Пользователь пришел ко мне с сообщением об ошибке, что их MP4 выглядели странно. Устройство представляет собой Samsung T337A (вкладка Galaxy 4).

Вот как выглядит экспорт MP4:

введите описание изображения здесь

ПРИМЕЧАНИЕ. По какой-то нечетной причине это происходит не во всех разрешениях. Это подтвердилось на 768x432 и 1280x720, но, к примеру, этого не происходит с 640x352 (мое приложение гарантирует, что все разрешения по умолчанию делятся на 16).

В Nexus 5X (который использует тот же полуплоский формат YUV) выход работает со всеми разрешениями.

Так что-то с этим устройством и, возможно, с другими устройствами, о которых я не знаю?


Я просмотрел весь вывод, и он выглядит нормально и идентичен описанному выше Nexus 5X (который работает 100% времени).

Используется MediaCodecInfo - OMX.qcom.video.encoder.avc, используемый цветной формат - 2135033992 (COLOR_FormatYUV420Flexible). Так что в принципе, ничего странного.

Код немного экспансивный, я при необходимости отправлю, но просто ищу общие идеи о том, почему это происходит. Я бы понял, если это было более распространено, но тот же код работает для огромного множества других устройств, поэтому происходит что-то смешное...

4b9b3361

Ответ 1

Убедитесь, что вы используете правильные шаги и смещения буфера.