=?gb2312?q?=BB=D8=B8=B4=A3=BA=20Re:=20[Live-devel]=20About=20data=20flow?=

Li bz paul_li20 at yahoo.com.cn
Tue Jun 14 04:12:32 PDT 2005


Thanks, Ross!

I am sorry I am still a bit confused. 

In fact, I am referring the following code in
FramedSource.cpp:
void FramedSource::getNextFrame(unsigned char* to,
unsigned maxSize,afterGettingFunc* afterGettingFunc,
void* afterGettingClientData,onCloseFunc* onCloseFunc,
void* onCloseClientData) {
  // Make sure we're not already being read:
  if (fIsCurrentlyAwaitingData) {
    envir() << "FramedSource[" << this <<
"]::getNextFrame(): attempting to read more than once
at the same time!\n";
    exit(1);
  }

  fTo = to;
  fMaxSize = maxSize;
  fNumTruncatedBytes = 0; // by default; could be
changed by doGetNextFrame()
  fDurationInMicroseconds = 0; // by default; could be
changed by doGetNextFrame()
  fAfterGettingFunc = afterGettingFunc;
  fAfterGettingClientData = afterGettingClientData;
  fOnCloseFunc = onCloseFunc;
  fOnCloseClientData = onCloseClientData;
  fIsCurrentlyAwaitingData = True;
  doGetNextFrame();
}

Here doGetNextFrame(), the first time, it calls
MPEG2TransportStreamFramer::doGetNextFrame(), the
second time, it calls
"ByteStreamFileSource::doGetNextFrame()", 

I am wondering, which parameter tells this
doGetNextFrame() function in
FramedSource::getNextFrame() to choose different
virtual function implemented in class
MPEG2TransportStreamFramer and class
ByteStreamFileSource respectively? Thanks for your
detail explaination. Sorry for the trouble.

Paul


		
___________________________________________________________ 
ÑÅ»¢Ãâ·ÑGÓÊÏ䣭ÖйúµÚÒ»¾øÎÞÀ¬»øÓʼþɧÈų¬´óÓÊÏä
http://cn.mail.yahoo.com/?id=77071



More information about the live-devel mailing list