Example #1
0
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);
}