У нас есть необработанные потоковые данные, которые мы декодируем и визуализируем, используя собственный код MediaCodec на Kitkat.
Считайте, что наше разрешение видео составляет 800 X 480, а фактический видеоконтент - 800 X 380. Верхнее и нижнее поле по высоте в 50 пикселей содержат черные зоны. Необходимо обрезать эти черные зоны (100 пикселей) при рендеринге на поверхности.
Попробовал метод setRect, чтобы обрезать прямоугольник, но он не сработал.
Пример:
int32_t left, top, right, bottom;
if (format->findRect("crop", &left, &top, &right, &bottom))
{
left = 0, top = 100, right = 800, bottom = 380;
format->setRect("crop", left, top, right, bottom);
}
Кроме того, при настройке формата попытались установить обрезку слева, обрезание справа, обрезку, обрезку, указанную в Mediacodec, также не удалось обрезать.
Пример:
format.setInteger("crop-left", 0);
format.setInteger("crop-top", 100);
format.setInteger("crop-right", 800);
format.setInteger("crop-bottom", 380);
Подскажите, пожалуйста, способ обрезки видео, чтобы обрезанное видео можно было воспроизвести на поверхности.