=?UTF-8?Q?Michael=20M=C3=BCller=20?=: avifile.dll16: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA.

Alexandre Julliard julliard at winehq.org
Thu Apr 25 16:39:26 CDT 2019


Module: wine
Branch: master
Commit: e40dd74d8128483c17839ddeee9dacaed4e7dc22
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=e40dd74d8128483c17839ddeee9dacaed4e7dc22

Author: Michael Müller <michael at fds-team.de>
Date:   Thu Apr 25 09:12:26 2019 +0200

avifile.dll16: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA.

Signed-off-by: Vijay Kiran Kamuju <infyquest at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 2b5fb91..5dabd7f 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 9e1faac..6c2d992 100644
--- a/dlls/avifile.dll16/main.c
+++ b/dlls/avifile.dll16/main.c
@@ -23,6 +23,27 @@
 #include "wingdi.h"
 #include "vfw.h"
 
+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;
@@ -131,3 +152,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;
+    strcpy( asi.szName, asi16->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;
+        strcpy( asi16->szName, asi.szName );
+    }
+
+    return hr;
+}




More information about the wine-cvs mailing list