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); } }