OggDataBuffer Class Reference

#include <OggDataBuffer.h>

Collaboration diagram for OggDataBuffer:

Collaboration graph
[legend]
List of all members.

Public Types

enum  eState {
  EOS, AWAITING_BASE_HEADER = 32, AWAITING_SEG_TABLE, AWAITING_DATA,
  LOST_PAGE_SYNC
}
enum  eFeedResult { FEED_OK, FEED_NULL_POINTER = 64, FEED_BUFFER_WRITE_ERROR }
enum  eDispatchResult { DISPATCH_OK, DISPATCH_NO_CALLBACK = 256, DISPATCH_FALSE }
enum  eProcessResult {
  PROCESS_OK, PROCESS_UNKNOWN_INTERNAL_ERROR = 512, PROCESS_STREAM_READ_ERROR, PROCESS_DISPATCH_FALSE,
  PROCESS_DISPATCH_FAILED, PROCESS_FAILED_TO_SET_HEADER, PROCESS_LOST_SYNC = 4096
}

Public Member Functions

void debugWrite (string inString)
 OggDataBuffer (void)
virtual ~OggDataBuffer (void)
bool registerStaticCallback (fPageCallback inPageCallback, void *inUserData)
 Register as a callback, which gets called when data is received via our feed() method.
bool registerVirtualCallback (IOggCallback *inPageCallback)
 Register an IOggCallback object, which gets called when data is received via our feed() method.
eFeedResult feed (const unsigned char *inData, unsigned long inNumBytes)
 Puts in data into this buffer, which triggers the callback registered with registerStaticCallback() or registerVirtualCallback().
void clearData ()
unsigned long numBytesAvail ()
 Returns the number of bytes available for processing in the buffer.
eState state ()
 Returns the current demux state.

Static Public Attributes

const int MAX_OGG_PAGE_SIZE

Protected Member Functions

eProcessResult processBuffer ()
eProcessResult processBaseHeader ()
eProcessResult processSegTable ()
eProcessResult processDataSegment ()
virtual eDispatchResult dispatch (OggPage *inOggPage)

Protected Attributes

IFIFOBuffermBuffer
unsigned long mNumBytesNeeded
eState mState
OggPagependingPage
LOOG_INT64 mPrevGranPos
IOggCallbackmVirtualCallback
fPageCallback mStaticCallback
void * mStaticCallbackUserData

Private Member Functions

OggDataBufferoperator= (const OggDataBuffer &other)
 OggDataBuffer (const OggDataBuffer &other)

Member Enumeration Documentation

enum OggDataBuffer::eDispatchResult
 

Enumeration values:
DISPATCH_OK 
DISPATCH_NO_CALLBACK 
DISPATCH_FALSE 

Definition at line 62 of file OggDataBuffer.h.

Referenced by dispatch(), and processDataSegment().

enum OggDataBuffer::eFeedResult
 

Enumeration values:
FEED_OK 
FEED_NULL_POINTER 
FEED_BUFFER_WRITE_ERROR 

Definition at line 56 of file OggDataBuffer.h.

Referenced by feed().

enum OggDataBuffer::eProcessResult
 

Enumeration values:
PROCESS_OK 
PROCESS_UNKNOWN_INTERNAL_ERROR 
PROCESS_STREAM_READ_ERROR 
PROCESS_DISPATCH_FALSE 
PROCESS_DISPATCH_FAILED 
PROCESS_FAILED_TO_SET_HEADER 
PROCESS_LOST_SYNC 

Definition at line 68 of file OggDataBuffer.h.

Referenced by processBaseHeader(), processBuffer(), processDataSegment(), and processSegTable().

enum OggDataBuffer::eState
 

Enumeration values:
EOS 
AWAITING_BASE_HEADER 
AWAITING_SEG_TABLE 
AWAITING_DATA 
LOST_PAGE_SYNC 

Definition at line 48 of file OggDataBuffer.h.

Referenced by state().


Constructor & Destructor Documentation

OggDataBuffer::OggDataBuffer void   ) 
 

Definition at line 38 of file OggDataBuffer.cpp.

References MAX_OGG_PAGE_SIZE, and mBuffer.

