Lines Matching refs:pSles

42         sles_data * pSles = (sles_data*) calloc(1, sizeof (sles_data));  in slesInit()  local
44 SLES_PRINTF("malloc %zu bytes at %p", sizeof(sles_data), pSles); in slesInit()
45 *ppSles = pSles; in slesInit()
46 if (pSles != NULL) in slesInit()
50 status = slesCreateServer(pSles, samplingRate, frameCount, micSource, in slesInit()
78 sles_data *pSles = (sles_data*) context; in recorderCallback() local
79 if (pSles != NULL) { in recorderCallback()
85 pthread_mutex_lock(&(pSles->mutex)); in recorderCallback()
89 assert(pSles->rxFront <= pSles->rxBufCount); in recorderCallback()
90 assert(pSles->rxRear <= pSles->rxBufCount); in recorderCallback()
91 assert(pSles->rxFront != pSles->rxRear); in recorderCallback()
92 char *buffer = pSles->rxBuffers[pSles->rxFront]; in recorderCallback()
95 if (++pSles->rxFront > pSles->rxBufCount) { in recorderCallback()
96 pSles->rxFront = 0; in recorderCallback()
100 if (pSles->numFramesToIgnore) { in recorderCallback()
101 SLuint32 framesToErase = pSles->numFramesToIgnore; in recorderCallback()
102 if (framesToErase > pSles->bufSizeInFrames) { in recorderCallback()
103 framesToErase = pSles->bufSizeInFrames; in recorderCallback()
105 pSles->numFramesToIgnore -= framesToErase; in recorderCallback()
107 memset(buffer, 0, framesToErase * pSles->channels * sizeof(short)); in recorderCallback()
110 ssize_t actual = audio_utils_fifo_write(&(pSles->fifo), buffer, in recorderCallback()
111 (size_t) pSles->bufSizeInFrames); in recorderCallback()
112 if (actual != (ssize_t) pSles->bufSizeInFrames) { in recorderCallback()
119 if (pSles->fifo2Buffer != NULL) { in recorderCallback()
120 actual = audio_utils_fifo_write(&(pSles->fifo2), buffer, in recorderCallback()
121 (size_t) pSles->bufSizeInFrames); in recorderCallback()
122 if (actual != (ssize_t) pSles->bufSizeInFrames) { in recorderCallback()
128 result = (*(pSles->recorderBufferQueue))->Enqueue(pSles->recorderBufferQueue, buffer, in recorderCallback()
129 pSles->bufSizeInBytes); in recorderCallback()
133 SLuint32 rxRearNext = pSles->rxRear+1; in recorderCallback()
134 if (rxRearNext > pSles->rxBufCount) { in recorderCallback()
137 assert(rxRearNext != pSles->rxFront); in recorderCallback()
138 pSles->rxBuffers[pSles->rxRear] = buffer; in recorderCallback()
139 pSles->rxRear = rxRearNext; in recorderCallback()
144 pthread_mutex_unlock(&(pSles->mutex)); in recorderCallback()
152 sles_data *pSles = (sles_data*) context; in playerCallback() local
153 if (pSles != NULL) { in playerCallback()
157 pthread_mutex_lock(&(pSles->mutex)); in playerCallback()
161 assert(pSles->txFront <= pSles->txBufCount); in playerCallback()
162 assert(pSles->txRear <= pSles->txBufCount); in playerCallback()
163 assert(pSles->txFront != pSles->txRear); in playerCallback()
164 char *buffer = pSles->txBuffers[pSles->txFront]; in playerCallback()
165 if (++pSles->txFront > pSles->txBufCount) { in playerCallback()
166 pSles->txFront = 0; in playerCallback()
170 ssize_t actual = audio_utils_fifo_read(&(pSles->fifo), buffer, pSles->bufSizeInFrames); in playerCallback()
171 if (actual != (ssize_t) pSles->bufSizeInFrames) { in playerCallback()
174 memset(buffer, 0, pSles->bufSizeInFrames * pSles->channels * sizeof(short)); in playerCallback()
177 if (pSles->injectImpulse == -1) { in playerCallback()
182 for (unsigned i = 0; i < pSles->bufSizeInFrames / 8; i += 8) { in playerCallback()
184 for (unsigned k = 0; k < pSles->channels; k++) { in playerCallback()
185 ((short *)buffer)[(i+j)*pSles->channels+k] = j < 4 ? 0x7FFF : 0x8000; in playerCallback()
189 pSles->injectImpulse = 0; in playerCallback()
193 result = (*(pSles->playerBufferQueue))->Enqueue(pSles->playerBufferQueue, buffer, in playerCallback()
194 pSles->bufSizeInBytes); in playerCallback()
198 assert(pSles->txFront <= pSles->txBufCount); in playerCallback()
199 assert(pSles->txRear <= pSles->txBufCount); in playerCallback()
200 SLuint32 txRearNext = pSles->txRear+1; in playerCallback()
201 if (txRearNext > pSles->txBufCount) { in playerCallback()
204 assert(txRearNext != pSles->txFront); in playerCallback()
205 pSles->txBuffers[pSles->txRear] = buffer; in playerCallback()
206 pSles->txRear = txRearNext; in playerCallback()
210 pthread_mutex_unlock(&(pSles->mutex)); in playerCallback()
215 int slesCreateServer(sles_data *pSles, int samplingRate, int frameCount, in slesCreateServer() argument
219 if (pSles == NULL) { in slesCreateServer()
261 pSles->rxBufCount = 1; // -r# in slesCreateServer()
262 pSles->txBufCount = 1; // -t# in slesCreateServer()
263 pSles->bufSizeInFrames = frameCount;//240; // -f# in slesCreateServer()
264 pSles->channels = 1; // -c# in slesCreateServer()
265 pSles->sampleRate = samplingRate;//48000; // -s# in slesCreateServer()
266 pSles->exitAfterSeconds = 3; // -e# in slesCreateServer()
267 pSles->freeBufCount = 0; // calculated in slesCreateServer()
268 pSles->bufSizeInBytes = 0; // calculated in slesCreateServer()
269 pSles->injectImpulse = 300; // -i#i in slesCreateServer()
272 pSles->numFramesToIgnore = numFramesToIgnore; in slesCreateServer()
274 pSles->numFramesToIgnore = 0; in slesCreateServer()
293 pSles->fifo2Buffer = NULL; in slesCreateServer()
296 pSles->freeBufCount = pSles->rxBufCount + pSles->txBufCount; in slesCreateServer()
298 pSles->bufSizeInBytes = pSles->channels * pSles->bufSizeInFrames * sizeof(short); in slesCreateServer()
301 pSles->freeBuffers = (char **) calloc(pSles->freeBufCount+1, sizeof(char *)); in slesCreateServer()
303 for (j = 0; j < pSles->freeBufCount; ++j) { in slesCreateServer()
304 pSles->freeBuffers[j] = (char *) malloc(pSles->bufSizeInBytes); in slesCreateServer()
306 pSles->freeFront = 0; in slesCreateServer()
307 pSles->freeRear = pSles->freeBufCount; in slesCreateServer()
308 pSles->freeBuffers[j] = NULL; in slesCreateServer()
311 pSles->rxBuffers = (char **) calloc(pSles->rxBufCount+1, sizeof(char *)); in slesCreateServer()
312 pSles->rxFront = 0; in slesCreateServer()
313 pSles->rxRear = 0; in slesCreateServer()
316 pSles->txBuffers = (char **) calloc(pSles->txBufCount+1, sizeof(char *)); in slesCreateServer()
317 pSles->txFront = 0; in slesCreateServer()
318 pSles->txRear = 0; in slesCreateServer()
320 size_t frameSize = pSles->channels * sizeof(short); in slesCreateServer()
322 pSles->fifoBuffer = new short[FIFO_FRAMES * pSles->channels]; in slesCreateServer()
323 audio_utils_fifo_init(&(pSles->fifo), FIFO_FRAMES, frameSize, pSles->fifoBuffer); in slesCreateServer()
336 pSles->fifo2Buffer = new short[FIFO2_FRAMES * pSles->channels]; in slesCreateServer()
337 audio_utils_fifo_init(&(pSles->fifo2), FIFO2_FRAMES, frameSize, pSles->fifo2Buffer); in slesCreateServer()
348 result = slCreateEngine(&(pSles->engineObject), 0, NULL, 0, NULL, NULL); in slesCreateServer()
350 result = (*(pSles->engineObject))->Realize(pSles->engineObject, SL_BOOLEAN_FALSE); in slesCreateServer()
353 result = (*(pSles->engineObject))->GetInterface(pSles->engineObject, SL_IID_ENGINE, in slesCreateServer()
358 result = (*engineEngine)->CreateOutputMix(engineEngine, &(pSles->outputmixObject), 0, NULL, in slesCreateServer()
361 result = (*(pSles->outputmixObject))->Realize(pSles->outputmixObject, SL_BOOLEAN_FALSE); in slesCreateServer()
371 locator_bufferqueue_tx.numBuffers = pSles->txBufCount; in slesCreateServer()
373 locator_outputmix.outputMix = pSles->outputmixObject; in slesCreateServer()
375 pcm.numChannels = pSles->channels; in slesCreateServer()
376 pcm.samplesPerSec = pSles->sampleRate * 1000; in slesCreateServer()
379 pcm.channelMask = pSles->channels == 1 ? SL_SPEAKER_FRONT_CENTER : in slesCreateServer()
386 pSles->playerObject = NULL; in slesCreateServer()
387 pSles->recorderObject = NULL; in slesCreateServer()
390 result = (*engineEngine)->CreateAudioPlayer(engineEngine, &(pSles->playerObject), in slesCreateServer()
400 result = (*(pSles->playerObject))->Realize(pSles->playerObject, SL_BOOLEAN_FALSE); in slesCreateServer()
403 result = (*(pSles->playerObject))->GetInterface(pSles->playerObject, SL_IID_PLAY, in slesCreateServer()
406 result = (*(pSles->playerObject))->GetInterface(pSles->playerObject, SL_IID_BUFFERQUEUE, in slesCreateServer()
407 &(pSles->playerBufferQueue)); in slesCreateServer()
409 result = (*(pSles->playerBufferQueue))->RegisterCallback(pSles->playerBufferQueue, in slesCreateServer()
410 playerCallback, pSles); in slesCreateServer()
414 for (j = 0; j < pSles->txBufCount; ++j) { in slesCreateServer()
417 assert(pSles->freeFront != pSles->freeRear); in slesCreateServer()
418 char *buffer = pSles->freeBuffers[pSles->freeFront]; in slesCreateServer()
419 if (++pSles->freeFront > pSles->freeBufCount) { in slesCreateServer()
420 pSles->freeFront = 0; in slesCreateServer()
424 SLuint32 txRearNext = pSles->txRear + 1; in slesCreateServer()
425 if (txRearNext > pSles->txBufCount) { in slesCreateServer()
428 assert(txRearNext != pSles->txFront); in slesCreateServer()
429 pSles->txBuffers[pSles->txRear] = buffer; in slesCreateServer()
430 pSles->txRear = txRearNext; in slesCreateServer()
431 result = (*(pSles->playerBufferQueue))->Enqueue(pSles->playerBufferQueue, in slesCreateServer()
432 buffer, pSles->bufSizeInBytes); in slesCreateServer()
451 locator_bufferqueue_rx.numBuffers = pSles->rxBufCount; in slesCreateServer()
458 result = (*engineEngine)->CreateAudioRecorder(engineEngine, &(pSles->recorderObject), in slesCreateServer()
475 result = (*(pSles->recorderObject))->GetInterface(pSles->recorderObject, in slesCreateServer()
488 result = (*(pSles->recorderObject))->Realize(pSles->recorderObject, SL_BOOLEAN_FALSE); in slesCreateServer()
491 result = (*(pSles->recorderObject))->GetInterface(pSles->recorderObject, SL_IID_RECORD, in slesCreateServer()
494 result = (*(pSles->recorderObject))->GetInterface(pSles->recorderObject, in slesCreateServer()
495 SL_IID_ANDROIDSIMPLEBUFFERQUEUE, &(pSles->recorderBufferQueue)); in slesCreateServer()
497 result = (*(pSles->recorderBufferQueue))->RegisterCallback(pSles->recorderBufferQueue, in slesCreateServer()
498 recorderCallback, pSles); in slesCreateServer()
502 for (j = 0; j < pSles->rxBufCount; ++j) { in slesCreateServer()
505 assert(pSles->freeFront != pSles->freeRear); in slesCreateServer()
506 char *buffer = pSles->freeBuffers[pSles->freeFront]; in slesCreateServer()
507 if (++pSles->freeFront > pSles->freeBufCount) { in slesCreateServer()
508 pSles->freeFront = 0; in slesCreateServer()
512 SLuint32 rxRearNext = pSles->rxRear + 1; in slesCreateServer()
513 if (rxRearNext > pSles->rxBufCount) { in slesCreateServer()
516 assert(rxRearNext != pSles->rxFront); in slesCreateServer()
517 pSles->rxBuffers[pSles->rxRear] = buffer; in slesCreateServer()
518 pSles->rxRear = rxRearNext; in slesCreateServer()
519 result = (*(pSles->recorderBufferQueue))->Enqueue(pSles->recorderBufferQueue, in slesCreateServer()
520 buffer, pSles->bufSizeInBytes); in slesCreateServer()
536 int slesProcessNext(sles_data *pSles, double *pSamples, long maxSamples) { in slesProcessNext() argument
539 SLES_PRINTF("slesProcessNext: pSles = %p, currentSample: %p, maxSamples = %ld", pSles, in slesProcessNext()
548 if (pSles == NULL) { in slesProcessNext()
555 if (pSles->fifo2Buffer != NULL) { in slesProcessNext()
557 short buffer[pSles->bufSizeInFrames * pSles->channels]; in slesProcessNext()
558 ssize_t actual = audio_utils_fifo_read(&(pSles->fifo2), buffer, in slesProcessNext()
559 pSles->bufSizeInFrames); in slesProcessNext()
571 if (pSles->injectImpulse > 0) { in slesProcessNext()
572 if (pSles->injectImpulse <= 100) { in slesProcessNext()
573 pSles->injectImpulse = -1; in slesProcessNext()
576 if ((pSles->injectImpulse % 1000) < 100) { in slesProcessNext()
579 pSles->injectImpulse -= 100; in slesProcessNext()
586 result = (*(pSles->playerBufferQueue))->GetState(pSles->playerBufferQueue, in slesProcessNext()
590 result = (*(pSles->recorderBufferQueue))->GetState(pSles->recorderBufferQueue, in slesProcessNext()
594 SLES_PRINTF("End of slesProcessNext: pSles = %p, samplesRead = %d, maxSamples= %ld", pSles, in slesProcessNext()
600 int slesDestroyServer(sles_data *pSles) { in slesDestroyServer() argument
603 SLES_PRINTF("Start slesDestroyServer: pSles = %p", pSles); in slesDestroyServer()
604 if (pSles == NULL) { in slesDestroyServer()
608 if (NULL != pSles->playerObject) { in slesDestroyServer()
612 SLresult result = (*(pSles->playerObject))->GetInterface(pSles->playerObject, in slesDestroyServer()
622 if (NULL != pSles->recorderObject) { in slesDestroyServer()
625 SLresult result = (*(pSles->recorderObject))->GetInterface(pSles->recorderObject, in slesDestroyServer()
635 audio_utils_fifo_deinit(&(pSles->fifo)); in slesDestroyServer()
636 delete[] pSles->fifoBuffer; in slesDestroyServer()
641 audio_utils_fifo_deinit(&(pSles->fifo2)); in slesDestroyServer()
642 delete[] pSles->fifo2Buffer; in slesDestroyServer()
648 if (NULL != pSles->playerObject) { in slesDestroyServer()
649 (*(pSles->playerObject))->Destroy(pSles->playerObject); in slesDestroyServer()
654 if (NULL != pSles->recorderObject) { in slesDestroyServer()
655 (*(pSles->recorderObject))->Destroy(pSles->recorderObject); in slesDestroyServer()
660 (*(pSles->outputmixObject))->Destroy(pSles->outputmixObject); in slesDestroyServer()
662 (*(pSles->engineObject))->Destroy(pSles->engineObject); in slesDestroyServer()