Как обрезать видео буфер из dequeoutputbuffer медиа-кодека на поверхности Android? - PullRequest
2 голосов
/ 25 апреля 2019

У нас есть необработанные потоковые данные, которые мы декодируем и визуализируем, используя собственный код 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);

Подскажите, пожалуйста, способ обрезки видео, чтобы обрезанное видео можно было воспроизвести на поверхности.

...