static AudioDeviceID outputDeviceID;
static AudioStreamBasicDescription outputStreamBasicDescription;
static AudioDeviceID outputDeviceID;
static AudioStreamBasicDescription outputStreamBasicDescription;
// If we have run out of samples, return silence
if (s_chunkCount * submissionChunk > shm->format.channels * paintedtime)
{
// If we have run out of samples, return silence
if (s_chunkCount * submissionChunk > shm->format.channels * paintedtime)
{
if (outputDeviceID == kAudioDeviceUnknown)
{
Con_Printf("AudioHardwareGetProperty: outputDeviceID is kAudioDeviceUnknown\n");
return false;
}
if (outputDeviceID == kAudioDeviceUnknown)
{
Con_Printf("AudioHardwareGetProperty: outputDeviceID is kAudioDeviceUnknown\n");
return false;
}
// TODO: support "-sndspeed", "-sndmono" and "-sndstereo"
propertySize = sizeof(bufferByteCount);
bufferByteCount = CHUNK_SIZE * sizeof(float);
// TODO: support "-sndspeed", "-sndmono" and "-sndstereo"
propertySize = sizeof(bufferByteCount);
bufferByteCount = CHUNK_SIZE * sizeof(float);
Con_Printf("AudioDeviceSetProperty: returned %d when setting kAudioDevicePropertyBufferSize to %d\n", status, CHUNK_SIZE);
return false;
}
Con_Printf("AudioDeviceSetProperty: returned %d when setting kAudioDevicePropertyBufferSize to %d\n", status, CHUNK_SIZE);
return false;
}
propertySize = sizeof(bufferByteCount);
status = AudioDeviceGetProperty(outputDeviceID, 0, false, kAudioDevicePropertyBufferSize, &propertySize, &bufferByteCount);
if (status)
propertySize = sizeof(bufferByteCount);
status = AudioDeviceGetProperty(outputDeviceID, 0, false, kAudioDevicePropertyBufferSize, &propertySize, &bufferByteCount);
if (status)
- Con_DPrintf(" %5d mSampleRate\n", (unsigned int)outputStreamBasicDescription.mSampleRate);
- Con_DPrintf(" %c%c%c%c mFormatID\n",
+ Con_DPrintf(" %5d mSampleRate\n", (unsigned int)outputStreamBasicDescription.mSampleRate);
+ Con_DPrintf(" %c%c%c%c mFormatID\n",
(outputStreamBasicDescription.mFormatID & 0xff000000) >> 24,
(outputStreamBasicDescription.mFormatID & 0x00ff0000) >> 16,
(outputStreamBasicDescription.mFormatID & 0x0000ff00) >> 8,
(outputStreamBasicDescription.mFormatID & 0x000000ff) >> 0);
(outputStreamBasicDescription.mFormatID & 0xff000000) >> 24,
(outputStreamBasicDescription.mFormatID & 0x00ff0000) >> 16,
(outputStreamBasicDescription.mFormatID & 0x0000ff00) >> 8,
(outputStreamBasicDescription.mFormatID & 0x000000ff) >> 0);
- Con_DPrintf(" %5d mBytesPerPacket\n", outputStreamBasicDescription.mBytesPerPacket);
- Con_DPrintf(" %5d mFramesPerPacket\n", outputStreamBasicDescription.mFramesPerPacket);
- Con_DPrintf(" %5d mBytesPerFrame\n", outputStreamBasicDescription.mBytesPerFrame);
- Con_DPrintf(" %5d mChannelsPerFrame\n", outputStreamBasicDescription.mChannelsPerFrame);
- Con_DPrintf(" %5d mBitsPerChannel\n", outputStreamBasicDescription.mBitsPerChannel);
+ Con_DPrintf(" %5d mBytesPerPacket\n", outputStreamBasicDescription.mBytesPerPacket);
+ Con_DPrintf(" %5d mFramesPerPacket\n", outputStreamBasicDescription.mFramesPerPacket);
+ Con_DPrintf(" %5d mBytesPerFrame\n", outputStreamBasicDescription.mBytesPerFrame);
+ Con_DPrintf(" %5d mChannelsPerFrame\n", outputStreamBasicDescription.mChannelsPerFrame);
+ Con_DPrintf(" %5d mBitsPerChannel\n", outputStreamBasicDescription.mBitsPerChannel);
if(outputStreamBasicDescription.mFormatID != kAudioFormatLinearPCM)
{
Con_Printf("Default Audio Device doesn't support Linear PCM!\n");
return false;
}
if(outputStreamBasicDescription.mFormatID != kAudioFormatLinearPCM)
{
Con_Printf("Default Audio Device doesn't support Linear PCM!\n");
return false;
}
Con_DPrintf(" Buffer size = %d samples (%d chunks)\n",
maxMixedSamples, (maxMixedSamples / submissionChunk));
Con_DPrintf(" Buffer size = %d samples (%d chunks)\n",
maxMixedSamples, (maxMixedSamples / submissionChunk));
shm->format.speed = outputStreamBasicDescription.mSampleRate;
shm->format.channels = outputStreamBasicDescription.mChannelsPerFrame;
shm->format.width = 2;
shm->format.speed = outputStreamBasicDescription.mSampleRate;
shm->format.channels = outputStreamBasicDescription.mChannelsPerFrame;
shm->format.width = 2;
status = AudioDeviceStop(outputDeviceID, audioDeviceIOProc);
if (status)
{
Con_Printf("AudioDeviceStop: returned %d\n", status);
return;
}
status = AudioDeviceStop(outputDeviceID, audioDeviceIOProc);
if (status)
{
Con_Printf("AudioDeviceStop: returned %d\n", status);
return;
}
status = AudioDeviceRemoveIOProc(outputDeviceID, audioDeviceIOProc);
if (status)
{
Con_Printf("AudioDeviceRemoveIOProc: returned %d\n", status);
return;
}
status = AudioDeviceRemoveIOProc(outputDeviceID, audioDeviceIOProc);
if (status)
{
Con_Printf("AudioDeviceRemoveIOProc: returned %d\n", status);
return;
}