Lines Matching refs:buffer

128 MediaTrackAudioSupplier::Read(void* buffer, int64 pos, int64 frames)
130 TRACE("Read(%p, %lld, %lld)\n", buffer, pos,
134 //printf("MediaTrackAudioSupplier::Read(%p, %lld, %lld)\n", buffer, pos, frames);
147 ReadSilence(SkipFrames(buffer, size), frames - size);
152 buffer, pos, frames);
184 printf(" skipped %lu frames (full buffer)\n", framesPerBuffer);
197 printf(" reading %lu frames (full buffer)\n", framesPerBuffer);
199 fMediaTrack->ReadFrames(buffer, &sizeToRead);
200 buffer = (uint8*)buffer + sizeToRead;
209 _ReadCachedFrames(buffer, pos, frames, time);
211 TRACE(" after reading from cache: %p, %lld, %lld\n", buffer, pos, frames);
215 _ReadUncachedFrames(buffer, pos, frames, time);
240 // Try to suggest a big buffer size, we do a lot of caching...
252 TRACE("_InitFromTrack(): buffer size: %ld\n",
299 // target buffer.
318 // target buffer. This version expects a cache buffer as source.
321 MediaTrackAudioSupplier::_CopyFrames(Buffer* buffer,
325 _CopyFrames(buffer->data, buffer->offset, target, targetOffset, position,
340 Buffer* buffer = new (nothrow) Buffer;
341 if (!buffer || !fBuffers.AddItem(buffer)) {
342 delete buffer;
347 buffer->data = data;
349 buffer->offset = 0;
350 buffer->size = 0;
351 buffer->time_stamp = 0;
363 for (int32 i = 0; Buffer* buffer = _BufferAt(i); i++)
364 delete buffer;
371 // Returns the buffer at index /index/.
380 // If any buffer starts at offset /frame/, it is returned, NULL otherwise.
384 Buffer* buffer = NULL;
386 ((buffer = _BufferAt(i))) && buffer->offset != frame;
388 return buffer;
393 // Returns the first unused buffer or NULL if all buffers are used.
397 Buffer* buffer = NULL;
398 for (int32 i = 0; ((buffer = _BufferAt(i))) && buffer->size != 0; i++)
400 return buffer;
405 // Returns either an unused buffer or, if all buffers are used, the least
406 // recently used buffer.
407 // In every case a buffer is returned.
413 // find the least recently used buffer.
415 for (int32 i = 1; Buffer* buffer = _BufferAt(i); i++) {
416 if (buffer->time_stamp < result->time_stamp)
417 result = buffer;
425 // In case there already exists a buffer that starts at position this
427 // buffer or, if all buffers are used, the least recently used buffer.
428 // In every case a buffer is returned.
432 Buffer* buffer = _FindBufferAtFrame(position);
433 if (buffer == NULL)
434 buffer = _FindUsableBuffer();
435 return buffer;
447 for (int32 i = 0; Buffer* buffer = _BufferAt(i); i++) {
448 // Calculate the intersecting interval and add the buffer if it is
450 int32 startFrame = max(position, buffer->offset);
451 int32 endFrame = min(position + frames, buffer->offset + buffer->size);
453 buffers.AddItem(buffer);
459 // Sets a buffer's time stamp to the current system time.
461 MediaTrackAudioSupplier::_TouchBuffer(Buffer* buffer)
463 buffer->time_stamp = system_time();
468 // Read a buffer from the current position (which is supplied in /position/)
469 // into /buffer/. The buffer's time stamp is set to the current system time.
471 MediaTrackAudioSupplier::_ReadBuffer(Buffer* buffer, int64 position)
473 return _ReadBuffer(buffer, position, system_time());
478 // Read a buffer from the current position (which is supplied in /position/)
479 // into /buffer/. The buffer's time stamp is set to the supplied time.
481 MediaTrackAudioSupplier::_ReadBuffer(Buffer* buffer, int64 position,
484 status_t error = fMediaTrack->ReadFrames(buffer->data, &buffer->size);
486 TRACE("_ReadBuffer(%p, %lld): %s\n", buffer->data, buffer->size,
489 buffer->offset = position;
490 buffer->time_stamp = time;
492 buffer->size = 0;
499 // buffer pointer as well as position and number of frames are adjusted
513 for (int32 i = 0; Buffer* buffer = (Buffer*)buffers.ItemAt(i); i++) {
514 if (buffer->offset <= pos && buffer->offset + buffer->size > pos) {
516 int64 size = min(frames, buffer->offset + buffer->size - pos);
517 _CopyFrames(buffer->data, buffer->offset, dest, pos, pos, size);
521 buffer->time_stamp = time;
527 Buffer* buffer = (Buffer*)buffers.ItemAt(i);
529 if (buffer->offset < pos + frames
530 && buffer->offset + buffer->size >= pos + frames) {
532 int64 size = min(frames, pos + frames - buffer->offset);
533 _CopyFrames(buffer->data, buffer->offset, dest, pos,
536 buffer->time_stamp = time;
542 /*! Reads /frames/ frames from /position/ into /buffer/. The frames are not
545 If an error occurs, the untouched part of the buffer is set to 0.
548 MediaTrackAudioSupplier::_ReadUncachedFrames(void* buffer, int64 position,
567 TRACE("_ReadUncachedFrames() - usable buffer found: %p, "
574 _CopyFrames(cacheBuffer, buffer, position, position, size);
575 buffer = SkipFrames(buffer, size);
609 // on error fill up the buffer with silence
611 ReadSilence(buffer, frames);