InterleavingFrames Class Reference

Collaboration diagram for InterleavingFrames:

Collaboration graph
[legend]

Public Member Functions

 InterleavingFrames (unsigned maxCycleSize)
virtual ~InterleavingFrames ()
Boolean haveReleaseableFrame ()
void getIncomingFrameParams (unsigned char index, unsigned char *&dataPtr, unsigned &bytesAvailable)
void getReleasingFrameParams (unsigned char index, unsigned char *&dataPtr, unsigned &bytesInUse, struct timeval &presentationTime, unsigned &durationInMicroseconds)
void setFrameParams (unsigned char index, unsigned char icc, unsigned char ii, unsigned frameSize, struct timeval presentationTime, unsigned durationInMicroseconds)
unsigned nextIndexToRelease ()
void releaseNext ()

Private Attributes

unsigned fMaxCycleSize
unsigned fNextIndexToRelease
InterleavingFrameDescriptorfDescriptors

Detailed Description

Definition at line 83 of file MP3ADUinterleaving.cpp.


Constructor & Destructor Documentation

InterleavingFrames::InterleavingFrames ( unsigned  maxCycleSize  ) 

Definition at line 333 of file MP3ADUinterleaving.cpp.

00334   : fMaxCycleSize(maxCycleSize), fNextIndexToRelease(0),
00335     fDescriptors(new InterleavingFrameDescriptor[maxCycleSize]) {
00336 }

InterleavingFrames::~InterleavingFrames (  )  [virtual]

Definition at line 337 of file MP3ADUinterleaving.cpp.

References fDescriptors.

00337                                         {
00338   delete[] fDescriptors;
00339 }


Member Function Documentation

Boolean InterleavingFrames::haveReleaseableFrame (  ) 

Definition at line 341 of file MP3ADUinterleaving.cpp.

References fDescriptors, fNextIndexToRelease, and InterleavingFrameDescriptor::frameDataSize.

Referenced by MP3ADUinterleaver::doGetNextFrame().

00341                                                  {
00342   return fDescriptors[fNextIndexToRelease].frameDataSize > 0;
00343 }

void InterleavingFrames::getIncomingFrameParams ( unsigned char  index,
unsigned char *&  dataPtr,
unsigned &  bytesAvailable 
)

Definition at line 345 of file MP3ADUinterleaving.cpp.

References fDescriptors, InterleavingFrameDescriptor::frameData, and MAX_FRAME_SIZE.

Referenced by MP3ADUinterleaver::doGetNextFrame().

00347                                                                           {
00348   InterleavingFrameDescriptor& desc = fDescriptors[index];
00349   dataPtr = &desc.frameData[0];
00350   bytesAvailable = MAX_FRAME_SIZE;
00351 }

void InterleavingFrames::getReleasingFrameParams ( unsigned char  index,
unsigned char *&  dataPtr,
unsigned &  bytesInUse,
struct timeval &  presentationTime,
unsigned &  durationInMicroseconds 
)

Definition at line 353 of file MP3ADUinterleaving.cpp.

References InterleavingFrameDescriptor::durationInMicroseconds, fDescriptors, InterleavingFrameDescriptor::frameData, InterleavingFrameDescriptor::frameDataSize, and InterleavingFrameDescriptor::presentationTime.

Referenced by MP3ADUinterleaver::releaseOutgoingFrame().

00357                                                                                    {
00358   InterleavingFrameDescriptor& desc = fDescriptors[index];
00359   dataPtr = &desc.frameData[0];
00360   bytesInUse = desc.frameDataSize;
00361   presentationTime = desc.presentationTime;
00362   durationInMicroseconds = desc.durationInMicroseconds;
00363 }

void InterleavingFrames::setFrameParams ( unsigned char  index,
unsigned char  icc,
unsigned char  ii,
unsigned  frameSize,
struct timeval  presentationTime,
unsigned  durationInMicroseconds 
)

Definition at line 365 of file MP3ADUinterleaving.cpp.

References InterleavingFrameDescriptor::durationInMicroseconds, fDescriptors, InterleavingFrameDescriptor::frameData, InterleavingFrameDescriptor::frameDataSize, ADUdescriptor::getRemainingFrameSize(), and InterleavingFrameDescriptor::presentationTime.

Referenced by MP3ADUinterleaver::afterGettingFrame().

00370                                                                          {
00371   InterleavingFrameDescriptor& desc = fDescriptors[index];
00372   desc.frameDataSize = frameSize;
00373   desc.presentationTime = presentationTime;
00374   desc.durationInMicroseconds = durationInMicroseconds;
00375 
00376   // Advance over the ADU descriptor, to get to the MPEG 'syncword':
00377   unsigned char* ptr = &desc.frameData[0];
00378   (void)ADUdescriptor::getRemainingFrameSize(ptr);
00379 
00380   // Replace the next 11 bits with (ii,icc):
00381   *ptr++ = ii;
00382   *ptr &=~ 0xE0;
00383   *ptr |= (icc<<5);
00384 }

unsigned InterleavingFrames::nextIndexToRelease (  )  [inline]

Definition at line 101 of file MP3ADUinterleaving.cpp.

Referenced by MP3ADUinterleaver::releaseOutgoingFrame().

00101 {return fNextIndexToRelease;}

void InterleavingFrames::releaseNext (  ) 

Definition at line 386 of file MP3ADUinterleaving.cpp.

References fDescriptors, fMaxCycleSize, fNextIndexToRelease, and InterleavingFrameDescriptor::frameDataSize.

Referenced by MP3ADUinterleaver::releaseOutgoingFrame().


Field Documentation

unsigned InterleavingFrames::fMaxCycleSize [private]

Definition at line 105 of file MP3ADUinterleaving.cpp.

Referenced by releaseNext().

unsigned InterleavingFrames::fNextIndexToRelease [private]

Definition at line 106 of file MP3ADUinterleaving.cpp.

Referenced by haveReleaseableFrame(), and releaseNext().

class InterleavingFrameDescriptor* InterleavingFrames::fDescriptors [private]

Definition at line 107 of file MP3ADUinterleaving.cpp.

Referenced by getIncomingFrameParams(), getReleasingFrameParams(), haveReleaseableFrame(), releaseNext(), setFrameParams(), and ~InterleavingFrames().


The documentation for this class was generated from the following file:
Generated on Mon Apr 29 13:31:40 2013 for live by  doxygen 1.5.2