Guest User

Untitled

a guest
Jan 17th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. jbyteArray result = (env)->NewByteArray(SIZE_BUFFER_QUEUE);
  2. jbyte *m_buffer = new jbyte[SIZE_BUFFER_QUEUE];
  3. while (engine.isRecording) {
  4. if (engine.fBufferOut.size() >= SIZE_BUFFER_QUEUE) {
  5. jboolean isCopy;
  6.  
  7. mtx.lock();
  8. memcpy(m_buffer, engine.fBufferOut.data(), SIZE_BUFFER_QUEUE);
  9. auto begin = engine.fBufferOut.begin();
  10. engine.fBufferOut.erase(begin, begin + SIZE_BUFFER_QUEUE);
  11. mtx.unlock();
  12.  
  13. jbyte *ar = (jbyte *) env->GetPrimitiveArrayCritical(result, &isCopy);
  14. memcpy(ar, m_buffer, SIZE_BUFFER_QUEUE);
  15. env->ReleasePrimitiveArrayCritical(result, ar, JNI_ABORT);
  16. env->CallVoidMethod(type, method_onNewEncodedBytesCallback, result,
  17. (jint) SIZE_BUFFER_QUEUE);
  18. }
  19. usleep(100);
  20. }
  21. LOGE("====END RECORDING)");
  22.  
  23. delete[] m_buffer;
  24. env->DeleteLocalRef(result);
  25.  
  26.  
  27.  
  28.  
  29. стало
  30.  
  31.  
  32. jbyteArray result = (env)->NewByteArray(SIZE_BUFFER_QUEUE);
  33. jbyte *m_buffer = new jbyte[SIZE_BUFFER_QUEUE];
  34. unsigned char mp3_buffer[SIZE_BUFFER_QUEUE];
  35. unsigned char* data = new unsigned char [SIZE_BUFFER_QUEUE];
  36. while (engine.isRecording) {
  37. if (engine.fBufferOut.size() >= SIZE_BUFFER_QUEUE) {
  38. jboolean isCopy;
  39.  
  40. mtx.lock();
  41. memcpy(data, engine.fBufferOut.data(), SIZE_BUFFER_QUEUE);
  42. auto begin = engine.fBufferOut.begin();
  43. engine.fBufferOut.erase(begin, begin + SIZE_BUFFER_QUEUE);
  44. mtx.unlock();
  45.  
  46. size_t write = engine.codec->encode(mp3_buffer, SIZE_BUFFER_QUEUE, data, SIZE_BUFFER_QUEUE);
  47. memcpy(m_buffer, mp3_buffer, write);
  48.  
  49. jbyte *ar = (jbyte *) env->GetPrimitiveArrayCritical(result, &isCopy);
  50. memcpy(ar, m_buffer, SIZE_BUFFER_QUEUE);
  51. env->ReleasePrimitiveArrayCritical(result, ar, JNI_ABORT);
  52. env->CallVoidMethod(type, method_onNewEncodedBytesCallback, result,
  53. (jint) SIZE_BUFFER_QUEUE);
  54. }
  55. usleep(100);
  56. }
  57. LOGE("====END RECORDING)");
  58.  
  59. delete[] m_buffer;
  60. delete[] data;
  61. env->DeleteLocalRef(result);
Add Comment
Please, Sign In to add comment