aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_wmvdrm/WMHandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Plugins/Input/in_wmvdrm/WMHandler.h')
-rw-r--r--Src/Plugins/Input/in_wmvdrm/WMHandler.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_wmvdrm/WMHandler.h b/Src/Plugins/Input/in_wmvdrm/WMHandler.h
new file mode 100644
index 00000000..b2ac60f9
--- /dev/null
+++ b/Src/Plugins/Input/in_wmvdrm/WMHandler.h
@@ -0,0 +1,113 @@
+#ifndef NULLSOFT_WMHANDLERH
+#define NULLSOFT_WMHANDLERH
+#include <wmsdk.h>
+
+#define NEXT(x) { if (next) next->x; }
+
+enum DRM_INDIVIDUALIZATION_STATUS {
+ INDI_UNDEFINED = 0x0000,
+ INDI_BEGIN = 0x0001,
+ INDI_SUCCEED = 0x0002,
+ INDI_FAIL = 0x0004,
+ INDI_CANCEL = 0x0008,
+ INDI_DOWNLOAD = 0x0010,
+ INDI_INSTALL = 0x0020
+};
+
+enum DRM_HTTP_STATUS {
+ HTTP_NOTINITIATED = 0,
+ HTTP_CONNECTING = 1,
+ HTTP_REQUESTING = 2,
+ HTTP_RECEIVING = 3,
+ HTTP_COMPLETED = 4
+};
+
+typedef struct _WMGetLicenseData {
+ DWORD dwSize;
+ HRESULT hr;
+ WCHAR* wszURL;
+ WCHAR* wszLocalFilename;
+ BYTE* pbPostData;
+ DWORD dwPostDataSize;
+} WM_GET_LICENSE_DATA;
+
+
+typedef struct _WMIndividualizeStatus {
+ HRESULT hr;
+ DRM_INDIVIDUALIZATION_STATUS enIndiStatus;
+ LPSTR pszIndiRespUrl;
+ DWORD dwHTTPRequest;
+ DRM_HTTP_STATUS enHTTPStatus;
+ DWORD dwHTTPReadProgress;
+ DWORD dwHTTPReadTotal;
+} WM_INDIVIDUALIZE_STATUS;
+
+class WMHandler //: public Chainable<WMHandler>
+{
+public:
+ WMHandler();
+ ~WMHandler();
+ WMHandler &operator << (WMHandler &chain);
+ WMHandler &operator >> (WMHandler &chain);
+ WMHandler&operator << (WMHandler *chain);
+ WMHandler &operator >> (WMHandler *chain);
+ WMHandler &First();
+
+ virtual void Opened() NEXT(Opened())
+ virtual void OpenFailed();
+ virtual void ReOpen();
+
+ virtual void SampleReceived(QWORD &timeStamp, QWORD &duration, unsigned long &outputNum, unsigned long &flags, INSSBuffer *&sample)
+ NEXT(SampleReceived(timeStamp, duration, outputNum, flags, sample))
+
+ virtual void AudioDataReceived(void *data, unsigned long sizeBytes, DWORD timestamp)
+ NEXT(AudioDataReceived(data, sizeBytes, timestamp))
+
+ virtual void TimeReached(QWORD &timeReached) NEXT(TimeReached(timeReached))
+ virtual void NewSourceFlags() NEXT(NewSourceFlags())
+ virtual void HasVideo(bool &video) NEXT(HasVideo(video))
+ virtual void Started();
+ virtual void Stopped();
+ virtual void Stopping() NEXT(Stopping())
+ virtual void DRMExpired() NEXT(DRMExpired())
+
+ virtual void Error();
+
+ virtual void Kill() NEXT(Kill())
+ virtual void PreRollComplete();
+
+ virtual void EndOfFile();
+ virtual void Closed();
+ virtual void BufferingStarted();
+ virtual void BufferingStopped();
+ virtual void NewMetadata();
+ virtual void Connecting() NEXT(Connecting())
+ virtual void Locating() NEXT(Locating())
+
+ virtual void Individualize();
+ virtual void NeedsIndividualization() NEXT(NeedsIndividualization())
+ virtual void IndividualizeStatus(WM_INDIVIDUALIZE_STATUS *status) NEXT(IndividualizeStatus(status))
+
+ virtual void SignatureState(WMT_DRMLA_TRUST *&state);
+ virtual void NoRights(wchar_t *licenseData);
+ virtual void NoRightsEx(WM_GET_LICENSE_DATA *&licenseData);
+ virtual void AcquireLicense(WM_GET_LICENSE_DATA *&licenseData);
+ virtual void LicenseRequired();
+ virtual void BrowserClosed() NEXT(BrowserClosed())
+ virtual void LicenseAcquired() NEXT(LicenseAcquired())
+ virtual void AllocateOutput(long outputNum, long bufferSize, INSSBuffer *&buffer);
+ virtual void MonitorCancelled() NEXT(MonitorCancelled())
+ virtual void SilentCancelled() NEXT(SilentCancelled())
+
+ virtual void VideoCatchup(QWORD time);
+ virtual void TimeToSync(QWORD timeStamp, __int64 &diff);
+ virtual void OpenCalled() NEXT(OpenCalled())
+
+ virtual void InitPlaylistBurn() NEXT(InitPlaylistBurn())
+ virtual void AccessDenied() NEXT(AccessDenied())
+
+private:
+ WMHandler *next, *prev;
+};
+#undef NEXT
+#endif