示例#1
0
    void play() {
        
        OSStatus status;
        
        aqData.mIsRunning = true;                          // 1
        aqData.mCurrentPacket = 0;                                // 1

        primeBuffer();
        
        Float32 gain = 1.0;                                       // 1
            // Optionally, allow user to override gain setting here
        status = AudioQueueSetParameter (                                  // 2
            aqData.mQueue,                                        // 3
            kAudioQueueParam_Volume,                              // 4
            gain                                                  // 5
        );
        checkStatus(status);

        status = AudioQueueStart (                                  // 2
            aqData.mQueue,                                 // 3
            NULL                                           // 4
        );
        checkStatus(status);

    }
示例#2
0
 void seekToPacket(uint64_t packet) {
     AudioQueueStop(aqData.mQueue, true);
     aqData.mCurrentPacket = rand()%1000;
     primeBuffer();
     AudioQueueStart(aqData.mQueue, NULL);
     
 }
示例#3
0
文件: au.c 项目: brezniczky/audio
static OSStatus outputRenderProc(void *inRefCon, AudioUnitRenderActionFlags *inActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumFrames, AudioBufferList *ioData)
{
	au_instance_t *p = (au_instance_t*) inRefCon;
	/* printf("outputRenderProc, (bufs=%d, buf[0].chs=%d), buf=%p, size=%d\n", ioData->mNumberBuffers, ioData->mBuffers[0].mNumberChannels, ioData->mBuffers[0].mData, ioData->mBuffers[0].mDataByteSize); */
	int res = primeBuffer(p, ioData->mBuffers[0].mData, ioData->mBuffers[0].mDataByteSize / (p->stereo ? 4 : 2));
	/* printf(" - primed: %d samples (%d bytes)\n", res, res * (p->stereo ? 4 : 2)); */
	if (res < 0) res = 0;
	ioData->mBuffers[0].mDataByteSize = res * (p->stereo ? 4 : 2);
	if (res == 0) {
		/* printf(" - no input, stopping unit\n"); */
		AudioOutputUnitStop(p->outUnit);
	}
	return noErr;
}