mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
149 lines
5.7 KiB
Diff
149 lines
5.7 KiB
Diff
|
From 3cdd530b2c17ee0cdc6a1fcc37b28c180310656a Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||
|
Date: Mon, 8 Feb 2016 14:02:09 +0100
|
||
|
Subject: avifile.dll16: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA.
|
||
|
|
||
|
---
|
||
|
dlls/avifile.dll16/avifile.dll16.spec | 4 +-
|
||
|
dlls/avifile.dll16/main.c | 100 ++++++++++++++++++++++++++++++++++
|
||
|
2 files changed, 102 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/dlls/avifile.dll16/avifile.dll16.spec b/dlls/avifile.dll16/avifile.dll16.spec
|
||
|
index 0e19413..7a1aaea 100644
|
||
|
--- a/dlls/avifile.dll16/avifile.dll16.spec
|
||
|
+++ b/dlls/avifile.dll16/avifile.dll16.spec
|
||
|
@@ -36,13 +36,13 @@
|
||
|
141 pascal AVIFileRelease(long) AVIFileRelease
|
||
|
142 pascal AVIFileInfo(long ptr long) AVIFileInfoA
|
||
|
143 pascal AVIFileGetStream(long ptr long long) AVIFileGetStream
|
||
|
-144 pascal AVIFileCreateStream(long ptr ptr) AVIFileCreateStreamA
|
||
|
+144 pascal AVIFileCreateStream(long ptr ptr) AVIFileCreateStream16
|
||
|
146 pascal AVIFileWriteData(long long ptr long) AVIFileWriteData
|
||
|
147 pascal AVIFileReadData(long long ptr ptr) AVIFileReadData
|
||
|
148 pascal AVIFileEndRecord(long) AVIFileEndRecord
|
||
|
160 pascal AVIStreamAddRef(long) AVIStreamAddRef
|
||
|
161 pascal AVIStreamRelease(long) AVIStreamRelease
|
||
|
-162 pascal AVIStreamInfo(long ptr long) AVIStreamInfoA
|
||
|
+162 pascal AVIStreamInfo(long ptr long) AVIStreamInfo16
|
||
|
163 pascal AVIStreamFindSample(long long long) AVIStreamFindSample
|
||
|
164 pascal AVIStreamReadFormat(long long ptr ptr) AVIStreamReadFormat
|
||
|
165 pascal AVIStreamReadData(long long ptr ptr) AVIStreamReadData
|
||
|
diff --git a/dlls/avifile.dll16/main.c b/dlls/avifile.dll16/main.c
|
||
|
index f780c43..8df1fe5 100644
|
||
|
--- a/dlls/avifile.dll16/main.c
|
||
|
+++ b/dlls/avifile.dll16/main.c
|
||
|
@@ -27,6 +27,27 @@
|
||
|
|
||
|
WINE_DEFAULT_DEBUG_CHANNEL(avifile16);
|
||
|
|
||
|
+typedef struct _AVISTREAMINFO16 {
|
||
|
+ DWORD fccType;
|
||
|
+ DWORD fccHandler;
|
||
|
+ DWORD dwFlags;
|
||
|
+ DWORD dwCaps;
|
||
|
+ WORD wPriority;
|
||
|
+ WORD wLanguage;
|
||
|
+ DWORD dwScale;
|
||
|
+ DWORD dwRate;
|
||
|
+ DWORD dwStart;
|
||
|
+ DWORD dwLength;
|
||
|
+ DWORD dwInitialFrames;
|
||
|
+ DWORD dwSuggestedBufferSize;
|
||
|
+ DWORD dwQuality;
|
||
|
+ DWORD dwSampleSize;
|
||
|
+ RECT16 rcFrame;
|
||
|
+ DWORD dwEditCount;
|
||
|
+ DWORD dwFormatChangeCount;
|
||
|
+ CHAR szName[64];
|
||
|
+} AVISTREAMINFO16, *LPAVISTREAMINFO16, *PAVISTREAMINFO16;
|
||
|
+
|
||
|
struct frame_wrapper16
|
||
|
{
|
||
|
PGETFRAME pg;
|
||
|
@@ -135,3 +156,82 @@ HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg)
|
||
|
HeapFree(GetProcessHeap(), 0, wrapper);
|
||
|
return hr;
|
||
|
}
|
||
|
+
|
||
|
+/***********************************************************************
|
||
|
+ * AVIFileCreateStream (AVIFILE.144)
|
||
|
+ */
|
||
|
+HRESULT WINAPI AVIFileCreateStream16(PAVIFILE pfile, PAVISTREAM *ppavi, LPAVISTREAMINFO16 asi16)
|
||
|
+{
|
||
|
+ AVISTREAMINFOA asi;
|
||
|
+
|
||
|
+ if (!asi16)
|
||
|
+ return AVIFileCreateStreamA(pfile, ppavi, NULL);
|
||
|
+
|
||
|
+ asi.fccType = asi16->fccType;
|
||
|
+ asi.fccHandler = asi16->fccHandler;
|
||
|
+ asi.dwFlags = asi16->dwFlags;
|
||
|
+ asi.dwCaps = asi16->dwCaps;
|
||
|
+ asi.wPriority = asi16->wPriority;
|
||
|
+ asi.wLanguage = asi16->wLanguage;
|
||
|
+ asi.dwScale = asi16->dwScale;
|
||
|
+ asi.dwRate = asi16->dwRate;
|
||
|
+ asi.dwStart = asi16->dwStart;
|
||
|
+ asi.dwLength = asi16->dwLength;
|
||
|
+ asi.dwInitialFrames = asi16->dwInitialFrames;
|
||
|
+ asi.dwSuggestedBufferSize = asi16->dwSuggestedBufferSize;
|
||
|
+ asi.dwQuality = asi16->dwQuality;
|
||
|
+ asi.dwSampleSize = asi16->dwSampleSize;
|
||
|
+ asi.rcFrame.left = asi16->rcFrame.left;
|
||
|
+ asi.rcFrame.top = asi16->rcFrame.top;
|
||
|
+ asi.rcFrame.right = asi16->rcFrame.right;
|
||
|
+ asi.rcFrame.bottom = asi16->rcFrame.bottom;
|
||
|
+ asi.dwEditCount = asi16->dwEditCount;
|
||
|
+ asi.dwFormatChangeCount = asi16->dwFormatChangeCount;
|
||
|
+ memcpy(&asi.szName, &asi16->szName, sizeof(asi.szName));
|
||
|
+
|
||
|
+ return AVIFileCreateStreamA(pfile, ppavi, &asi);
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
+/***********************************************************************
|
||
|
+ * AVIStreamInfo (AVIFILE.162)
|
||
|
+ */
|
||
|
+HRESULT WINAPI AVIStreamInfo16(PAVISTREAM pstream, LPAVISTREAMINFO16 asi16, LONG size)
|
||
|
+{
|
||
|
+ AVISTREAMINFOA asi;
|
||
|
+ HRESULT hr;
|
||
|
+
|
||
|
+ if (!asi16)
|
||
|
+ return AVIStreamInfoA(pstream, NULL, size);
|
||
|
+
|
||
|
+ if (size < sizeof(AVISTREAMINFO16))
|
||
|
+ return AVIERR_BADSIZE;
|
||
|
+
|
||
|
+ hr = AVIStreamInfoA(pstream, &asi, sizeof(asi));
|
||
|
+ if (SUCCEEDED(hr))
|
||
|
+ {
|
||
|
+ asi16->fccType = asi.fccType;
|
||
|
+ asi16->fccHandler = asi.fccHandler;
|
||
|
+ asi16->dwFlags = asi.dwFlags;
|
||
|
+ asi16->dwCaps = asi.dwCaps;
|
||
|
+ asi16->wPriority = asi.wPriority;
|
||
|
+ asi16->wLanguage = asi.wLanguage;
|
||
|
+ asi16->dwScale = asi.dwScale;
|
||
|
+ asi16->dwRate = asi.dwRate;
|
||
|
+ asi16->dwStart = asi.dwStart;
|
||
|
+ asi16->dwLength = asi.dwLength;
|
||
|
+ asi16->dwInitialFrames = asi.dwInitialFrames;
|
||
|
+ asi16->dwSuggestedBufferSize = asi.dwSuggestedBufferSize;
|
||
|
+ asi16->dwQuality = asi.dwQuality;
|
||
|
+ asi16->dwSampleSize = asi.dwSampleSize;
|
||
|
+ asi16->rcFrame.left = asi.rcFrame.left;
|
||
|
+ asi16->rcFrame.top = asi.rcFrame.top;
|
||
|
+ asi16->rcFrame.right = asi.rcFrame.right;
|
||
|
+ asi16->rcFrame.bottom = asi.rcFrame.bottom;
|
||
|
+ asi16->dwEditCount = asi.dwEditCount;
|
||
|
+ asi16->dwFormatChangeCount = asi.dwFormatChangeCount;
|
||
|
+ memcpy(&asi16->szName, &asi.szName, sizeof(asi.szName));
|
||
|
+ }
|
||
|
+
|
||
|
+ return hr;
|
||
|
+}
|
||
|
--
|
||
|
2.7.0
|
||
|
|