OggDataBuffer::~OggDataBuffer void   )  [virtual]
 

Definition at line 63 of file OggDataBuffer.cpp.

OggDataBuffer::OggDataBuffer const OggDataBuffer other  )  [private]
 


Member Function Documentation

void OggDataBuffer::clearData  ) 
 

Definition at line 394 of file OggDataBuffer.cpp.

References mBuffer, mNumBytesNeeded, mPrevGranPos, mState, and IFIFOBuffer::reset().

Referenced by OggDemuxSourceFilter::resetStream(), and OggDemuxSourceFilter::SetUpPins().

Here is the call graph for this function:

void OggDataBuffer::debugWrite string  inString  ) 
 

Definition at line 486 of file OggDataBuffer.cpp.

OggDataBuffer::eDispatchResult OggDataBuffer::dispatch OggPage inOggPage  )  [protected, virtual]
 

Definition at line 128 of file OggDataBuffer.cpp.

References IOggCallback::acceptOggPage(), eDispatchResult, mStaticCallback, mStaticCallbackUserData, mVirtualCallback, and pendingPage.

Referenced by processDataSegment().

Here is the call graph for this function:

OggDataBuffer::eFeedResult OggDataBuffer::feed const unsigned char *  inData,
unsigned long  inNumBytes
 

Puts in data into this buffer, which triggers the callback registered with registerStaticCallback() or registerVirtualCallback().

Definition at line 155 of file OggDataBuffer.cpp.

References eFeedResult, mBuffer, processBuffer(), and IFIFOBuffer::write().

Referenced by AutoOggSeekTable::buildTable(), OggDemuxSourceFilter::DataProcessLoop(), FileComments::loadFile(), main(), AnnodexRecomposer::recomposeStreamFrom(), and OggDemuxSourceFilter::SetUpPins().

Here is the call graph for this function:

unsigned long OggDataBuffer::numBytesAvail  ) 
 

Returns the number of bytes available for processing in the buffer.

Definition at line 115 of file OggDataBuffer.cpp.

References mBuffer, and IFIFOBuffer::numBytesAvail().

Referenced by processBuffer().

Here is the call graph for this function:

OggDataBuffer& OggDataBuffer::operator= const OggDataBuffer other  )  [private]
 

OggDataBuffer::eProcessResult OggDataBuffer::processBaseHeader  )  [protected]
 

Definition at line 190 of file OggDataBuffer.cpp.

References eProcessResult, OggPage::header(), mBuffer, mNumBytesNeeded, mState, OggPageHeader::NumPageSegments(), pendingPage, IFIFOBuffer::read(), and OggPageHeader::setBaseHeader().

Referenced by processBuffer().

Here is the call graph for this function:

OggDataBuffer::eProcessResult OggDataBuffer::processBuffer  )  [protected]
 

Definition at line 406 of file OggDataBuffer.cpp.

References AWAITING_BASE_HEADER, AWAITING_DATA, AWAITING_SEG_TABLE, OggPageHeader::dataSize(), eProcessResult, OggPage::header(), LOST_PAGE_SYNC, mState, numBytesAvail(), OggPageHeader::NumPageSegments(), pendingPage, processBaseHeader(), processDataSegment(), and processSegTable().

Referenced by feed().

Here is the call graph for this function:

OggDataBuffer::eProcessResult OggDataBuffer::processDataSegment  )  [protected]
 

Definition at line 284 of file OggDataBuffer.cpp.

References OggPage::addPacket(), dispatch(), eDispatchResult, eProcessResult, OggPageHeader::GranulePos(), OggPage::header(), OggPageHeader::HeaderFlags(), LOOG_INT64, mBuffer, mNumBytesNeeded, mPrevGranPos, mState, OggPageHeader::NumPageSegments(), pendingPage, IFIFOBuffer::read(), and OggPageHeader::SegmentTable().

Referenced by processBuffer().

Here is the call graph for this function:

OggDataBuffer::eProcessResult OggDataBuffer::processSegTable  )  [protected]
 

Definition at line 233 of file OggDataBuffer.cpp.

