Module: wine Branch: master Commit: e40dd74d8128483c17839ddeee9dacaed4e7dc22 URL: https://source.winehq.org/git/wine.git/?a=commit;h=e40dd74d8128483c17839ddee...
Author: Michael Müller michael@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@gmail.com Signed-off-by: Alexandre Julliard julliard@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; +}