Example #1
0
void periodicFileOutputTimerHandler(void* /*clientData*/) {
  fileOutputSecondsSoFar += fileOutputInterval;

  // First, close the existing output files:
  closeMediaSinks();

  // Then, create new output files:
  createPeriodicOutputFiles();
}
 void setupStreams() {
      ALOG(TX_LOG_INFO, TAG,"setup Streams\n");
   static MediaSubsessionIterator* setupIter = NULL;
   if(setupIter == NULL)
   {
       ALOG(TX_LOG_INFO, TAG,"setuplter == NULL\n");
   }else{
       ALOG(TX_LOG_INFO, TAG,"setuplter !!!!== NULL\n");
   }
   if (setupIter == NULL) setupIter = new MediaSubsessionIterator(*session);
   ALOG(TX_LOG_INFO, TAG,"1111\n");
   while ((subsession = setupIter->next()) != NULL) {
     // We have another subsession left to set up:
     if (subsession->clientPortNum() == 0) continue; // port # was not set

     setupSubsession(subsession, streamUsingTCP, forceMulticastOnUnspecified, continueAfterSETUP);
     return;
   }

   // We're done setting up subsessions.
   delete setupIter;
   if (!madeProgress) shutdown();

   // Create output files:
   if (createReceivers) {
     if (fileOutputInterval > 0) {
       createPeriodicOutputFiles();
     } else {
       createOutputFiles("");
     }
   }

   // Finally, start playing each subsession, to start the data flow:
   if (duration == 0) {
     if (scale > 0) duration = session->playEndTime() - initialSeekTime; // use SDP end time
     else if (scale < 0) duration = initialSeekTime;
   }
   if (duration < 0) duration = 0.0;

   endTime = initialSeekTime;
   if (scale > 0) {
     if (duration <= 0) endTime = -1.0f;
     else endTime = initialSeekTime + duration;
   } else {
     endTime = initialSeekTime - duration;
     if (endTime < 0) endTime = 0.0f;
   }

   char const* absStartTime = initialAbsoluteSeekTime != NULL ? initialAbsoluteSeekTime : session->absStartTime();
   if (absStartTime != NULL) {
     // Either we or the server have specified that seeking should be done by 'absolute' time:
     startPlayingSession(session, absStartTime, session->absEndTime(), scale, continueAfterPLAY);
   } else {
     // Normal case: Seek by relative time (NPT):
     startPlayingSession(session, initialSeekTime, endTime, scale, continueAfterPLAY);
   }
 }