

Public Member Functions | |
| AC3AudioStreamParser (AC3AudioStreamFramer *usingSource, FramedSource *inputSource) | |
| virtual | ~AC3AudioStreamParser () |
| void | testStreamCode (unsigned char ourStreamCode, unsigned char *ptr, unsigned size) |
| unsigned | parseFrame (unsigned &numTruncatedBytes) |
| void | registerReadInterest (unsigned char *to, unsigned maxSize) |
| AC3FrameParams const & | currentFrame () const |
| Boolean | haveParsedAFrame () const |
| void | readAndSaveAFrame () |
| virtual void | flushInput () |
Protected Types | |
| typedef void( | clientContinueFunc )(void *clientData, unsigned char *ptr, unsigned size, struct timeval presentationTime) |
Protected Member Functions | |
| void | saveParserState () |
| virtual void | restoreSavedParserState () |
| u_int32_t | get4Bytes () |
| u_int32_t | test4Bytes () |
| u_int16_t | get2Bytes () |
| u_int8_t | get1Byte () |
| void | getBytes (u_int8_t *to, unsigned numBytes) |
| void | testBytes (u_int8_t *to, unsigned numBytes) |
| void | skipBytes (unsigned numBytes) |
| void | skipBits (unsigned numBits) |
| unsigned | getBits (unsigned numBits) |
| unsigned | curOffset () const |
| unsigned & | totNumValidBytes () |
| Boolean | haveSeenEOF () const |
| unsigned | bankSize () const |
Private Member Functions | |
| void | afterGettingSavedFrame1 (unsigned frameSize) |
| void | onSavedFrameClosure1 () |
Static Private Member Functions | |
| static void | afterGettingSavedFrame (void *clientData, unsigned frameSize, unsigned numTruncatedBytes, struct timeval presentationTime, unsigned durationInMicroseconds) |
| static void | onSavedFrameClosure (void *clientData) |
Private Attributes | |
| AC3AudioStreamFramer * | fUsingSource |
| unsigned char * | fTo |
| unsigned | fMaxSize |
| Boolean | fHaveParsedAFrame |
| unsigned char * | fSavedFrame |
| unsigned | fSavedFrameSize |
| char | fSavedFrameFlag |
| AC3FrameParams | fCurrentFrame |
Definition at line 40 of file AC3AudioStreamFramer.cpp.
typedef void( StreamParser::clientContinueFunc)(void *clientData, unsigned char *ptr, unsigned size, struct timeval presentationTime) [protected, inherited] |
Definition at line 33 of file StreamParser.hh.
| AC3AudioStreamParser::AC3AudioStreamParser | ( | AC3AudioStreamFramer * | usingSource, | |
| FramedSource * | inputSource | |||
| ) |
Definition at line 218 of file AC3AudioStreamFramer.cpp.
00220 : StreamParser(inputSource, FramedSource::handleClosure, usingSource, 00221 &AC3AudioStreamFramer::handleNewData, usingSource), 00222 fUsingSource(usingSource), fHaveParsedAFrame(False), 00223 fSavedFrame(NULL), fSavedFrameSize(0) { 00224 }
| AC3AudioStreamParser::~AC3AudioStreamParser | ( | ) | [virtual] |
| void AC3AudioStreamParser::testStreamCode | ( | unsigned char | ourStreamCode, | |
| unsigned char * | ptr, | |||
| unsigned | size | |||
| ) |
Definition at line 236 of file AC3AudioStreamFramer.cpp.
References StreamParser::totNumValidBytes().
Referenced by AC3AudioStreamFramer::handleNewData().
00237 { 00238 if (ourStreamCode == 0) return; // we assume that there's no stream code at the beginning of the data 00239 00240 if (size < 4) return; 00241 unsigned char streamCode = *ptr; 00242 00243 if (streamCode == ourStreamCode) { 00244 // Remove the first 4 bytes from the stream: 00245 memmove(ptr, ptr + 4, size - 4); 00246 totNumValidBytes() = totNumValidBytes() - 4; 00247 } else { 00248 // Discard all of the data that was just read: 00249 totNumValidBytes() = totNumValidBytes() - size; 00250 } 00251 }
| unsigned AC3AudioStreamParser::parseFrame | ( | unsigned & | numTruncatedBytes | ) |
Definition at line 253 of file AC3AudioStreamFramer.cpp.
References Medium::envir(), fCurrentFrame, fHaveParsedAFrame, fMaxSize, AC3FrameParams::frameSize, frameSize, fSavedFrame, fSavedFrameSize, fTo, fUsingSource, StreamParser::get4Bytes(), StreamParser::getBytes(), AC3FrameParams::hdr0, AC3FrameParams::hdr1, NULL, StreamParser::saveParserState(), AC3FrameParams::setParamsFromHeader(), StreamParser::skipBytes(), StreamParser::test4Bytes(), and True.
Referenced by AC3AudioStreamFramer::parseNextFrame().
00253 { 00254 if (fSavedFrameSize > 0) { 00255 // We've already read and parsed a frame. Use it instead: 00256 memmove(fTo, fSavedFrame, fSavedFrameSize); 00257 delete[] fSavedFrame; fSavedFrame = NULL; 00258 unsigned frameSize = fSavedFrameSize; 00259 fSavedFrameSize = 0; 00260 return frameSize; 00261 } 00262 00263 try { 00264 saveParserState(); 00265 00266 // We expect an AC3 audio header (first 2 bytes == 0x0B77) at the start: 00267 while (1) { 00268 unsigned next4Bytes = test4Bytes(); 00269 if (next4Bytes>>16 == 0x0B77) break; 00270 skipBytes(1); 00271 saveParserState(); 00272 } 00273 fCurrentFrame.hdr0 = get4Bytes(); 00274 fCurrentFrame.hdr1 = test4Bytes(); 00275 00276 fCurrentFrame.setParamsFromHeader(); 00277 fHaveParsedAFrame = True; 00278 00279 // Copy the frame to the requested destination: 00280 unsigned frameSize = fCurrentFrame.frameSize; 00281 if (frameSize > fMaxSize) { 00282 numTruncatedBytes = frameSize - fMaxSize; 00283 frameSize = fMaxSize; 00284 } else { 00285 numTruncatedBytes = 0; 00286 } 00287 00288 fTo[0] = fCurrentFrame.hdr0 >> 24; 00289 fTo[1] = fCurrentFrame.hdr0 >> 16; 00290 fTo[2] = fCurrentFrame.hdr0 >> 8; 00291 fTo[3] = fCurrentFrame.hdr0; 00292 getBytes(&fTo[4], frameSize-4); 00293 skipBytes(numTruncatedBytes); 00294 00295 return frameSize; 00296 } catch (int /*e*/) { 00297 #ifdef DEBUG 00298 fUsingSource->envir() << "AC3AudioStreamParser::parseFrame() EXCEPTION (This is normal behavior - *not* an error)\n"; 00299 #endif 00300 return 0; // the parsing got interrupted 00301 } 00302 }
| void AC3AudioStreamParser::registerReadInterest | ( | unsigned char * | to, | |
| unsigned | maxSize | |||
| ) |
Definition at line 229 of file AC3AudioStreamFramer.cpp.
Referenced by AC3AudioStreamFramer::doGetNextFrame().
| AC3FrameParams const& AC3AudioStreamParser::currentFrame | ( | ) | const [inline] |
Definition at line 54 of file AC3AudioStreamFramer.cpp.
References fCurrentFrame.
Referenced by AC3AudioStreamFramer::currentFramePlayTime(), and AC3AudioStreamFramer::samplingRate().
00054 { return fCurrentFrame; }
| Boolean AC3AudioStreamParser::haveParsedAFrame | ( | ) | const [inline] |
Definition at line 56 of file AC3AudioStreamFramer.cpp.
References fHaveParsedAFrame.
Referenced by AC3AudioStreamFramer::samplingRate().
00056 { return fHaveParsedAFrame; }
| void AC3AudioStreamParser::readAndSaveAFrame | ( | ) |
Definition at line 304 of file AC3AudioStreamFramer.cpp.
References afterGettingSavedFrame(), TaskScheduler::doEventLoop(), Medium::envir(), fSavedFrame, fSavedFrameFlag, fSavedFrameSize, fUsingSource, FramedSource::getNextFrame(), onSavedFrameClosure(), and UsageEnvironment::taskScheduler().
Referenced by AC3AudioStreamFramer::samplingRate().
00304 { 00305 unsigned const maxAC3FrameSize = 4000; 00306 fSavedFrame = new unsigned char[maxAC3FrameSize]; 00307 fSavedFrameSize = 0; 00308 00309 fSavedFrameFlag = 0; 00310 fUsingSource->getNextFrame(fSavedFrame, maxAC3FrameSize, 00311 afterGettingSavedFrame, this, 00312 onSavedFrameClosure, this); 00313 fUsingSource->envir().taskScheduler().doEventLoop(&fSavedFrameFlag); 00314 }
| void AC3AudioStreamParser::afterGettingSavedFrame | ( | void * | clientData, | |
| unsigned | frameSize, | |||
| unsigned | numTruncatedBytes, | |||
| struct timeval | presentationTime, | |||
| unsigned | durationInMicroseconds | |||
| ) | [static, private] |
Definition at line 317 of file AC3AudioStreamFramer.cpp.
References afterGettingSavedFrame1().
Referenced by readAndSaveAFrame().
00320 { 00321 AC3AudioStreamParser* parser = (AC3AudioStreamParser*)clientData; 00322 parser->afterGettingSavedFrame1(frameSize); 00323 }
| void AC3AudioStreamParser::afterGettingSavedFrame1 | ( | unsigned | frameSize | ) | [private] |
Definition at line 326 of file AC3AudioStreamFramer.cpp.
References fSavedFrameFlag, and fSavedFrameSize.
Referenced by afterGettingSavedFrame().
00326 { 00327 fSavedFrameSize = frameSize; 00328 fSavedFrameFlag = ~0; 00329 }
| void AC3AudioStreamParser::onSavedFrameClosure | ( | void * | clientData | ) | [static, private] |
Definition at line 331 of file AC3AudioStreamFramer.cpp.
References onSavedFrameClosure1().
Referenced by readAndSaveAFrame().
00331 { 00332 AC3AudioStreamParser* parser = (AC3AudioStreamParser*)clientData; 00333 parser->onSavedFrameClosure1(); 00334 }
| void AC3AudioStreamParser::onSavedFrameClosure1 | ( | ) | [private] |
Definition at line 336 of file AC3AudioStreamFramer.cpp.
References fSavedFrame, fSavedFrameFlag, fSavedFrameSize, and NULL.
Referenced by onSavedFrameClosure().
00336 { 00337 delete[] fSavedFrame; fSavedFrame = NULL; 00338 fSavedFrameSize = 0; 00339 fSavedFrameFlag = ~0; 00340 }
| void StreamParser::flushInput | ( | ) | [virtual, inherited] |
Reimplemented in H264VideoStreamParser, MPEG1or2VideoStreamParser, and MPEG4VideoStreamParser.
Definition at line 28 of file StreamParser.cpp.
References StreamParser::fCurParserIndex, StreamParser::fRemainingUnparsedBits, StreamParser::fSavedParserIndex, StreamParser::fSavedRemainingUnparsedBits, and StreamParser::fTotNumValidBytes.
Referenced by MPEGVideoStreamFramer::flushInput(), MPEG4VideoStreamParser::flushInput(), MPEG1or2VideoStreamParser::flushInput(), MPEG1or2Demux::flushInput(), MPEG1or2AudioStreamFramer::flushInput(), H264VideoStreamParser::flushInput(), AC3AudioStreamFramer::flushInput(), and MatroskaFileParser::resetStateAfterSeeking().
00028 { 00029 fCurParserIndex = fSavedParserIndex = 0; 00030 fSavedRemainingUnparsedBits = fRemainingUnparsedBits = 0; 00031 fTotNumValidBytes = 0; 00032 }
| void StreamParser::saveParserState | ( | ) | [protected, inherited] |
Definition at line 58 of file StreamParser.cpp.
References StreamParser::fCurParserIndex, StreamParser::fRemainingUnparsedBits, StreamParser::fSavedParserIndex, and StreamParser::fSavedRemainingUnparsedBits.
Referenced by MPEG1or2AudioStreamParser::parse(), parseFrame(), MPEGVideoStreamParser::setParseState(), MPEGProgramStreamParser::setParseState(), MatroskaFileParser::setParseState(), and H263plusVideoStreamParser::setParseState().
00058 { 00059 fSavedParserIndex = fCurParserIndex; 00060 fSavedRemainingUnparsedBits = fRemainingUnparsedBits; 00061 }
| void StreamParser::restoreSavedParserState | ( | ) | [protected, virtual, inherited] |
Reimplemented in H263plusVideoStreamParser, MatroskaFileParser, and MPEGVideoStreamParser.
Definition at line 63 of file StreamParser.cpp.
References StreamParser::fCurParserIndex, StreamParser::fRemainingUnparsedBits, StreamParser::fSavedParserIndex, and StreamParser::fSavedRemainingUnparsedBits.
Referenced by StreamParser::afterGettingBytes1(), MPEGProgramStreamParser::parsePESPacket(), MPEGVideoStreamParser::restoreSavedParserState(), MatroskaFileParser::restoreSavedParserState(), and H263plusVideoStreamParser::restoreSavedParserState().
00063 { 00064 fCurParserIndex = fSavedParserIndex; 00065 fRemainingUnparsedBits = fSavedRemainingUnparsedBits; 00066 }
| u_int32_t StreamParser::get4Bytes | ( | ) | [inline, protected, inherited] |
Definition at line 46 of file StreamParser.hh.
References StreamParser::fCurParserIndex, StreamParser::fRemainingUnparsedBits, and StreamParser::test4Bytes().
Referenced by parseFrame(), MPEG1or2VideoStreamParser::parseGOPHeader(), MPEG4VideoStreamParser::parseGroupOfVideoObjectPlane(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), MPEG1or2VideoStreamParser::parsePictureHeader(), MPEG4VideoStreamParser::parseVideoObjectLayer(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG1or2VideoStreamParser::parseVideoSequenceHeader(), MPEG4VideoStreamParser::parseVisualObject(), MPEG4VideoStreamParser::parseVisualObjectSequence(), MPEGVideoStreamParser::saveToNextCode(), and MPEGVideoStreamParser::skipToNextCode().
00046 { // byte-aligned; returned in big-endian order 00047 u_int32_t result = test4Bytes(); 00048 fCurParserIndex += 4; 00049 fRemainingUnparsedBits = 0; 00050 00051 return result; 00052 }
| u_int32_t StreamParser::test4Bytes | ( | ) | [inline, protected, inherited] |
Definition at line 53 of file StreamParser.hh.
References StreamParser::ensureValidBytes(), and StreamParser::nextToParse().
Referenced by StreamParser::get4Bytes(), StreamParser::getBits(), MPEG1or2AudioStreamParser::parse(), H264VideoStreamParser::parse(), parseFrame(), MPEG1or2VideoStreamParser::parseGOPHeader(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), MPEGProgramStreamParser::parseSystemHeader(), MPEG1or2VideoStreamParser::parseVideoSequenceHeader(), and MPEG4VideoStreamParser::parseVisualObjectSequence().
00053 { // as above, but doesn't advance ptr 00054 ensureValidBytes(4); 00055 00056 unsigned char const* ptr = nextToParse(); 00057 return (ptr[0]<<24)|(ptr[1]<<16)|(ptr[2]<<8)|ptr[3]; 00058 }
| u_int16_t StreamParser::get2Bytes | ( | ) | [inline, protected, inherited] |
Definition at line 60 of file StreamParser.hh.
References StreamParser::ensureValidBytes(), StreamParser::fCurParserIndex, StreamParser::fRemainingUnparsedBits, and StreamParser::nextToParse().
Referenced by MPEGProgramStreamParser::parsePESPacket(), and MPEGProgramStreamParser::parseSystemHeader().
00060 { 00061 ensureValidBytes(2); 00062 00063 unsigned char const* ptr = nextToParse(); 00064 u_int16_t result = (ptr[0]<<8)|ptr[1]; 00065 00066 fCurParserIndex += 2; 00067 fRemainingUnparsedBits = 0; 00068 00069 return result; 00070 }
| u_int8_t StreamParser::get1Byte | ( | ) | [inline, protected, inherited] |
Definition at line 72 of file StreamParser.hh.
References StreamParser::curBank(), StreamParser::ensureValidBytes(), StreamParser::fCurParserIndex, and StreamParser::fRemainingUnparsedBits.
Referenced by MatroskaFileParser::deliverFrameWithinBlock(), H264VideoStreamParser::parse(), MatroskaFileParser::parseBlock(), MatroskaFileParser::parseEBMLNumber(), MatroskaFileParser::parseEBMLVal_binary(), MatroskaFileParser::parseEBMLVal_string(), MatroskaFileParser::parseEBMLVal_unsigned64(), MPEG1or2VideoStreamParser::parseGOPHeader(), H263plusVideoStreamParser::parseH263Frame(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), MPEG4VideoStreamParser::parseVideoObjectPlane(), MPEG1or2VideoStreamParser::parseVideoSequenceHeader(), MPEG4VideoStreamParser::parseVisualObject(), MPEG4VideoStreamParser::parseVisualObjectSequence(), MPEGVideoStreamParser::saveToNextCode(), and MPEGVideoStreamParser::skipToNextCode().
00072 { // byte-aligned 00073 ensureValidBytes(1); 00074 fRemainingUnparsedBits = 0; 00075 return curBank()[fCurParserIndex++]; 00076 }
| void StreamParser::getBytes | ( | u_int8_t * | to, | |
| unsigned | numBytes | |||
| ) | [inline, protected, inherited] |
Definition at line 78 of file StreamParser.hh.
References StreamParser::fCurParserIndex, StreamParser::fRemainingUnparsedBits, and StreamParser::testBytes().
Referenced by MatroskaFileParser::deliverFrameBytes(), MPEG1or2AudioStreamParser::parse(), parseFrame(), MPEG4VideoStreamParser::parseGroupOfVideoObjectPlane(), H263plusVideoStreamParser::parseH263Frame(), and MPEGProgramStreamParser::parsePESPacket().
00078 { 00079 testBytes(to, numBytes); 00080 fCurParserIndex += numBytes; 00081 fRemainingUnparsedBits = 0; 00082 }
| void StreamParser::testBytes | ( | u_int8_t * | to, | |
| unsigned | numBytes | |||
| ) | [inline, protected, inherited] |
Definition at line 83 of file StreamParser.hh.
References StreamParser::ensureValidBytes(), and StreamParser::nextToParse().
Referenced by StreamParser::getBytes(), and H264VideoStreamParser::parse().
00083 { // as above, but doesn't advance ptr 00084 ensureValidBytes(numBytes); 00085 memmove(to, nextToParse(), numBytes); 00086 }
| void StreamParser::skipBytes | ( | unsigned | numBytes | ) | [inline, protected, inherited] |
Definition at line 87 of file StreamParser.hh.
References StreamParser::ensureValidBytes(), and StreamParser::fCurParserIndex.
Referenced by MatroskaFileParser::deliverFrameBytes(), MPEG1or2AudioStreamParser::parse(), H264VideoStreamParser::parse(), MatroskaFileParser::parseBlock(), parseFrame(), MPEGProgramStreamParser::parsePackHeader(), MPEGProgramStreamParser::parsePESPacket(), MPEGProgramStreamParser::parseSystemHeader(), and MatroskaFileParser::skipHeader().
00087 { 00088 ensureValidBytes(numBytes); 00089 fCurParserIndex += numBytes; 00090 }
| void StreamParser::skipBits | ( | unsigned | numBits | ) | [protected, inherited] |
Definition at line 68 of file StreamParser.cpp.
References StreamParser::ensureValidBytes(), StreamParser::fCurParserIndex, and StreamParser::fRemainingUnparsedBits.
Referenced by MPEGProgramStreamParser::parsePackHeader().
00068 { 00069 if (numBits <= fRemainingUnparsedBits) { 00070 fRemainingUnparsedBits -= numBits; 00071 } else { 00072 numBits -= fRemainingUnparsedBits; 00073 00074 unsigned numBytesToExamine = (numBits+7)/8; // round up 00075 ensureValidBytes(numBytesToExamine); 00076 fCurParserIndex += numBytesToExamine; 00077 00078 fRemainingUnparsedBits = 8*numBytesToExamine - numBits; 00079 } 00080 }
| unsigned StreamParser::getBits | ( | unsigned | numBits | ) | [protected, inherited] |
Definition at line 82 of file StreamParser.cpp.
References StreamParser::fCurParserIndex, StreamParser::fRemainingUnparsedBits, StreamParser::lastParsed(), and StreamParser::test4Bytes().
Referenced by MPEGProgramStreamParser::parsePackHeader(), and MPEGProgramStreamParser::parsePESPacket().
00082 { 00083 if (numBits <= fRemainingUnparsedBits) { 00084 unsigned char lastByte = *lastParsed(); 00085 lastByte >>= (fRemainingUnparsedBits - numBits); 00086 fRemainingUnparsedBits -= numBits; 00087 00088 return (unsigned)lastByte &~ ((~0)<<numBits); 00089 } else { 00090 unsigned char lastByte; 00091 if (fRemainingUnparsedBits > 0) { 00092 lastByte = *lastParsed(); 00093 } else { 00094 lastByte = 0; 00095 } 00096 00097 unsigned remainingBits = numBits - fRemainingUnparsedBits; // > 0 00098 00099 // For simplicity, read the next 4 bytes, even though we might not 00100 // need all of them here: 00101 unsigned result = test4Bytes(); 00102 00103 result >>= (32 - remainingBits); 00104 result |= (lastByte << remainingBits); 00105 if (numBits < 32) result &=~ ((~0)<<numBits); 00106 00107 unsigned const numRemainingBytes = (remainingBits+7)/8; 00108 fCurParserIndex += numRemainingBytes; 00109 fRemainingUnparsedBits = 8*numRemainingBytes - remainingBits; 00110 00111 return result; 00112 } 00113 }
| unsigned StreamParser::curOffset | ( | ) | const [inline, protected, inherited] |
Definition at line 96 of file StreamParser.hh.
References StreamParser::fCurParserIndex.
Referenced by H264VideoStreamParser::parse(), MatroskaFileParser::parseBlock(), and MPEGProgramStreamParser::parsePESPacket().
00096 { return fCurParserIndex; }
| unsigned& StreamParser::totNumValidBytes | ( | ) | [inline, protected, inherited] |
Definition at line 98 of file StreamParser.hh.
References StreamParser::fTotNumValidBytes.
Referenced by H264VideoStreamParser::parse(), and testStreamCode().
00098 { return fTotNumValidBytes; }
| Boolean StreamParser::haveSeenEOF | ( | ) | const [inline, protected, inherited] |
Definition at line 100 of file StreamParser.hh.
References StreamParser::fHaveSeenEOF.
Referenced by H264VideoStreamParser::parse().
00100 { return fHaveSeenEOF; }
| unsigned StreamParser::bankSize | ( | ) | const [protected, inherited] |
Definition at line 115 of file StreamParser.cpp.
References BANK_SIZE.
Referenced by MatroskaFileParser::deliverFrameBytes(), and MatroskaFileParser::skipHeader().
00115 { 00116 return BANK_SIZE; 00117 }
Definition at line 69 of file AC3AudioStreamFramer.cpp.
Referenced by parseFrame(), and readAndSaveAFrame().
unsigned char* AC3AudioStreamParser::fTo [private] |
Definition at line 70 of file AC3AudioStreamFramer.cpp.
Referenced by parseFrame(), and registerReadInterest().
unsigned AC3AudioStreamParser::fMaxSize [private] |
Definition at line 71 of file AC3AudioStreamFramer.cpp.
Referenced by parseFrame(), and registerReadInterest().
Definition at line 73 of file AC3AudioStreamFramer.cpp.
Referenced by haveParsedAFrame(), and parseFrame().
unsigned char* AC3AudioStreamParser::fSavedFrame [private] |
Definition at line 74 of file AC3AudioStreamFramer.cpp.
Referenced by onSavedFrameClosure1(), parseFrame(), and readAndSaveAFrame().
unsigned AC3AudioStreamParser::fSavedFrameSize [private] |
Definition at line 75 of file AC3AudioStreamFramer.cpp.
Referenced by afterGettingSavedFrame1(), onSavedFrameClosure1(), parseFrame(), and readAndSaveAFrame().
char AC3AudioStreamParser::fSavedFrameFlag [private] |
Definition at line 76 of file AC3AudioStreamFramer.cpp.
Referenced by afterGettingSavedFrame1(), onSavedFrameClosure1(), and readAndSaveAFrame().
Definition at line 79 of file AC3AudioStreamFramer.cpp.
Referenced by currentFrame(), and parseFrame().
1.5.2