56 lines
1.0 KiB
C++
56 lines
1.0 KiB
C++
#ifndef NULLSOFT_SEEKLAYERH
|
|
#define NULLSOFT_SEEKLAYERH
|
|
|
|
#include "WMHandler.h"
|
|
#include "../nu/AutoLock.h"
|
|
#include "ClockLayer.h"
|
|
class SeekLayer : public WMHandler
|
|
{
|
|
enum PlayState
|
|
{
|
|
PLAYSTATE_NONE,
|
|
PLAYSTATE_OPENING,
|
|
PLAYSTATE_OPENED,
|
|
PLAYSTATE_BUFFERING,
|
|
PLAYSTATE_STARTED,
|
|
PLAYSTATE_STOPPED,
|
|
PLAYSTATE_CLOSED,
|
|
PLAYSTATE_SEEK,
|
|
|
|
};
|
|
public:
|
|
SeekLayer(IWMReader *_reader, ClockLayer *_clock);
|
|
void SeekTo(long position);
|
|
void Pause();
|
|
void Unpause();
|
|
void Stop();
|
|
int Open(const wchar_t *filename, IWMReaderCallback *callback);
|
|
|
|
private:
|
|
void BufferingStarted();
|
|
void BufferingStopped();
|
|
void Started();
|
|
void Stopped();
|
|
void Closed();
|
|
void Opened();
|
|
void OpenCalled();
|
|
void Connecting();
|
|
void Locating();
|
|
void EndOfFile();
|
|
void OpenFailed();
|
|
void Error();
|
|
|
|
private:
|
|
void DoStop();
|
|
bool needPause, paused, needStop;
|
|
long seekPos;
|
|
Nullsoft::Utility::LockGuard seekGuard;
|
|
IWMReader *reader;
|
|
IWMReaderAdvanced2 *reader2;
|
|
IWMMetadataEditor *metadata;
|
|
ClockLayer *clock;
|
|
PlayState playState, oldState_buffer;
|
|
};
|
|
|
|
#endif
|