unLock();
}
-void PlayerRadio::skipForward(int seconds)
+void PlayerRadio::skipForward(UINT seconds)
{
lock();
logger->log("PlayerRadio", Log::DEBUG, "SKIP FORWARD %i SECONDS", seconds);
if (currentSeconds == 0) { unLock(); return; } // div by zero
if (currentPacket == 0) { unLock(); return; } // Current pos from demuxer is not valid
- ULONG newPacket = demuxer->getPacketNum() / currentSeconds * (currentSeconds + seconds);
+ ULONG newPacket = currentPacket + (currentPacket * seconds / currentSeconds);
if (newPacket > lengthPackets) { switchState(S_PLAY); unLock(); }
else switchState(S_JUMP, newPacket);
unLock();
}
-void PlayerRadio::skipBackward(int seconds) // FIXME why are these signed?!
+void PlayerRadio::skipBackward(UINT seconds)
{
lock();
logger->log("PlayerRadio", Log::DEBUG, "SKIP BACKWARD %i SECONDS", seconds);
if ((UINT)seconds > currentSeconds)
newPacket = 0;
else
- newPacket = demuxer->getPacketNum() / currentSeconds * (currentSeconds - seconds);
+ newPacket = currentPacket - (currentPacket * seconds / currentSeconds);
switchState(S_JUMP, newPacket);
unLock();
void stop();
void pause();
void jumpToPercent(double percent);
- void skipForward(int seconds);
- void skipBackward(int seconds);
+ void skipForward(UINT seconds);
+ void skipBackward(UINT seconds);
UCHAR getState() { return state; }
ULONG getCurrentSeconds();