#include "player.h"
-Player::Player(MessageQueue* messageQueue, UCHAR tIsRecording, UCHAR isRadio)
+Player::Player(MessageQueue* messageQueue, bool tIsRecording, bool tIsRadio)
: vfeed(this), afeed(this)
{
commandMessageQueue = messageQueue;
streamLength = 0;
feedPosition = 0;
feedMode = MODE_NORMAL;
- videoStartup = false;
- isRecording = tIsRecording;
lastRescan = 0;
startTS = 0;
endTS = 0;
- startup = 1;
+
+ startup = true;
+ videoStartup = false;
+ isRecording = tIsRecording;
+ isRadio = tIsRadio;
+
threadBuffer = NULL;
if (isRadio)
{
blockSize = 20000;
startupBlockSize = 60000;
- video->turnVideoOff();
+ video->turnVideoOff();
}
else
{
blockSize = 100000;
startupBlockSize = 250000;
- video->turnVideoOn();
+ video->turnVideoOn();
}
}
video->reset();
audio->reset();
demuxer.flush();
+ if (!isRadio) demuxer.seek();
feedPosition = newPosition;
videoStartup = true;
afeed.start();
video->reset();
audio->reset();
demuxer.flush();
+ if (!isRadio) demuxer.seek();
videoStartup = true;
afeed.enable();
video->reset();
video->play();
demuxer.flush();
+ if (!isRadio) demuxer.seek();
+
threadStart();
}
}
if (isRecording) setEndTS();
- startup = 0;
+ startup = false;
}
if (feedMode == MODE_NORMAL)
if (feedPosition >= blockSize)
{
feedPosition -= blockSize;
- demuxer.seek();
+ if (!isRadio) demuxer.seek();
}
else
{
class Player : public Thread_TYPE, public Callback
{
public:
- Player(MessageQueue* messageQueue, UCHAR isRecording, UCHAR isRadio);
+ Player(MessageQueue* messageQueue, bool isRecording, bool isRadio);
virtual ~Player();
int init();
Audio* audio;
Video* video;
Demuxer demuxer;
- int startup;
VFeed vfeed;
AFeed afeed;
+
+ bool startup;
bool videoStartup;
+ bool isRecording;
+ bool isRadio;
ULLONG startTS;
ULLONG endTS;
ULLONG streamLength;
ULLONG feedPosition;
UCHAR feedMode;
- UCHAR isRecording;
time_t lastRescan;
UINT blockSize;
UINT startupBlockSize;
unavailableView = NULL;
streamType = tstreamType;
videoMode = video->getMode();
- if (streamType == VDR::RADIO) player = new Player(Command::getInstance(), 0, 1);
- else player = new Player(Command::getInstance(), 0, 0);
+ if (streamType == VDR::RADIO) player = new Player(Command::getInstance(), false, true);
+ else player = new Player(Command::getInstance(), false, false);
player->init();
create(video->getScreenWidth(), video->getScreenHeight());
video = Video::getInstance();
timers = Timers::getInstance();
- player = new Player(Command::getInstance(), 1, 0); // say 0 for radio because buffering will work anyway
+ player = new Player(Command::getInstance(), true, false); // say 0 for radio because buffering will work anyway
player->init();
videoMode = video->getMode();