void ByteStreamFifoSource::doGetNextFrame() {

#ifdef READ_FROM_FILES_SYNCHRONOUSLY
  doReadFromFile();
#else
  if (!fHaveStartedReading) {
    // Await readable data from the file:
    envir().taskScheduler().turnOnBackgroundReadHandling(fFid,
	       (TaskScheduler::BackgroundHandlerProc*)&fileReadableHandler, this);
    fHaveStartedReading = True;
  }
#endif
}
void ByteStreamFileSource::doGetNextFrame() {
  if (feof(fFid) || ferror(fFid) || (fLimitNumBytesToStream && fNumBytesToStream == 0)) {
    handleClosure();
    return;
  }

#ifdef READ_FROM_FILES_SYNCHRONOUSLY
  doReadFromFile();
#else
  if (!fHaveStartedReading) {
    // Await readable data from the file:
    envir().taskScheduler().turnOnBackgroundReadHandling(fileno(fFid),
	       (TaskScheduler::BackgroundHandlerProc*)&fileReadableHandler, this);
    fHaveStartedReading = True;
  }
#endif
}
void ByteStreamFileSource::doGetNextFrame() {
//	printf("ByteStreamFileSource::doGetNextFrame\n");	//jay
  if (feof(fFid) || ferror(fFid)) {
	  handleClosure(this);
	  return;
	}

#ifdef READ_FROM_FILES_SYNCHRONOUSLY
  doReadFromFile();
#else
//	printf("fHaveStartedReading %d\n", fHaveStartedReading);	//jay
  if (!fHaveStartedReading) {
		// Await readable data from the file:
//	  printf("ByteStreamFileSource: turnOnBackgroundReadHandling\n");		//jay
	  envir().taskScheduler().turnOnBackgroundReadHandling(fileno(fFid),
				 (TaskScheduler::BackgroundHandlerProc*)&fileReadableHandler, this);
	  fHaveStartedReading = True;
	}
#endif
}
void ByteStreamFileSource::doGetNextFrame() {
  DEBUG_LOG(INF, "ByteStreamFileSource::doGetNextFrame");
  if (feof(fFid) || ferror(fFid)) {
    handleClosure(this);
    return;
  }

#ifdef READ_FROM_FILES_SYNCHRONOUSLY //win32下是同步读
  doReadFromFile();
#else
  if (!fHaveStartedReading) {
    // Await readable data from the file:
    // fileno返回打开文件的文件描述符
    envir().taskScheduler().turnOnBackgroundReadHandling(fileno(fFid),
	       (TaskScheduler::BackgroundHandlerProc*)&fileReadableHandler, this);
    fHaveStartedReading = True;
  DEBUG_LOG(INF, "turnOnBackgroundReadHandling: handle=%d, func='fileReadableHandler'", fileno(fFid));
  }
#endif
}