Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- jbyteArray result = (env)->NewByteArray(SIZE_BUFFER_QUEUE);
- jbyte *m_buffer = new jbyte[SIZE_BUFFER_QUEUE];
- while (engine.isRecording) {
- if (engine.fBufferOut.size() >= SIZE_BUFFER_QUEUE) {
- jboolean isCopy;
- mtx.lock();
- memcpy(m_buffer, engine.fBufferOut.data(), SIZE_BUFFER_QUEUE);
- auto begin = engine.fBufferOut.begin();
- engine.fBufferOut.erase(begin, begin + SIZE_BUFFER_QUEUE);
- mtx.unlock();
- jbyte *ar = (jbyte *) env->GetPrimitiveArrayCritical(result, &isCopy);
- memcpy(ar, m_buffer, SIZE_BUFFER_QUEUE);
- env->ReleasePrimitiveArrayCritical(result, ar, JNI_ABORT);
- env->CallVoidMethod(type, method_onNewEncodedBytesCallback, result,
- (jint) SIZE_BUFFER_QUEUE);
- }
- usleep(100);
- }
- LOGE("====END RECORDING)");
- delete[] m_buffer;
- env->DeleteLocalRef(result);
- стало
- jbyteArray result = (env)->NewByteArray(SIZE_BUFFER_QUEUE);
- jbyte *m_buffer = new jbyte[SIZE_BUFFER_QUEUE];
- unsigned char mp3_buffer[SIZE_BUFFER_QUEUE];
- unsigned char* data = new unsigned char [SIZE_BUFFER_QUEUE];
- while (engine.isRecording) {
- if (engine.fBufferOut.size() >= SIZE_BUFFER_QUEUE) {
- jboolean isCopy;
- mtx.lock();
- memcpy(data, engine.fBufferOut.data(), SIZE_BUFFER_QUEUE);
- auto begin = engine.fBufferOut.begin();
- engine.fBufferOut.erase(begin, begin + SIZE_BUFFER_QUEUE);
- mtx.unlock();
- size_t write = engine.codec->encode(mp3_buffer, SIZE_BUFFER_QUEUE, data, SIZE_BUFFER_QUEUE);
- memcpy(m_buffer, mp3_buffer, write);
- jbyte *ar = (jbyte *) env->GetPrimitiveArrayCritical(result, &isCopy);
- memcpy(ar, m_buffer, SIZE_BUFFER_QUEUE);
- env->ReleasePrimitiveArrayCritical(result, ar, JNI_ABORT);
- env->CallVoidMethod(type, method_onNewEncodedBytesCallback, result,
- (jint) SIZE_BUFFER_QUEUE);
- }
- usleep(100);
- }
- LOGE("====END RECORDING)");
- delete[] m_buffer;
- delete[] data;
- env->DeleteLocalRef(result);
Add Comment
Please, Sign In to add comment