status_t BBufferGroup::AddBuffersTo(BMessage* message, const char* name, bool needLock) { CALLED(); if (fInitError != B_OK) return B_NO_INIT; // BeOS R4 legacy API. Implemented as a wrapper around GetBufferList // "needLock" is ignored, GetBufferList will do locking if (message == NULL) return B_BAD_VALUE; if (name == NULL || strlen(name) == 0) return B_BAD_VALUE; BBuffer* buffers[fBufferCount]; status_t status = GetBufferList(fBufferCount, buffers); if (status != B_OK) return status; for (int32 i = 0; i < fBufferCount; i++) { status = message->AddInt32(name, int32(buffers[i]->ID())); if (status != B_OK) return status; } return B_OK; }
void CAAudioFileWriter::WriteBuffer(CABufferQueue::Buffer *b) { CABufferList *ioMemory = b->GetBufferList(); CABufferList *fileBuffers = GetBufferList(); UInt32 nFrames = b->FrameCount(); fileBuffers->SetFrom(ioMemory, GetBytesPerFrame() * nFrames); mFile->Write(nFrames, &fileBuffers->GetModifiableBufferList()); b->SetEmpty(); }
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); }