Вопрос

Я хочу отправить необработанный аудиобуфер в С++ для перекодирования звука.у меня есть два варианта

  1. используя трубопроводный поток
    • использование прямых буферов (java.nio)

Действительно ли это два моих лучших варианта (и какие люди порекомендуют?) Спасибо!

Это было полезно?

Решение

Прямые буферы в NIO почти наверняка будут иметь лучшую производительность.Это практически идеальный случай для прямых буферов.

Я не уверен, в чем смысл вашего вопроса - если вы хотите знать, есть ли другие варианты, то ответ, конечно, пока (вы могли бы, например, записать в файл, а затем вызвать внешнее приложение для его обработки - или вы можете использовать JNI без прямых буферов).Но если вам нужен тесно связанный высокопроизводительный интерфейс между кодом Java и C++, то JNI вместе с прямыми буферами станет подходящим инструментом.

Другие советы

JNI легко испортить, поэтому люди склонны на это жаловаться.Но это отличный и чрезвычайно стабильный вариант, если все сделано правильно.

Вы можете использовать сокеты (которые принимают локальные соединения), но я думаю, это будет более эффективно в системах *nix.

Если вам не нужно перекодирование в реальном времени, я бы выбрал подход с буферами.Таким образом, вы получите лучший контроль и будете уверены, что ни один байт не будет потерян.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top