aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_wmvdrm/SeekLayer.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Plugins/Input/in_wmvdrm/SeekLayer.h')
-rw-r--r--Src/Plugins/Input/in_wmvdrm/SeekLayer.h55
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