Logo Search packages:      
Sourcecode: pulseaudio version File versions

int pa_stream_peek ( pa_stream p,
const void **  data,
size_t *  nbytes 
)

Read the next fragment from the buffer (for recording streams). data will point to the actual data and nbytes will contain the size of the data in bytes (which can be less or more than a complete fragment). Use pa_stream_drop() to actually remove the data from the buffer. If no data is available this will return a NULL pointer

Parameters:
p  The stream to use
data  Pointer to pointer that will point to data
nbytes  The length of the data read in bytes

Definition at line 1376 of file stream.c.

References PA_ERR_BADSTATE, PA_ERR_FORKED, PA_STREAM_READY, and PA_STREAM_RECORD.

                                                                    {
    pa_assert(s);
    pa_assert(PA_REFCNT_VALUE(s) >= 1);
    pa_assert(data);
    pa_assert(length);

    PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
    PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
    PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_RECORD, PA_ERR_BADSTATE);

    if (!s->peek_memchunk.memblock) {

        if (pa_memblockq_peek(s->record_memblockq, &s->peek_memchunk) < 0) {
            *data = NULL;
            *length = 0;
            return 0;
        }

        s->peek_data = pa_memblock_acquire(s->peek_memchunk.memblock);
    }

    pa_assert(s->peek_data);
    *data = (uint8_t*) s->peek_data + s->peek_memchunk.index;
    *length = s->peek_memchunk.length;
    return 0;
}


Generated by  Doxygen 1.6.0   Back to index