Как передать необработанные данные камеры прямо в кодировщик в android NDK - PullRequest
0 голосов
/ 10 июля 2020

Я работаю над собственным приложением (без Java вызовов API), в котором мне нужно кодировать прямую трансляцию камеры и выгружать ее. И избегайте любого memcpy для входного буфера кодировщика. Раньше я мог захватывать данные yuv с камеры с помощью программы чтения AImage и сохранять их, а также кодировать их, передавая сохраненные данные yuv во входной буфер кодировщика, но теперь я хочу избежать сохранения и последующей передачи их кодировщику. Есть ли способ добиться этого, используя только API AMediacode c, доступный в android ndk.

1 Ответ

1 голос
/ 10 июля 2020

Нет гарантии, что встроенный кодировщик примет один из форматов изображений, которые вы получаете с камеры, но если это так, нет необходимости «сохранять» кадр. Сложность заключается в том, что и камера, и кодировщик работают асинхронно, поэтому кадры, которые вы получаете от AImageReader, должны быть поставлены в очередь для использования AMediaCode c. Если вы не хотите помещать эти потоки в очередь, ваша камера может споткнуться, когда нет свободных буферов,

Но может быть проще и эффективнее подключить кодировщик к поверхности через AMediaCodec_createInputSurface () вместо использования буферов.

...