Я использую собственную библиотеку в android для потоковой передачи.
Вот сценарий:
Я передаю URL-адрес в файл c и после много обработки он записывает данные в wav файл.
Я не так хорошо знаком с C, но я мог понять, есть ли указатель int16_t
, из которого написан wav файл.
Вот вопрос.
Есть ли способ конвертировать int16_t
в jbytearray
, чтобы я мог вернуть массив байтов в свой Java-код?
Спасибо
Вам нужно выделить байт [], а затем скопировать в него данные WAV. Кроме того, создайте "прямой" ByteBuffer, который охватывает WAV-данные и передаст их в ваш код Java.
Прочитайте документацию JNI и Советы JNI doc для получения дополнительной информации. В частности:
SetByteArrayRegion NewDirectByteBuffer
Я не знаю в первую очередь Android, но вы можете посмотреть в java.nio.ByteBuffer
- они могут быть выделены для размещения своего буфера в собственной памяти (allocateDirect()
), поэтому встроенные функции могут писать непосредственно в него.
I Need to convert int16_t to jbytearray
что мне важно.