Ejemplo n.º 1
0
OSErr
open_network_speaker() {
    // Allocate storage for noise data - assume if pointer not NULL, already have storage.
    if(sNoiseBufferStorage == NULL) {
        assert(kNoiseBufferSize % 2 == 0);
        uint16* theBuffer = new uint16[kNoiseBufferSize / 2];

        // Fill in noise data (use whole width of local_random())
        for(int i = 0; i < kNoiseBufferSize / 2; i++)
            theBuffer[i] = local_random() / 4;

        sNoiseBufferStorage = (byte*) theBuffer;
    }

    // Fill out the noise-buffer descriptor
    sNoiseBufferDesc.mData      = sNoiseBufferStorage;
    sNoiseBufferDesc.mLength    = kNoiseBufferSize;
    sNoiseBufferDesc.mFlags     = 0;

    // Reset the buffer descriptor queue
    sSoundBuffers.reset();
    
    // Reset the data buffer queue
    sSoundDataBuffers.reset();
    
    // Allocate storage for audio data buffers
    for(int i = 0; i < kNumSoundDataBuffers; i++) {
        byte* theBuffer = new byte[kSoundDataBufferSize];
        sSoundDataBuffers.enqueue(theBuffer);
    }

    // Reset a couple others to sane values
    sDryDequeues    = 0;
    sSpeakerIsOn    = false;
    
#ifdef SPEEX
        init_speex_decoder();
#endif
    
    return 0;
}