GST_BOILERPLATE_FULL (GstOpenSLESRingBuffer, gst_opensles_ringbuffer,
GstRingBuffer, GST_TYPE_RING_BUFFER, _do_init);
+#define PLAYER_QUEUE_SIZE 2
+#define RECORDER_QUEUE_SIZE 2
+
/* Some generic helper functions */
static inline SLuint32
/* Configure audio sink */
SLDataLocator_AndroidSimpleBufferQueue loc_bq = {
- SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2
+ SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, RECORDER_QUEUE_SIZE
};
SLDataSink audioSink = { &loc_bq, &format };
{
GstOpenSLESRingBuffer *thiz = GST_OPENSLES_RING_BUFFER_CAST (rb);
SLresult result;
+ gint i;
/* in case already recording, stop recording and clear buffer queue */
result =
return FALSE;
}
- _opensles_enqueue_cb (NULL, rb);
- _opensles_enqueue_cb (NULL, rb);
+ /* Fill the queue by enqueing buffers */
+ for (i = 0; i < RECORDER_QUEUE_SIZE; i++) {
+ _opensles_enqueue_cb (NULL, rb);
+ }
/* start recording */
result =
/* Configure audio source */
SLDataLocator_AndroidSimpleBufferQueue loc_bufq = {
- SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2
+ SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, PLAYER_QUEUE_SIZE
};
SLDataSource audioSrc = { &loc_bufq, &format };
_opensles_player_change_mute (rb);
/* Define our ringbuffer in terms of number of buffers and buffer size. */
- spec->segsize = (spec->rate * spec->bytes_per_sample) >> 2;
- spec->segtotal = 16;
+ spec->segsize = (spec->rate >> 4) * spec->bytes_per_sample;
+ spec->segtotal = 2 << 4;
return TRUE;
{
GstOpenSLESRingBuffer *thiz = GST_OPENSLES_RING_BUFFER_CAST (rb);
SLresult result;
+ gint i;
+
+ /* Fill the queue by enqueing buffers */
+ for (i = 0; i < PLAYER_QUEUE_SIZE; i++) {
+ _opensles_enqueue_cb (NULL, rb);
+ }
result =
(*thiz->playerPlay)->SetPlayState (thiz->playerPlay,
return FALSE;
}
- /* Fill the queue by enqueing two buffers */
- _opensles_enqueue_cb (NULL, rb);
- _opensles_enqueue_cb (NULL, rb);
return TRUE;
}