~ubuntu-branches/ubuntu/gutsy/audacity/gutsy-backports

« back to all changes in this revision

Viewing changes to lib-src/portaudio-v19/pablio/pablio.c

  • Committer: Bazaar Package Importer
  • Author(s): John Dong
  • Date: 2008-02-18 21:58:19 UTC
  • mfrom: (13.1.2 hardy)
  • Revision ID: james.westby@ubuntu.com-20080218215819-tmbcf1rx238r8gdv
Tags: 1.3.4-1.1ubuntu1~gutsy1
Automated backport upload; no source changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * $Id: pablio.c,v 1.4 2006/09/23 18:42:46 llucius Exp $
 
2
 * $Id: pablio.c,v 1.7 2007/08/16 20:45:34 richardash1981 Exp $
3
3
 * pablio.c
4
4
 * Portable Audio Blocking Input/Output utility.
5
5
 *
44
44
#include <stdlib.h>
45
45
#include <math.h>
46
46
#include "portaudio.h"
47
 
#include "ringbuffer.h"
 
47
#include "pa_ringbuffer.h"
48
48
#include "pablio.h"
49
49
#include <string.h>
50
50
 
82
82
    /* This may get called with NULL inputBuffer during initial setup. */
83
83
    if( inputBuffer != NULL )
84
84
    {
85
 
        RingBuffer_Write( &data->inFIFO, inputBuffer, numBytes );
 
85
        PaUtil_WriteRingBuffer( &data->inFIFO, inputBuffer, numBytes );
86
86
    }
87
87
    if( outputBuffer != NULL )
88
88
    {
89
89
        int i;
90
 
        int numRead = RingBuffer_Read( &data->outFIFO, outputBuffer, numBytes );
 
90
        int numRead = PaUtil_ReadRingBuffer( &data->outFIFO, outputBuffer, numBytes );
91
91
        /* Zero out remainder of buffer if we run out of data. */
92
92
        for( i=numRead; i<numBytes; i++ )
93
93
        {
105
105
    char *buffer = (char *) malloc( numBytes );
106
106
    if( buffer == NULL ) return paInsufficientMemory;
107
107
    memset( buffer, 0, numBytes );
108
 
    return (PaError) RingBuffer_Init( rbuf, numBytes, buffer );
 
108
    return (PaError) PaUtil_InitializeRingBuffer( rbuf, numBytes, buffer );
109
109
}
110
110
 
111
111
/* Free buffer. */
127
127
    long numBytes = aStream->bytesPerFrame * numFrames;
128
128
    while( numBytes > 0)
129
129
    {
130
 
        bytesWritten = RingBuffer_Write( &aStream->outFIFO, p, numBytes );
 
130
        bytesWritten = PaUtil_WriteRingBuffer( &aStream->outFIFO, p, numBytes );
131
131
        numBytes -= bytesWritten;
132
132
        p += bytesWritten;
133
133
        if( numBytes > 0) Pa_Sleep(10);
146
146
    long numBytes = aStream->bytesPerFrame * numFrames;
147
147
    while( numBytes > 0)
148
148
    {
149
 
        bytesRead = RingBuffer_Read( &aStream->inFIFO, p, numBytes );
 
149
        bytesRead = PaUtil_ReadRingBuffer( &aStream->inFIFO, p, numBytes );
150
150
        numBytes -= bytesRead;
151
151
        p += bytesRead;
152
152
        if( numBytes > 0) Pa_Sleep(10);
160
160
 */
161
161
long GetAudioStreamWriteable( PABLIO_Stream *aStream )
162
162
{
163
 
    int bytesEmpty = RingBuffer_GetWriteAvailable( &aStream->outFIFO );
 
163
    int bytesEmpty = PaUtil_GetRingBufferWriteAvailable( &aStream->outFIFO );
164
164
    return bytesEmpty / aStream->bytesPerFrame;
165
165
}
166
166
 
170
170
 */
171
171
long GetAudioStreamReadable( PABLIO_Stream *aStream )
172
172
{
173
 
    int bytesFull = RingBuffer_GetReadAvailable( &aStream->inFIFO );
 
173
    int bytesFull = PaUtil_GetRingBufferReadAvailable( &aStream->inFIFO );
174
174
    return bytesFull / aStream->bytesPerFrame;
175
175
}
176
176
 
246
246
        err = PABLIO_InitFIFO( &aStream->outFIFO, numFrames, aStream->bytesPerFrame );
247
247
        if( err != paNoError ) goto error;
248
248
        /* Make Write FIFO appear full initially. */
249
 
        numBytes = RingBuffer_GetWriteAvailable( &aStream->outFIFO );
250
 
        RingBuffer_AdvanceWriteIndex( &aStream->outFIFO, numBytes );
 
249
        numBytes = PaUtil_GetRingBufferWriteAvailable( &aStream->outFIFO );
 
250
        PaUtil_AdvanceRingBufferWriteIndex( &aStream->outFIFO, numBytes );
251
251
    }
252
252
 
253
253
    /* Open a PortAudio stream that we will use to communicate with the underlying
292
292
    /* If we are writing data, make sure we play everything written. */
293
293
    if( byteSize > 0 )
294
294
    {
295
 
        bytesEmpty = RingBuffer_GetWriteAvailable( &aStream->outFIFO );
 
295
        bytesEmpty = PaUtil_GetRingBufferWriteAvailable( &aStream->outFIFO );
296
296
        while( bytesEmpty < byteSize )
297
297
        {
298
298
            Pa_Sleep( 10 );
299
 
            bytesEmpty = RingBuffer_GetWriteAvailable( &aStream->outFIFO );
 
299
            bytesEmpty = PaUtil_GetRingBufferWriteAvailable( &aStream->outFIFO );
300
300
        }
301
301
    }
302
302