Blender V2.61 - r43446
Public Member Functions | Static Public Member Functions

AUD_FFMPEGReader Class Reference

#include <AUD_FFMPEGReader.h>

Inheritance diagram for AUD_FFMPEGReader:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 AUD_FFMPEGReader (std::string filename)
 AUD_FFMPEGReader (AUD_Reference< AUD_Buffer > buffer)
virtual ~AUD_FFMPEGReader ()
virtual bool isSeekable () const
virtual void seek (int position)
virtual int getLength () const
virtual int getPosition () const
virtual AUD_Specs getSpecs () const
virtual void read (int &length, bool &eos, sample_t *buffer)

Static Public Member Functions

static int read_packet (void *opaque, uint8_t *buf, int buf_size)
static int64_t seek_packet (void *opaque, int64_t offset, int whence)

Detailed Description

This class reads a sound file via ffmpeg.

Warning:
Seeking may not be accurate! Moreover the position is updated after a buffer reading call. So calling getPosition right after seek normally results in a wrong value.

Definition at line 51 of file AUD_FFMPEGReader.h.


Constructor & Destructor Documentation

AUD_FFMPEGReader::AUD_FFMPEGReader ( std::string  filename)

Creates a new reader.

Parameters:
filenameThe path to the file to be read.
Exceptions:
AUD_ExceptionThrown if the file specified does not exist or cannot be read with ffmpeg.

Definition at line 176 of file AUD_FFMPEGReader.cpp.

References AUD_ERROR_FILE, AUD_THROW, and NULL.

AUD_FFMPEGReader::AUD_FFMPEGReader ( AUD_Reference< AUD_Buffer buffer)

Creates a new reader.

Parameters:
bufferThe buffer to read from.
Exceptions:
AUD_ExceptionThrown if the buffer specified cannot be read with ffmpeg.

Definition at line 200 of file AUD_FFMPEGReader.cpp.

References AUD_ERROR_FILE, AUD_THROW, NULL, read_packet(), and seek_packet().

AUD_FFMPEGReader::~AUD_FFMPEGReader ( ) [virtual]

Destroys the reader and closes the file.

Definition at line 236 of file AUD_FFMPEGReader.cpp.


Member Function Documentation

int AUD_FFMPEGReader::getLength ( ) const [virtual]

Returns an approximated length of the source in samples.

Returns:
The length as sample count. May be negative if unknown.

Implements AUD_IReader.

Definition at line 363 of file AUD_FFMPEGReader.cpp.

int AUD_FFMPEGReader::getPosition ( ) const [virtual]

Returns the position of the source as a sample count value.

Returns:
The current position in the source. A negative value indicates that the position is unknown.
Warning:
The value returned doesn't always have to be correct for readers, especially after seeking.

Implements AUD_IReader.

Definition at line 370 of file AUD_FFMPEGReader.cpp.

AUD_Specs AUD_FFMPEGReader::getSpecs ( ) const [virtual]

Returns the specification of the reader.

Returns:
The AUD_Specs structure.

Implements AUD_IReader.

Definition at line 375 of file AUD_FFMPEGReader.cpp.

References AUD_DeviceSpecs::specs.

bool AUD_FFMPEGReader::isSeekable ( ) const [virtual]

Tells whether the source provides seeking functionality or not.

Warning:
This doesn't mean that the seeking always has to succeed.
Returns:
Always returns true for readers of buffering types.

Implements AUD_IReader.

Definition at line 283 of file AUD_FFMPEGReader.cpp.

void AUD_FFMPEGReader::read ( int &  length,
bool &  eos,
sample_t buffer 
) [virtual]

Request to read the next length samples out of the source. The buffer supplied has the needed size.

Parameters:
[in,out]lengthThe count of samples that should be read. Shall contain the real count of samples after reading, in case there were only fewer samples available. A smaller value also indicates the end of the reader.
[out]eosEnd of stream, whether the end is reached or not.
[in]bufferThe pointer to the buffer to read into.

Implements AUD_IReader.

Definition at line 380 of file AUD_FFMPEGReader.cpp.

References AUD_DEVICE_SAMPLE_SIZE, AUD_FORMAT_SIZE, AUD_MIN, AUD_DeviceSpecs::format, AUD_Buffer::getBuffer(), left(), and length().

Referenced by seek().

int AUD_FFMPEGReader::read_packet ( void *  opaque,
uint8_t *  buf,
int  buf_size 
) [static]

Definition at line 249 of file AUD_FFMPEGReader.cpp.

References AUD_MIN, and size().

Referenced by AUD_FFMPEGReader().

void AUD_FFMPEGReader::seek ( int  position) [virtual]

Seeks to a specific position in the source.

Parameters:
positionThe position to seek for measured in samples. To get from a given time to the samples you simply have to multiply the time value in seconds with the sample rate of the reader.
Warning:
This may work or not, depending on the actual reader.

Implements AUD_IReader.

Definition at line 288 of file AUD_FFMPEGReader.cpp.

References AUD_DEFAULT_BUFFER_SIZE, AUD_SAMPLE_SIZE, AUD_Buffer::getBuffer(), len(), length(), AUD_DeviceSpecs::rate, and read().

int64_t AUD_FFMPEGReader::seek_packet ( void *  opaque,
int64_t  offset,
int  whence 
) [static]

Definition at line 264 of file AUD_FFMPEGReader.cpp.

Referenced by AUD_FFMPEGReader().


The documentation for this class was generated from the following files: