threadSignalNoLock();
}
}
- /*
- else if (caller == &vfeed)
- {
- if (videoStartup2)
- {
- logger->log("PlayerLiveTV", Log::DEBUG, "Video startup %i", videoStartup2count);
-
- if (++videoStartup2count == 2)
- {
- videoStartup2 = false;
-
- video->unPause();
- audio->unPause();
-
- audio->systemMuteOff();
- }
- }
-
- threadSignalNoLock();
- }
-*/
}
// -----------------------------------
{
switch(newState)
{
- case S_PREBUFFERING:
+ case S_VIDEOSTARTUP:
{
video->blank();
+ video->reset();
+ video->sync();
+ video->play();
+ video->pause();
+
audio->stop();
audio->unPause();
audio->reset();
-
audio->setStreamType(Audio::MPEG2_PES);
- audio->systemMuteOff();
- video->reset();
+ audio->sync();
+ audio->play();
+ audio->pause();
+
demuxer->reset();
demuxer->seek();
+
+ afeed.start();
+ vfeed.start();
+
state = newState;
return;
}
+ default:
+ {
+ logger->log("PlayerLiveTV", Log::EMERG, "Thread called state %u to state %u which is not supported", state, newState);
+ abort();
+ break;
+ }
}
}
-
- case S_PREBUFFERING: // FROM S_PREBUFFERING
+
+ case S_VIDEOSTARTUP: // FROM S_VIDEOSTARTUP
{
switch(newState)
{
- case S_STOP:
- {
- vdr->stopStreaming();
- clearStreamChunks();
- state = newState;
- return;
- }
case S_PREBUFFERING:
{
- vdr->stopStreaming();
- clearStreamChunks();
+ logger->log("PlayerLiveTV", Log::DEBUG, "doing ss to ss2");
+ vfeed.release();
state = newState;
return;
}
- case S_VIDEOSTARTUP:
+ default:
{
- logger->log("PlayerLiveTV", Log::DEBUG, "doing ss to videostartup");
-
- audio->sync();
- audio->play();
- //audio->systemMuteOn();
- video->sync();
- video->pause();
- afeed.start();
- vfeed.start();
- state = newState;
- return;
- }
+ logger->log("PlayerLiveTV", Log::EMERG, "Thread called state %u to state %u which is not supported", state, newState);
+ abort();
+ break;
+ }
}
}
- case S_VIDEOSTARTUP: // FROM S_VIDEOSTARTUP
+ case S_PREBUFFERING: // FROM S_PREBUFFERING
{
switch(newState)
{
case S_PLAY:
{
- logger->log("PlayerLiveTV", Log::DEBUG, "doing ss to play");
- video->reset();
- video->play();
- video->sync();
- vfeed.release();
+ logger->log("PlayerLiveTV", Log::DEBUG, "doing ss2 to ss3");
+ audio->unPause();
+ video->unPause();
state = newState;
return;
}
+ default:
+ {
+ logger->log("PlayerLiveTV", Log::EMERG, "Thread called state %u to state %u which is not supported", state, newState);
+ abort();
+ break;
+ }
}
}
+
case S_PLAY: // FROM S_PLAY
{
switch(newState)
state = newState;
return;
}
- case S_PREBUFFERING:
+ case S_VIDEOSTARTUP:
{
vdr->stopStreaming();
clearStreamChunks();
audio->unPause();
audio->reset();
- audio->setStreamType(Audio::MPEG2_PES);
- // audio->systemMuteOn();
video->reset();
+ video->sync();
+ video->play();
+ video->pause();
+
+ audio->setStreamType(Audio::MPEG2_PES);
+ audio->sync();
+ audio->play();
+ audio->pause();
+
demuxer->reset();
demuxer->seek();
+
+ afeed.start();
+ vfeed.start();
+
state = newState;
return;
}
+ default:
+ {
+ logger->log("PlayerLiveTV", Log::EMERG, "Thread called state %u to state %u which is not supported", state, newState);
+ abort();
+ break;
+ }
}
}
}
-
- logger->log("PlayerLiveTV", Log::EMERG, "Thread called state %u to state %u which is not supported", state, newState);
- abort();
}
void PlayerLiveTV::threadMethod()
{
if (videoStartup) // we are in S_VIDEOSTARTUP, afeed has signalled that it has written some data
{
- switchState(S_PLAY);
+ switchState(S_PREBUFFERING);
videoStartup = false;
+ videoStartup2Counter = 0;
}
while(!instructions.empty())
{
logger->log("PlayerLiveTV", Log::DEBUG, "start new stream");
- switchState(S_PREBUFFERING);
+ switchState(S_VIDEOSTARTUP);
Channel* chan = (*chanList)[i.channelIndex];
chan->loadPids();
if (stopNow) break;
- if (streamChunks.size())
+ while(streamChunks.size())
{
+ chunkToDemuxer();
+
if (state == S_PREBUFFERING)
{
- if (streamChunks.size() > 9)
+ logger->log("PlayerLiveTV", Log::DEBUG, "video startup2 buffering...");
+ if (++videoStartup2Counter == 3)
{
- while(streamChunks.size()) chunkToDemuxer();
- switchState(S_VIDEOSTARTUP);
+ switchState(S_PLAY);
}
}
- else if (state == S_PLAY || state == S_VIDEOSTARTUP)
- {
- while(streamChunks.size()) chunkToDemuxer();
- }
}
threadLock();