liveMedia/include/MPEG4LATMAudioRTPSource.hh File Reference

#include "MultiFramedRTPSource.hh"

Include dependency graph for MPEG4LATMAudioRTPSource.hh:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  MPEG4LATMAudioRTPSource

Functions

Boolean parseStreamMuxConfigStr (char const *configStr, Boolean &audioMuxVersion, Boolean &allStreamsSameTimeFraming, unsigned char &numSubFrames, unsigned char &numProgram, unsigned char &numLayer, unsigned char *&audioSpecificConfig, unsigned &audioSpecificConfigSize)
unsigned char * parseStreamMuxConfigStr (char const *configStr, unsigned &audioSpecificConfigSize)
unsigned char * parseGeneralConfigStr (char const *configStr, unsigned &configSize)


Function Documentation

unsigned char* parseGeneralConfigStr ( char const *  configStr,
unsigned &  configSize 
)

Definition at line 238 of file MPEG4LATMAudioRTPSource.cpp.

References getByte(), and NULL.

Referenced by QuickTimeFileSink::addAtom_hdlr2(), main(), and samplingFrequencyFromAudioSpecificConfig().

00239                                                         :
00240                                      unsigned& configSize) {
00241   unsigned char* config = NULL;
00242   do {
00243     if (configStr == NULL) break;
00244     configSize = (strlen(configStr)+1)/2 + 1;
00245 
00246     config = new unsigned char[configSize];
00247     if (config == NULL) break;
00248 
00249     Boolean parseSuccess;
00250     unsigned i = 0;
00251     do {
00252       parseSuccess = getByte(configStr, config[i++]);
00253     } while (parseSuccess);
00254     if (i != configSize) break;
00255         // part of the remaining string was bad
00256 
00257     return config;
00258   } while (0);
00259 
00260   configSize = 0;
00261   delete[] config;
00262   return NULL;
00263 }

unsigned char* parseStreamMuxConfigStr ( char const *  configStr,
unsigned &  audioSpecificConfigSize 
)

Definition at line 220 of file MPEG4LATMAudioRTPSource.cpp.

References NULL, and parseStreamMuxConfigStr().

00221                                                           :
00222                                        unsigned& audioSpecificConfigSize) {
00223   Boolean audioMuxVersion, allStreamsSameTimeFraming;
00224   unsigned char numSubFrames, numProgram, numLayer;
00225   unsigned char* audioSpecificConfig;
00226 
00227   if (!parseStreamMuxConfigStr(configStr,
00228                                audioMuxVersion, allStreamsSameTimeFraming,
00229                                numSubFrames, numProgram, numLayer,
00230                                audioSpecificConfig, audioSpecificConfigSize)) {
00231     audioSpecificConfigSize = 0;
00232     return NULL;
00233   }
00234 
00235   return audioSpecificConfig;
00236 }

Boolean parseStreamMuxConfigStr ( char const *  configStr,
Boolean audioMuxVersion,
Boolean allStreamsSameTimeFraming,
unsigned char &  numSubFrames,
unsigned char &  numProgram,
unsigned char &  numLayer,
unsigned char *&  audioSpecificConfig,
unsigned &  audioSpecificConfigSize 
)

Definition at line 162 of file MPEG4LATMAudioRTPSource.cpp.

Referenced by parseStreamMuxConfigStr().

00163                                             :
00164                         Boolean& audioMuxVersion,
00165                         Boolean& allStreamsSameTimeFraming,
00166                         unsigned char& numSubFrames,
00167                         unsigned char& numProgram,
00168                         unsigned char& numLayer,
00169                         unsigned char*& audioSpecificConfig,
00170                         unsigned& audioSpecificConfigSize) {
00171   // Set default versions of the result parameters:
00172   audioMuxVersion = 0;
00173   allStreamsSameTimeFraming = 1;
00174   numSubFrames = numProgram = numLayer = 0;
00175   audioSpecificConfig = NULL;
00176   audioSpecificConfigSize = 0;
00177 
00178   do {
00179     if (configStr == NULL) break;
00180 
00181     unsigned char nextByte;
00182 
00183     if (!getByte(configStr, nextByte)) break;
00184     audioMuxVersion = (nextByte&0x80)>>7;
00185     if (audioMuxVersion != 0) break;
00186 
00187     allStreamsSameTimeFraming = (nextByte&0x40)>>6;
00188     numSubFrames = (nextByte&0x3F);
00189 
00190     if (!getByte(configStr, nextByte)) break;
00191     numProgram = (nextByte&0xF0)>>4;
00192 
00193     numLayer = (nextByte&0x0E)>>1;
00194 
00195     // The one remaining bit, and the rest of the string,
00196     // are used for "audioSpecificConfig":
00197     unsigned char remainingBit = nextByte&1;
00198 
00199     unsigned ascSize = (strlen(configStr)+1)/2 + 1;
00200     audioSpecificConfig = new unsigned char[ascSize];
00201 
00202     Boolean parseSuccess;
00203     unsigned i = 0;
00204     do {
00205       nextByte = 0;
00206       parseSuccess = getByte(configStr, nextByte);
00207       audioSpecificConfig[i++] = (remainingBit<<7)|((nextByte&0xFE)>>1);
00208       remainingBit = nextByte&1;
00209     } while (parseSuccess);
00210     if (i != ascSize) break; // part of the remaining string was bad
00211 
00212     audioSpecificConfigSize = ascSize;
00213     return True; // parsing succeeded
00214   } while (0);
00215 
00216   delete[] audioSpecificConfig;
00217   return False; // parsing failed
00218 }


Generated on Tue Oct 7 15:38:55 2008 for live by  doxygen 1.5.2