From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/Plugins/Input/in_wmvdrm/SeekLayer.h | 55 +++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 Src/Plugins/Input/in_wmvdrm/SeekLayer.h (limited to 'Src/Plugins/Input/in_wmvdrm/SeekLayer.h') 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 -- cgit