aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_wmvdrm/util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Plugins/Input/in_wmvdrm/util.cpp')
-rw-r--r--Src/Plugins/Input/in_wmvdrm/util.cpp169
1 files changed, 169 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_wmvdrm/util.cpp b/Src/Plugins/Input/in_wmvdrm/util.cpp
new file mode 100644
index 00000000..a783cea7
--- /dev/null
+++ b/Src/Plugins/Input/in_wmvdrm/util.cpp
@@ -0,0 +1,169 @@
+#include "main.h"
+#include "resource.h"
+#include <stdio.h>
+#include <strsafe.h>
+
+//static const GUID INVALID_GUID =
+//{ 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } };
+void WaitForEvent(HANDLE hEvent, DWORD msMaxWaitTime)
+{
+ // DWORD i;
+ MSG msg;
+ const unsigned long eachWait = 10;
+ unsigned long totalWait = 0;
+
+ while (WaitForSingleObject(hEvent, eachWait) == WAIT_TIMEOUT)
+ {
+ while (PeekMessage(&msg, (HWND) NULL, 0, 0, PM_REMOVE))
+ {
+ //TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+
+ totalWait += eachWait;
+ if (totalWait >= msMaxWaitTime)
+ break;
+
+ }
+}
+
+char *HRErrorCode(HRESULT hr)
+{
+#define HR_ERROR_CODE(x) case x: return #x
+ switch (hr)
+ {
+ HR_ERROR_CODE(E_OUTOFMEMORY);
+ HR_ERROR_CODE(E_UNEXPECTED);
+ HR_ERROR_CODE(S_OK);
+ HR_ERROR_CODE(S_FALSE);
+ HR_ERROR_CODE(E_NOINTERFACE);
+ HR_ERROR_CODE(NS_E_PROTECTED_CONTENT);
+ HR_ERROR_CODE(E_INVALIDARG);
+ HR_ERROR_CODE(NS_E_DRM_NO_RIGHTS);
+ HR_ERROR_CODE(NS_E_DRM_LICENSE_NOTACQUIRED);
+ HR_ERROR_CODE(NS_E_DRM_ACQUIRING_LICENSE);
+ HR_ERROR_CODE(NS_S_DRM_ACQUIRE_CANCELLED);
+ HR_ERROR_CODE(NS_E_LICENSE_OUTOFDATE);
+ HR_ERROR_CODE(NS_E_LICENSE_INCORRECT_RIGHTS);
+ HR_ERROR_CODE(NS_E_DRM_REOPEN_CONTENT);
+ HR_ERROR_CODE(NS_E_DRM_LICENSE_APPSECLOW);
+ HR_ERROR_CODE(E_ABORT);
+ HR_ERROR_CODE(NS_E_INVALID_REQUEST);
+ HR_ERROR_CODE(NS_S_DRM_LICENSE_ACQUIRED);
+ HR_ERROR_CODE(NS_S_DRM_MONITOR_CANCELLED);
+ HR_ERROR_CODE(NS_E_FILE_NOT_FOUND);
+ HR_ERROR_CODE(NS_E_FILE_OPEN_FAILED);
+ HR_ERROR_CODE(NS_E_SERVER_NOT_FOUND);
+ HR_ERROR_CODE(NS_E_UNRECOGNIZED_STREAM_TYPE);
+ HR_ERROR_CODE(NS_E_NO_STREAM);
+ HR_ERROR_CODE(E_ACCESSDENIED);
+ HR_ERROR_CODE(NS_S_DRM_BURNABLE_TRACK);
+ HR_ERROR_CODE(NS_S_DRM_BURNABLE_TRACK_WITH_PLAYLIST_RESTRICTION);
+ HR_ERROR_CODE(NS_E_DRM_TRACK_EXCEEDED_PLAYLIST_RESTICTION);
+ HR_ERROR_CODE(NS_E_DRM_TRACK_EXCEEDED_TRACKBURN_RESTRICTION);
+ }
+ static char temp[50];
+ StringCchPrintfA(temp, 50, WASABI_API_LNGSTRING(IDS_UNKNOWN_ERROR), hr);
+ return temp;
+
+}
+
+void GuidString(GUID guid, wchar_t *target, size_t len)
+{
+ StringCchPrintf( target, len, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+ (int)guid.Data1, (int)guid.Data2, (int)guid.Data3,
+ (int)guid.Data4[0], (int)guid.Data4[1],
+ (int)guid.Data4[2], (int)guid.Data4[3],
+ (int)guid.Data4[4], (int)guid.Data4[5],
+ (int)guid.Data4[6], (int)guid.Data4[7] );
+}
+
+ const wchar_t *UserTextDescription(unsigned char *binary, size_t size)
+{
+ WM_USER_TEXT *userText = (WM_USER_TEXT *)binary;
+
+ return userText->pwszDescription;
+}
+
+const wchar_t *UserTextString(unsigned char *binary, size_t size)
+{
+ WM_USER_TEXT *userText = (WM_USER_TEXT *)binary;
+
+ return userText->pwszText;
+}
+
+void BinaryString(unsigned char *binary, size_t size, wchar_t *final, size_t len)
+{
+ wchar_t * const start = new wchar_t[2 + size*2 + 1]; // 0x + 2 hex per byte + null terminator
+ wchar_t *target = start;
+ *target++='0';
+ *target++='x';
+
+ size_t i;
+ for (i = 0;i!=size;i++)
+ {
+ wchar_t temp[3] = {0};
+ _itow(binary[i], temp, 16);
+ if (!temp[0])
+ {
+ *target++ = '0';
+ *target++ = '0';
+ }
+ else if (!temp[1])
+ {
+ *target++ = '0';
+ *target++ = temp[0];
+ }
+ else
+ {
+ *target++ = temp[0];
+ *target++ = temp[1];
+ }
+ }
+ *target = 0;
+ lstrcpyn(final, start, len);
+ delete [] start;
+}
+
+GUID StringGUID(const wchar_t *source)
+{
+ if (source == NULL) return INVALID_GUID;
+
+ GUID guid = GUID_NULL;
+ int Data1, Data2, Data3;
+ int Data4[8] = {0};
+
+ // {1B3CA60C-DA98-4826-B4A9-D79748A5FD73}
+ int n = swscanf(source, L" { %08x - %04x - %04x - %02x%02x - %02x%02x%02x%02x%02x%02x } ",
+ &Data1, &Data2, &Data3, Data4 + 0, Data4 + 1,
+ Data4 + 2, Data4 + 3, Data4 + 4, Data4 + 5, Data4 + 6, Data4 + 7 );
+
+ if (n != 11) return INVALID_GUID;
+
+ // Cross assign all the values
+ guid.Data1 = Data1;
+ guid.Data2 = Data2;
+ guid.Data3 = Data3;
+ guid.Data4[0] = Data4[0];
+ guid.Data4[1] = Data4[1];
+ guid.Data4[2] = Data4[2];
+ guid.Data4[3] = Data4[3];
+ guid.Data4[4] = Data4[4];
+ guid.Data4[5] = Data4[5];
+ guid.Data4[6] = Data4[6];
+ guid.Data4[7] = Data4[7];
+
+ return guid;
+}
+
+int DoAboutMessageBox(HWND parent, wchar_t* title, wchar_t* message)
+{
+ MSGBOXPARAMS msgbx = {sizeof(MSGBOXPARAMS),0};
+ msgbx.lpszText = message;
+ msgbx.lpszCaption = title;
+ msgbx.lpszIcon = MAKEINTRESOURCE(102);
+ msgbx.hInstance = GetModuleHandle(0);
+ msgbx.dwStyle = MB_USERICON;
+ msgbx.hwndOwner = parent;
+ return MessageBoxIndirect(&msgbx);
+} \ No newline at end of file