diff options
Diffstat (limited to 'Src/Plugins/Input/in_wmvdrm/SeekLayer.h')
-rw-r--r-- | Src/Plugins/Input/in_wmvdrm/SeekLayer.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_wmvdrm/SeekLayer.h b/Src/Plugins/Input/in_wmvdrm/SeekLayer.h new file mode 100644 index 00000000..7b896845 --- /dev/null +++ b/Src/Plugins/Input/in_wmvdrm/SeekLayer.h @@ -0,0 +1,55 @@ +#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 |