References OggPageHeader::calculateDataSize(), eProcessResult, OggPage::header(), mBuffer, mNumBytesNeeded, mState, OggPageHeader::NumPageSegments(), pendingPage, IFIFOBuffer::read(), and OggPageHeader::setSegmentTable().

Referenced by processBuffer().

Here is the call graph for this function:

bool OggDataBuffer::registerStaticCallback fPageCallback  inPageCallback,
void *  inUserData
 

Register as a callback, which gets called when data is received via our feed() method.

The inUserData parameter is a pointer of any type. This pointer is passed to the callback when it is called, enabling the user to save any custom information in its callback. Note that your callback function is responsible for deleting the OggPage passed to it (and NULL the OggPage pointer after deletion): see IOggCallback::acceptOggPage() for more information.

Definition at line 80 of file OggDataBuffer.cpp.

References fPageCallback, mStaticCallback, mStaticCallbackUserData, and mVirtualCallback.

Referenced by main().

bool OggDataBuffer::registerVirtualCallback IOggCallback inPageCallback  ) 
 

Register an IOggCallback object, which gets called when data is received via our feed() method.

Note that your callback function is responsible for deleting the OggPage passed to it (and NULL the OggPage pointer after deletion): see the IOggCallback class for more information.

Definition at line 105 of file OggDataBuffer.cpp.

References mStaticCallback, and mVirtualCallback.

Referenced by AutoOggSeekTable::AutoOggSeekTable(), FileComments::loadFile(), main(), AnnodexRecomposer::recomposeStreamFrom(), and OggDemuxSourceFilter::SetUpPins().

OggDataBuffer::eState OggDataBuffer::state  ) 
 

Returns the current demux state.

Definition at line 123 of file OggDataBuffer.cpp.

References eState.


Member Data Documentation

const int OggDataBuffer::MAX_OGG_PAGE_SIZE [static]
 

Initial value:

        OggPageHeader::OGG_BASE_HEADER_SIZE +                                                                                   
                                                                                        (OggPageHeader::MAX_NUM_SEGMENTS * OggPageHeader::MAX_SEGMENT_SIZE) +           
                                                                                        (OggPageHeader::SEGMENT_WIDTH * OggPageHeader::MAX_NUM_SEGMENTS)

Definition at line 79 of file OggDataBuffer.h.

Referenced by OggDataBuffer().

IFIFOBuffer* OggDataBuffer::mBuffer [protected]
 

Definition at line 110 of file OggDataBuffer.h.

Referenced by clearData(), feed(), numBytesAvail(), OggDataBuffer(), processBaseHeader(), processDataSegment(), and processSegTable().

unsigned long OggDataBuffer::mNumBytesNeeded [protected]
 

Definition at line 113 of file OggDataBuffer.h.

Referenced by clearData(), processBaseHeader(), processDataSegment(), and processSegTable().

LOOG_INT64 OggDataBuffer::mPrevGranPos [protected]
 

Definition at line 116 of file OggDataBuffer.h.

Referenced by clearData(), and processDataSegment().

eState OggDataBuffer::mState [protected]
 

Definition at line 114 of file OggDataBuffer.h.

Referenced by clearData(), processBaseHeader(), processBuffer(), processDataSegment(), and processSegTable().

fPageCallback OggDataBuffer::mStaticCallback [protected]
 

Definition at line 120 of file OggDataBuffer.h.

Referenced by dispatch(), registerStaticCallback(), and registerVirtualCallback().

void* OggDataBuffer::mStaticCallbackUserData [protected]
 

Definition at line 121 of file OggDataBuffer.h.

Referenced by dispatch(), and registerStaticCallback().

IOggCallback* OggDataBuffer::mVirtualCallback [protected]
 

Definition at line 119 of file OggDataBuffer.h.

Referenced by dispatch(), registerStaticCallback(), and registerVirtualCallback().

OggPage* OggDataBuffer::pendingPage [protected]
 

Definition at line 115 of file OggDataBuffer.h.

Referenced by dispatch(), processBaseHeader(), processBuffer(), processDataSegment(), and processSegTable().


The documentation for this class was generated from the following files:
Generated on Tue Feb 15 15:03:32 2005 for oggdsf by  doxygen 1.3.9