mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
Added patch to convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA in avifile.dll16.
This commit is contained in:
parent
24adcdb199
commit
731dde08ca
@ -0,0 +1,148 @@
|
||||
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
|
||||
|
@ -1 +1,2 @@
|
||||
Fixes: Correctly convert result of AVIStreamGetFrame to a segptr in avifile.dll16
|
||||
Fixes: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA in avifile.dll16
|
||||
|
@ -2779,8 +2779,10 @@ fi
|
||||
# |
|
||||
if test "$enable_avifile_dll16_AVIStreamGetFrame" -eq 1; then
|
||||
patch_apply avifile.dll16-AVIStreamGetFrame/0001-avifile-Correctly-convert-result-of-AVIStreamGetFram.patch
|
||||
patch_apply avifile.dll16-AVIStreamGetFrame/0002-avifile-Convert-between-AVISTREAMINFO-16-bit-and-AVI.patch
|
||||
(
|
||||
echo '+ { "Michael Müller", "avifile.dll16: Correctly convert result of AVIStreamGetFrame to a segptr.", 1 },';
|
||||
echo '+ { "Michael Müller", "avifile.dll16: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user