void CAAudioFileReader::ReadBuffer(FileReadBuffer *b) { b->SetEmpty(); CABufferList *ioMemory = b->GetBufferList(); CABufferList *fileBuffers = GetBufferList(); fileBuffers->SetFrom(ioMemory); UInt32 nFrames = GetBufferSizeFrames(); SInt64 curFrame = mFile->Tell(); mFile->Read(nFrames, &fileBuffers->GetModifiableBufferList()); b->UpdateAfterRead(curFrame, nFrames); }
void CAAudioFileRecorder::SetFile(const FSRef &parentFSRef, CFStringRef filename, AudioFileTypeID filetype, const CAStreamBasicDescription &dataFormat, const CAAudioChannelLayout *layout) { delete mAudioInputPtrs; mAudioInputPtrs = NULL; CAStreamBasicDescription fileDataFormat = dataFormat; if (fileDataFormat.mSampleRate == 0.) fileDataFormat.mSampleRate = mInputDataFormat.mSampleRate; CAAudioFileWriter::SetFile(parentFSRef, filename, filetype, fileDataFormat, layout); const CAStreamBasicDescription &fmt = GetFile().GetClientDataFormat(); XThrowIfError(AudioUnitSetProperty( mInputUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, (void *)&fmt, sizeof(AudioStreamBasicDescription)), "set audio input format"); GetFile().SetIOBufferSizeBytes(GetBufferSizeFrames() * fmt.mBytesPerFrame); mAudioInputPtrs = CABufferList::New("audio input ptrs", fmt); }