]> git.sesse.net Git - vlc/blobdiff - libs/loader/afl.c
Removes trailing spaces. Removes tabs.
[vlc] / libs / loader / afl.c
index 421414874a1e77a222465e7a86bfd7af55360aa7..5f6b59a26bc18a5d232389b4e3e0d4f41355649d 100644 (file)
@@ -33,7 +33,7 @@
   Its content will be based mainly on wine/dlls/msacm32
   actually, for audio decompression only the following functions
   are needed:
-  
   acmStreamOpen ( takes formats of src and dest, returns stream handle )
   acmStreamPrepareHeader ( takes stream handler and info on data )
   acmStreamConvert ( the same as PrepareHeader )
   acmStreamClose
   acmStreamSize
   maybe acmStreamReset
-  
-  In future I'll also add functions for format enumeration, 
+  In future I'll also add functions for format enumeration,
   but not right now.
 
   Modified for use with MPlayer, detailed CVS changelog at
   http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
-  
 ***************************************************************************/
 #include "config.h"
 
@@ -82,30 +82,30 @@ static inline PWINE_ACMSTREAM ACM_GetStream(HACMSTREAM has)
  *           acmDriverAddA (MSACM32.2)
  */
 MMRESULT WINAPI acmDriverAddA(PHACMDRIVERID phadid, HINSTANCE hinstModule,
-                             LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
+                  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
 {
     if (!phadid)
-       return MMSYSERR_INVALPARAM;
-    
+    return MMSYSERR_INVALPARAM;
     /* Check if any unknown flags */
-    if (fdwAdd & 
-       ~(ACM_DRIVERADDF_FUNCTION|ACM_DRIVERADDF_NOTIFYHWND|
-         ACM_DRIVERADDF_GLOBAL))
-       return MMSYSERR_INVALFLAG;
-    
+    if (fdwAdd &
+    ~(ACM_DRIVERADDF_FUNCTION|ACM_DRIVERADDF_NOTIFYHWND|
+      ACM_DRIVERADDF_GLOBAL))
+    return MMSYSERR_INVALFLAG;
     /* Check if any incompatible flags */
-    if ((fdwAdd & ACM_DRIVERADDF_FUNCTION) && 
-       (fdwAdd & ACM_DRIVERADDF_NOTIFYHWND))
-       return MMSYSERR_INVALFLAG;
-    
-    /* FIXME: in fact, should GetModuleFileName(hinstModule) and do a 
+    if ((fdwAdd & ACM_DRIVERADDF_FUNCTION) &&
+    (fdwAdd & ACM_DRIVERADDF_NOTIFYHWND))
+    return MMSYSERR_INVALFLAG;
+    /* FIXME: in fact, should GetModuleFileName(hinstModule) and do a
      * LoadDriver on it, to be sure we can call SendDriverMessage on the
      * hDrvr handle.
      */
     *phadid = (HACMDRIVERID) MSACM_RegisterDriver(NULL, 0, hinstModule);
-    
     /* FIXME: lParam, dwPriority and fdwAdd ignored */
-    
     return MMSYSERR_NOERROR;
 }
 
@@ -116,26 +116,26 @@ MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose)
 {
     PWINE_ACMDRIVER  p;
     PWINE_ACMDRIVER* tp;
-    
     if (fdwClose)
-       return MMSYSERR_INVALFLAG;
-    
+    return MMSYSERR_INVALFLAG;
     p = MSACM_GetDriver(had);
     if (!p)
-       return MMSYSERR_INVALHANDLE;
+    return MMSYSERR_INVALHANDLE;
 
     for (tp = &(p->obj.pACMDriverID->pACMDriverList); *tp; *tp = (*tp)->pNextACMDriver) {
-       if (*tp == p) {
-           *tp = (*tp)->pNextACMDriver;
-           break;
-       }
+    if (*tp == p) {
+        *tp = (*tp)->pNextACMDriver;
+        break;
     }
-    
+    }
     if (p->hDrvr && !p->obj.pACMDriverID->pACMDriverList)
-       CloseDriver(p->hDrvr);
-    
+    CloseDriver(p->hDrvr);
     HeapFree(MSACM_hHeap, 0, p);
-    
     return MMSYSERR_NOERROR;
 }
 
@@ -144,28 +144,28 @@ MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose)
  */
 MMRESULT WINAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum)
 {
-    PWINE_ACMDRIVERID  p;
-    DWORD              fdwSupport;
+    PWINE_ACMDRIVERID    p;
+    DWORD        fdwSupport;
 
     if (!fnCallback) {
-       return MMSYSERR_INVALPARAM;
+    return MMSYSERR_INVALPARAM;
     }
-    
     if (fdwEnum && ~(ACM_DRIVERENUMF_NOLOCAL|ACM_DRIVERENUMF_DISABLED)) {
-       return MMSYSERR_INVALFLAG;
+    return MMSYSERR_INVALFLAG;
     }
-    
     for (p = MSACM_pFirstACMDriverID; p; p = p->pNextACMDriverID) {
-       fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
-       if (!p->bEnabled) {
-           if (fdwEnum & ACM_DRIVERENUMF_DISABLED)
-               fdwSupport |= ACMDRIVERDETAILS_SUPPORTF_DISABLED;
-           else
-               continue;
-       }
-       (*fnCallback)((HACMDRIVERID) p, dwInstance, fdwSupport);
+    fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
+    if (!p->bEnabled) {
+        if (fdwEnum & ACM_DRIVERENUMF_DISABLED)
+        fdwSupport |= ACMDRIVERDETAILS_SUPPORTF_DISABLED;
+        else
+        continue;
     }
-    
+    (*fnCallback)((HACMDRIVERID) p, dwInstance, fdwSupport);
+    }
     return MMSYSERR_NOERROR;
 }
 
@@ -175,19 +175,19 @@ MMRESULT WINAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWOR
 MMRESULT WINAPI acmDriverID(HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID)
 {
     PWINE_ACMOBJ pao;
-    
     pao = MSACM_GetObj(hao);
     if (!pao)
-       return MMSYSERR_INVALHANDLE;
-    
+    return MMSYSERR_INVALHANDLE;
     if (!phadid)
-       return MMSYSERR_INVALPARAM;
-    
+    return MMSYSERR_INVALPARAM;
     if (fdwDriverID)
-       return MMSYSERR_INVALFLAG;
-    
+    return MMSYSERR_INVALFLAG;
     *phadid = (HACMDRIVERID) pao->pACMDriverID;
-    
     return MMSYSERR_NOERROR;
 }
 
@@ -200,13 +200,13 @@ LRESULT WINAPI acmDriverMessage(HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARA
 {
     PWINE_ACMDRIVER pad = MSACM_GetDriver(had);
     if (!pad)
-       return MMSYSERR_INVALPARAM;
-    
+    return MMSYSERR_INVALPARAM;
     /* FIXME: Check if uMsg legal */
-    
     if (!SendDriverMessage(pad->hDrvr, uMsg, lParam1, lParam2))
-       return MMSYSERR_NOTSUPPORTED;
-    
+    return MMSYSERR_NOTSUPPORTED;
     return MMSYSERR_NOERROR;
 }
 
@@ -216,43 +216,43 @@ LRESULT WINAPI acmDriverMessage(HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARA
  */
 MMRESULT WINAPI acmDriverOpen(PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen)
 {
-    PWINE_ACMDRIVERID  padid;
-    PWINE_ACMDRIVER    pad;
-    ICOPEN             icopen;
-    HDRVR              hdrv;
+    PWINE_ACMDRIVERID    padid;
+    PWINE_ACMDRIVER    pad;
+    ICOPEN        icopen;
+    HDRVR        hdrv;
 
 
     TRACE("(%p, %x, %08lu)\n", phad, hadid, fdwOpen);
 
     if (!phad)
-       return MMSYSERR_INVALPARAM;
-    
-    padid = MSACM_GetDriverID(hadid); 
+    return MMSYSERR_INVALPARAM;
+    padid = MSACM_GetDriverID(hadid);
     if (!padid)
-       return MMSYSERR_INVALHANDLE;
-    
+    return MMSYSERR_INVALHANDLE;
     if (fdwOpen)
-       return MMSYSERR_INVALFLAG;
-    
+    return MMSYSERR_INVALFLAG;
     pad = (PWINE_ACMDRIVER) HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVER));
     if (!pad)
-       return MMSYSERR_NOMEM;
+    return MMSYSERR_NOMEM;
 
     pad->obj.pACMDriverID = padid;
-    icopen.fccType             = mmioFOURCC('a', 'u', 'd', 'c');
-    icopen.fccHandler          = (long)padid->pszFileName;
-    icopen.dwSize              = sizeof(ICOPEN);
-    icopen.dwFlags             = 0;
+    icopen.fccType        = mmioFOURCC('a', 'u', 'd', 'c');
+    icopen.fccHandler        = (long)padid->pszFileName;
+    icopen.dwSize        = sizeof(ICOPEN);
+    icopen.dwFlags        = 0;
 
     icopen.pV1Reserved = padid->pszFileName;
     if (!padid->hInstModule)
-       pad->hDrvr = OpenDriverA((long)&icopen);
+    pad->hDrvr = OpenDriverA((long)&icopen);
     else
-       pad->hDrvr = padid->hInstModule;
-    
+    pad->hDrvr = padid->hInstModule;
     if (!pad->hDrvr) {
-       HeapFree(MSACM_hHeap, 0, pad);
-       return MMSYSERR_ERROR;
+    HeapFree(MSACM_hHeap, 0, pad);
+    return MMSYSERR_ERROR;
     }
 
     pad->pfnDriverProc = GetProcAddress(pad->hDrvr, "DriverProc");
@@ -273,16 +273,16 @@ MMRESULT WINAPI acmDriverOpen(PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpe
 MMRESULT WINAPI acmDriverRemove(HACMDRIVERID hadid, DWORD fdwRemove)
 {
     PWINE_ACMDRIVERID padid;
-    
     padid = MSACM_GetDriverID(hadid);
     if (!padid)
-       return MMSYSERR_INVALHANDLE;
-    
+    return MMSYSERR_INVALHANDLE;
     if (fdwRemove)
-       return MMSYSERR_INVALFLAG;
-    
+    return MMSYSERR_INVALFLAG;
     MSACM_UnregisterDriver(padid);
-    
     return MMSYSERR_NOERROR;
 }
 
@@ -295,18 +295,18 @@ PWINE_ACMDRIVERID MSACM_pFirstACMDriverID = NULL;
 PWINE_ACMDRIVERID MSACM_pLastACMDriverID = NULL;
 
 /***********************************************************************
- *           MSACM_RegisterDriver32() 
+ *           MSACM_RegisterDriver32()
  */
 PWINE_ACMDRIVERID MSACM_RegisterDriver(const char* pszFileName,
-                                      WORD wFormatTag,
-                                      HINSTANCE hinstModule)
+                       WORD wFormatTag,
+                       HINSTANCE hinstModule)
 {
     PWINE_ACMDRIVERID padid;
 
     TRACE("('%s', '%x', 0x%08x)\n", pszFileName, wFormatTag, hinstModule);
 
 #ifndef WIN32_LOADER
-       MSACM_hHeap = GetProcessHeap();
+    MSACM_hHeap = GetProcessHeap();
 #endif
     padid = (PWINE_ACMDRIVERID) HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVERID));
     padid->pszFileName = (char*)malloc(strlen(pszFileName)+1);
@@ -319,11 +319,11 @@ PWINE_ACMDRIVERID MSACM_RegisterDriver(const char* pszFileName,
     padid->pNextACMDriverID = NULL;
     padid->pPrevACMDriverID = MSACM_pLastACMDriverID;
     if (MSACM_pLastACMDriverID)
-       MSACM_pLastACMDriverID->pNextACMDriverID = padid;
+    MSACM_pLastACMDriverID->pNextACMDriverID = padid;
     MSACM_pLastACMDriverID = padid;
     if (!MSACM_pFirstACMDriverID)
-       MSACM_pFirstACMDriverID = padid;
-    
+    MSACM_pFirstACMDriverID = padid;
     return padid;
 }
 
@@ -334,27 +334,27 @@ PWINE_ACMDRIVERID MSACM_RegisterDriver(const char* pszFileName,
 PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p)
 {
     PWINE_ACMDRIVERID pNextACMDriverID;
-    
     while (p->pACMDriverList)
-       acmDriverClose((HACMDRIVER) p->pACMDriverList, 0);
-    
+    acmDriverClose((HACMDRIVER) p->pACMDriverList, 0);
     if (p->pszFileName)
-       free(p->pszFileName);
-    
+    free(p->pszFileName);
     if (p == MSACM_pFirstACMDriverID)
-       MSACM_pFirstACMDriverID = p->pNextACMDriverID;
+    MSACM_pFirstACMDriverID = p->pNextACMDriverID;
     if (p == MSACM_pLastACMDriverID)
-       MSACM_pLastACMDriverID = p->pPrevACMDriverID;
+    MSACM_pLastACMDriverID = p->pPrevACMDriverID;
 
     if (p->pPrevACMDriverID)
-       p->pPrevACMDriverID->pNextACMDriverID = p->pNextACMDriverID;
+    p->pPrevACMDriverID->pNextACMDriverID = p->pNextACMDriverID;
     if (p->pNextACMDriverID)
-       p->pNextACMDriverID->pPrevACMDriverID = p->pPrevACMDriverID;
-    
+    p->pNextACMDriverID->pPrevACMDriverID = p->pPrevACMDriverID;
     pNextACMDriverID = p->pNextACMDriverID;
-    
     HeapFree(MSACM_hHeap, 0, p);
-    
     return pNextACMDriverID;
 }
 
@@ -371,7 +371,7 @@ void MSACM_UnregisterAllDrivers(void)
 }
 
 /***********************************************************************
- *           MSACM_GetDriverID32() 
+ *           MSACM_GetDriverID32()
  */
 PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID)
 {
@@ -400,25 +400,25 @@ PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj)
  *           acmStreamOpen (MSACM32.40)
  */
 MMRESULT WINAPI acmStreamOpen(PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
-                             PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
-                             DWORD dwInstance, DWORD fdwOpen)
+                  PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
+                  DWORD dwInstance, DWORD fdwOpen)
 {
-    PWINE_ACMSTREAM    was;
-    PWINE_ACMDRIVER    wad;
-    MMRESULT           ret;
-    int                        wfxSrcSize;
-    int                        wfxDstSize;
-    
+    PWINE_ACMSTREAM    was;
+    PWINE_ACMDRIVER    wad;
+    MMRESULT        ret;
+    int            wfxSrcSize;
+    int            wfxDstSize;
     TRACE("(%p, 0x%08x, %p, %p, %p, %ld, %ld, %ld)\n",
-         phas, had, pwfxSrc, pwfxDst, pwfltr, dwCallback, dwInstance, fdwOpen);
+      phas, had, pwfxSrc, pwfxDst, pwfltr, dwCallback, dwInstance, fdwOpen);
 
-    TRACE("src [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n", 
-         pwfxSrc->wFormatTag, pwfxSrc->nChannels, pwfxSrc->nSamplesPerSec, pwfxSrc->nAvgBytesPerSec, 
-         pwfxSrc->nBlockAlign, pwfxSrc->wBitsPerSample, pwfxSrc->cbSize);
+    TRACE("src [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n",
+      pwfxSrc->wFormatTag, pwfxSrc->nChannels, pwfxSrc->nSamplesPerSec, pwfxSrc->nAvgBytesPerSec,
+      pwfxSrc->nBlockAlign, pwfxSrc->wBitsPerSample, pwfxSrc->cbSize);
 
-    TRACE("dst [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n", 
-         pwfxDst->wFormatTag, pwfxDst->nChannels, pwfxDst->nSamplesPerSec, pwfxDst->nAvgBytesPerSec, 
-         pwfxDst->nBlockAlign, pwfxDst->wBitsPerSample, pwfxDst->cbSize);
+    TRACE("dst [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n",
+      pwfxDst->wFormatTag, pwfxDst->nChannels, pwfxDst->nSamplesPerSec, pwfxDst->nAvgBytesPerSec,
+      pwfxDst->nBlockAlign, pwfxDst->wBitsPerSample, pwfxDst->cbSize);
 
 #define SIZEOF_WFX(wfx) (sizeof(WAVEFORMATEX) + ((wfx->wFormatTag == WAVE_FORMAT_PCM) ? 0 : wfx->cbSize))
     wfxSrcSize = SIZEOF_WFX(pwfxSrc);
@@ -427,7 +427,7 @@ MMRESULT WINAPI acmStreamOpen(PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pw
 
     was = (PWINE_ACMSTREAM) HeapAlloc(MSACM_hHeap, 0, sizeof(*was) + wfxSrcSize + wfxDstSize + ((pwfltr) ? sizeof(WAVEFILTER) : 0));
     if (was == NULL)
-       return MMSYSERR_NOMEM;
+    return MMSYSERR_NOMEM;
     was->drvInst.cbStruct = sizeof(was->drvInst);
     was->drvInst.pwfxSrc = (PWAVEFORMATEX)((LPSTR)was + sizeof(*was));
     memcpy(was->drvInst.pwfxSrc, pwfxSrc, wfxSrcSize);
@@ -437,106 +437,106 @@ MMRESULT WINAPI acmStreamOpen(PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pw
     was->drvInst.pwfxDst = (PWAVEFORMATEX)((LPSTR)was + sizeof(*was) + wfxSrcSize);
     memcpy(was->drvInst.pwfxDst, pwfxDst, wfxDstSize);
     if (pwfltr) {
-       was->drvInst.pwfltr = (PWAVEFILTER)((LPSTR)was + sizeof(*was) + wfxSrcSize + wfxDstSize);
-       memcpy(was->drvInst.pwfltr, pwfltr, sizeof(WAVEFILTER));
+    was->drvInst.pwfltr = (PWAVEFILTER)((LPSTR)was + sizeof(*was) + wfxSrcSize + wfxDstSize);
+    memcpy(was->drvInst.pwfltr, pwfltr, sizeof(WAVEFILTER));
     } else {
-       was->drvInst.pwfltr = NULL;
+    was->drvInst.pwfltr = NULL;
     }
-    was->drvInst.dwCallback = dwCallback;    
+    was->drvInst.dwCallback = dwCallback;
     was->drvInst.dwInstance = dwInstance;
     was->drvInst.fdwOpen = fdwOpen;
-    was->drvInst.fdwDriver = 0L;  
-    was->drvInst.dwDriver = 0L;     
+    was->drvInst.fdwDriver = 0L;
+    was->drvInst.dwDriver = 0L;
     was->drvInst.has = (HACMSTREAM)was;
-    
     if (had) {
-       if (!(wad = MSACM_GetDriver(had))) {
-           ret = MMSYSERR_INVALPARAM;
-           goto errCleanUp;
-       }
-       
-       was->obj.pACMDriverID = wad->obj.pACMDriverID;
-       was->pDrv = wad;
-       was->hAcmDriver = 0; /* not to close it in acmStreamClose */
-
-       ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
-       if (ret != MMSYSERR_NOERROR)
-           goto errCleanUp;
+    if (!(wad = MSACM_GetDriver(had))) {
+        ret = MMSYSERR_INVALPARAM;
+        goto errCleanUp;
+    }
+    
+    was->obj.pACMDriverID = wad->obj.pACMDriverID;
+    was->pDrv = wad;
+    was->hAcmDriver = 0; /* not to close it in acmStreamClose */
+
+    ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
+    if (ret != MMSYSERR_NOERROR)
+        goto errCleanUp;
     } else {
-       PWINE_ACMDRIVERID wadi;
-       short drv_tag;
-       ret = ACMERR_NOTPOSSIBLE;
-/*     if(pwfxSrc->wFormatTag==1)//compression
-           drv_tag=pwfxDst->wFormatTag;
-           else
-           if(pwfxDst->wFormatTag==1)//decompression
-               drv_tag=pwfxSrc->wFormatTag;
-               else
-               goto errCleanUp;
-
-           ret=acmDriverOpen2(drv_tag); 
-           if (ret == MMSYSERR_NOERROR) {
-               if ((wad = MSACM_GetDriver(had)) != 0) {
-                   was->obj.pACMDriverID = wad->obj.pACMDriverID;
-                   was->pDrv = wad;
-                   was->hAcmDriver = had;
-                   
-                   ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
-                   if (ret == MMSYSERR_NOERROR) {
-                       if (fdwOpen & ACM_STREAMOPENF_QUERY) {
-                           acmDriverClose(had, 0L);
-                       }
-                       break;
-                   }
-               }
-               acmDriverClose(had, 0L);*/
-       //if(MSACM_pFirstACMDriverID==NULL)
-       //    MSACM_RegisterAllDrivers();
-       
-       for (wadi = MSACM_pFirstACMDriverID; wadi; wadi = wadi->pNextACMDriverID)
-       {
-           /* Check Format */
-           if ((int)wadi->wFormatTag != (int)pwfxSrc->wFormatTag) continue;
-
-           ret = acmDriverOpen(&had, (HACMDRIVERID)wadi, 0L);
-           if (ret == MMSYSERR_NOERROR) {
-               if ((wad = MSACM_GetDriver(had)) != 0) {
-                   was->obj.pACMDriverID = wad->obj.pACMDriverID;
-                   was->pDrv = wad;
-                   was->hAcmDriver = had;
-                   
-                   ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
-                   //lhacm - crash printf("RETOPEN %d\n", ret);
+    PWINE_ACMDRIVERID wadi;
+    short drv_tag;
+    ret = ACMERR_NOTPOSSIBLE;
+/*    if(pwfxSrc->wFormatTag==1)//compression
+        drv_tag=pwfxDst->wFormatTag;
+        else
+        if(pwfxDst->wFormatTag==1)//decompression
+        drv_tag=pwfxSrc->wFormatTag;
+        else
+        goto errCleanUp;
+
+        ret=acmDriverOpen2(drv_tag);
+        if (ret == MMSYSERR_NOERROR) {
+        if ((wad = MSACM_GetDriver(had)) != 0) {
+            was->obj.pACMDriverID = wad->obj.pACMDriverID;
+            was->pDrv = wad;
+            was->hAcmDriver = had;
+        
+            ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
+            if (ret == MMSYSERR_NOERROR) {
+            if (fdwOpen & ACM_STREAMOPENF_QUERY) {
+                acmDriverClose(had, 0L);
+            }
+            break;
+            }
+        }
+        acmDriverClose(had, 0L);*/
+    //if(MSACM_pFirstACMDriverID==NULL)
+    //    MSACM_RegisterAllDrivers();
+    
+    for (wadi = MSACM_pFirstACMDriverID; wadi; wadi = wadi->pNextACMDriverID)
+    {
+        /* Check Format */
+        if ((int)wadi->wFormatTag != (int)pwfxSrc->wFormatTag) continue;
+
+        ret = acmDriverOpen(&had, (HACMDRIVERID)wadi, 0L);
+        if (ret == MMSYSERR_NOERROR) {
+        if ((wad = MSACM_GetDriver(had)) != 0) {
+            was->obj.pACMDriverID = wad->obj.pACMDriverID;
+            was->pDrv = wad;
+            was->hAcmDriver = had;
+        
+            ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
+            //lhacm - crash printf("RETOPEN %d\n", ret);
                     //ret = 0;
-                   if (ret == MMSYSERR_NOERROR) {
-                       if (fdwOpen & ACM_STREAMOPENF_QUERY) {
-                           acmDriverClose(had, 0L);
-                       }
-                       break;
-                   }
-               }
-               // no match, close this acm driver and try next one 
-               acmDriverClose(had, 0L);
-           }
-       }
-       if (ret != MMSYSERR_NOERROR) {
-           ret = ACMERR_NOTPOSSIBLE;
-           goto errCleanUp;
-       }
+            if (ret == MMSYSERR_NOERROR) {
+            if (fdwOpen & ACM_STREAMOPENF_QUERY) {
+                acmDriverClose(had, 0L);
+            }
+            break;
+            }
+        }
+        // no match, close this acm driver and try next one
+        acmDriverClose(had, 0L);
+        }
+    }
+    if (ret != MMSYSERR_NOERROR) {
+        ret = ACMERR_NOTPOSSIBLE;
+        goto errCleanUp;
+    }
     }
     ret = MMSYSERR_NOERROR;
     if (!(fdwOpen & ACM_STREAMOPENF_QUERY)) {
-       if (phas)
-           *phas = (HACMSTREAM)was;
-       TRACE("=> (%d)\n", ret);
+    if (phas)
+        *phas = (HACMSTREAM)was;
+    TRACE("=> (%d)\n", ret);
 #ifdef WIN32_LOADER
         CodecAlloc();
 #endif
-       return ret;
+    return ret;
     }
-errCleanUp:            
+errCleanUp:        
     if (phas)
-       *phas = (HACMSTREAM)0;
+    *phas = (HACMSTREAM)0;
     HeapFree(MSACM_hHeap, 0, was);
     TRACE("=> (%d)\n", ret);
     return ret;
@@ -545,19 +545,19 @@ errCleanUp:
 
 MMRESULT WINAPI acmStreamClose(HACMSTREAM has, DWORD fdwClose)
 {
-    PWINE_ACMSTREAM    was;
-    MMRESULT           ret;
-               
+    PWINE_ACMSTREAM    was;
+    MMRESULT        ret;
+        
     TRACE("(0x%08x, %ld)\n", has, fdwClose);
-    
     if ((was = ACM_GetStream(has)) == NULL) {
-       return MMSYSERR_INVALHANDLE;
+    return MMSYSERR_INVALHANDLE;
     }
     ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_CLOSE, (DWORD)&was->drvInst, 0);
     if (ret == MMSYSERR_NOERROR) {
-       if (was->hAcmDriver)
-           acmDriverClose(was->hAcmDriver, 0L);        
-       HeapFree(MSACM_hHeap, 0, was);
+    if (was->hAcmDriver)
+        acmDriverClose(was->hAcmDriver, 0L);    
+    HeapFree(MSACM_hHeap, 0, was);
 #ifdef WIN32_LOADER
         CodecRelease();
 #endif
@@ -569,22 +569,22 @@ MMRESULT WINAPI acmStreamClose(HACMSTREAM has, DWORD fdwClose)
 /***********************************************************************
  *           acmStreamConvert (MSACM32.38)
  */
-MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, PACMSTREAMHEADER pash, 
-                                DWORD fdwConvert)
+MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, PACMSTREAMHEADER pash,
+                 DWORD fdwConvert)
 {
-    PWINE_ACMSTREAM    was;
-    MMRESULT           ret = MMSYSERR_NOERROR;
-    PACMDRVSTREAMHEADER        padsh;
+    PWINE_ACMSTREAM    was;
+    MMRESULT        ret = MMSYSERR_NOERROR;
+    PACMDRVSTREAMHEADER    padsh;
 
     TRACE("(0x%08x, %p, %ld)\n", has, pash, fdwConvert);
 
     if ((was = ACM_GetStream(has)) == NULL)
-       return MMSYSERR_INVALHANDLE;
+    return MMSYSERR_INVALHANDLE;
     if (!pash || pash->cbStruct < sizeof(ACMSTREAMHEADER))
-       return MMSYSERR_INVALPARAM;
+    return MMSYSERR_INVALPARAM;
 
     if (!(pash->fdwStatus & ACMSTREAMHEADER_STATUSF_PREPARED))
-       return ACMERR_UNPREPARED;
+    return ACMERR_UNPREPARED;
 
     /* Note: the ACMSTREAMHEADER and ACMDRVSTREAMHEADER structs are of same
      * size. some fields are private to msacm internals, and are exposed
@@ -594,17 +594,17 @@ MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, PACMSTREAMHEADER pash,
 
     /* check that pointers have not been modified */
     if (padsh->pbPreparedSrc != padsh->pbSrc ||
-       padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
-       padsh->pbPreparedDst != padsh->pbDst ||
-       padsh->cbPreparedDstLength < padsh->cbDstLength) {
-       return MMSYSERR_INVALPARAM;
-    }  
+    padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
+    padsh->pbPreparedDst != padsh->pbDst ||
+    padsh->cbPreparedDstLength < padsh->cbDstLength) {
+    return MMSYSERR_INVALPARAM;
+    }    
 
     padsh->fdwConvert = fdwConvert;
 
     ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_CONVERT, (DWORD)&was->drvInst, (DWORD)padsh);
     if (ret == MMSYSERR_NOERROR) {
-       padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_DONE;
+    padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_DONE;
     }
     TRACE("=> (%d)\n", ret);
     return ret;
@@ -614,24 +614,24 @@ MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, PACMSTREAMHEADER pash,
 /***********************************************************************
  *           acmStreamPrepareHeader (MSACM32.41)
  */
-MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash, 
-                                      DWORD fdwPrepare)
+MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash,
+                       DWORD fdwPrepare)
 {
-    PWINE_ACMSTREAM    was;
-    MMRESULT           ret = MMSYSERR_NOERROR;
-    PACMDRVSTREAMHEADER        padsh;
+    PWINE_ACMSTREAM    was;
+    MMRESULT        ret = MMSYSERR_NOERROR;
+    PACMDRVSTREAMHEADER    padsh;
 
     TRACE("(0x%08x, %p, %ld)\n", has, pash, fdwPrepare);
-    
     if ((was = ACM_GetStream(has)) == NULL)
-       return MMSYSERR_INVALHANDLE;
+    return MMSYSERR_INVALHANDLE;
     if (!pash || pash->cbStruct < sizeof(ACMSTREAMHEADER))
-       return MMSYSERR_INVALPARAM;
+    return MMSYSERR_INVALPARAM;
     if (fdwPrepare)
-       ret = MMSYSERR_INVALFLAG;
+    ret = MMSYSERR_INVALFLAG;
 
     if (pash->fdwStatus & ACMSTREAMHEADER_STATUSF_DONE)
-       return MMSYSERR_NOERROR;
+    return MMSYSERR_NOERROR;
 
     /* Note: the ACMSTREAMHEADER and ACMDRVSTREAMHEADER structs are of same
      * size. some fields are private to msacm internals, and are exposed
@@ -652,22 +652,22 @@ MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash,
 
     ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_PREPARE, (DWORD)&was->drvInst, (DWORD)padsh);
     if (ret == MMSYSERR_NOERROR || ret == MMSYSERR_NOTSUPPORTED) {
-       ret = MMSYSERR_NOERROR;
-       padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE);
-       padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_PREPARED;
-       padsh->fdwPrepared = padsh->fdwStatus;
-       padsh->dwPrepared = 0;
-       padsh->pbPreparedSrc = padsh->pbSrc;
-       padsh->cbPreparedSrcLength = padsh->cbSrcLength;
-       padsh->pbPreparedDst = padsh->pbDst;
-       padsh->cbPreparedDstLength = padsh->cbDstLength;
+    ret = MMSYSERR_NOERROR;
+    padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE);
+    padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_PREPARED;
+    padsh->fdwPrepared = padsh->fdwStatus;
+    padsh->dwPrepared = 0;
+    padsh->pbPreparedSrc = padsh->pbSrc;
+    padsh->cbPreparedSrcLength = padsh->cbSrcLength;
+    padsh->pbPreparedDst = padsh->pbDst;
+    padsh->cbPreparedDstLength = padsh->cbDstLength;
     } else {
-       padsh->fdwPrepared = 0;
-       padsh->dwPrepared = 0;
-       padsh->pbPreparedSrc = 0;
-       padsh->cbPreparedSrcLength = 0;
-       padsh->pbPreparedDst = 0;
-       padsh->cbPreparedDstLength = 0;
+    padsh->fdwPrepared = 0;
+    padsh->dwPrepared = 0;
+    padsh->pbPreparedSrc = 0;
+    padsh->cbPreparedSrcLength = 0;
+    padsh->pbPreparedDst = 0;
+    padsh->cbPreparedDstLength = 0;
     }
     TRACE("=> (%d)\n", ret);
     return ret;
@@ -678,17 +678,17 @@ MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash,
  */
 MMRESULT WINAPI acmStreamReset(HACMSTREAM has, DWORD fdwReset)
 {
-    PWINE_ACMSTREAM    was;
-    MMRESULT           ret = MMSYSERR_NOERROR;
+    PWINE_ACMSTREAM    was;
+    MMRESULT        ret = MMSYSERR_NOERROR;
 
     TRACE("(0x%08x, %ld)\n", has, fdwReset);
 
     if (fdwReset) {
-       ret = MMSYSERR_INVALFLAG;
+    ret = MMSYSERR_INVALFLAG;
     } else if ((was = ACM_GetStream(has)) == NULL) {
-       return MMSYSERR_INVALHANDLE;
+    return MMSYSERR_INVALHANDLE;
     } else if (was->drvInst.fdwOpen & ACM_STREAMOPENF_ASYNC) {
-       ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_RESET, (DWORD)&was->drvInst, 0);
+    ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_RESET, (DWORD)&was->drvInst, 0);
     }
     TRACE("=> (%d)\n", ret);
     return ret;
@@ -697,50 +697,50 @@ MMRESULT WINAPI acmStreamReset(HACMSTREAM has, DWORD fdwReset)
 /***********************************************************************
  *           acmStreamSize (MSACM32.43)
  */
-MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput, 
-                             LPDWORD pdwOutputBytes, DWORD fdwSize)
+MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput,
+                  LPDWORD pdwOutputBytes, DWORD fdwSize)
 {
-    PWINE_ACMSTREAM    was;
-    ACMDRVSTREAMSIZE   adss;
-    MMRESULT           ret;
-    
+    PWINE_ACMSTREAM    was;
+    ACMDRVSTREAMSIZE    adss;
+    MMRESULT        ret;
     TRACE("(0x%08x, %ld, %p, %ld)\n", has, cbInput, pdwOutputBytes, fdwSize);
-    
     if ((was = ACM_GetStream(has)) == NULL) {
-       return MMSYSERR_INVALHANDLE;
+    return MMSYSERR_INVALHANDLE;
     }
     if ((fdwSize & ~ACM_STREAMSIZEF_QUERYMASK) != 0) {
-       return MMSYSERR_INVALFLAG;
+    return MMSYSERR_INVALFLAG;
     }
 
     *pdwOutputBytes = 0L;
-    
     switch (fdwSize & ACM_STREAMSIZEF_QUERYMASK) {
     case ACM_STREAMSIZEF_DESTINATION:
-       adss.cbDstLength = cbInput;
-       adss.cbSrcLength = 0;
-       break;
+    adss.cbDstLength = cbInput;
+    adss.cbSrcLength = 0;
+    break;
     case ACM_STREAMSIZEF_SOURCE:
-       adss.cbSrcLength = cbInput;
-       adss.cbDstLength = 0;
-       break;
-    default:   
-       return MMSYSERR_INVALFLAG;
+    adss.cbSrcLength = cbInput;
+    adss.cbDstLength = 0;
+    break;
+    default:    
+    return MMSYSERR_INVALFLAG;
     }
-    
     adss.cbStruct = sizeof(adss);
     adss.fdwSize = fdwSize;
-    ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_SIZE, 
-                           (DWORD)&was->drvInst, (DWORD)&adss);
+    ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_SIZE,
+                (DWORD)&was->drvInst, (DWORD)&adss);
     if (ret == MMSYSERR_NOERROR) {
-       switch (fdwSize & ACM_STREAMSIZEF_QUERYMASK) {
-       case ACM_STREAMSIZEF_DESTINATION:
-           *pdwOutputBytes = adss.cbSrcLength;
-           break;
-       case ACM_STREAMSIZEF_SOURCE:
-           *pdwOutputBytes = adss.cbDstLength;
-           break;
-       }
+    switch (fdwSize & ACM_STREAMSIZEF_QUERYMASK) {
+    case ACM_STREAMSIZEF_DESTINATION:
+        *pdwOutputBytes = adss.cbSrcLength;
+        break;
+    case ACM_STREAMSIZEF_SOURCE:
+        *pdwOutputBytes = adss.cbDstLength;
+        break;
+    }
     }
     TRACE("=> (%d) [%lu]\n", ret, *pdwOutputBytes);
     return ret;
@@ -749,22 +749,22 @@ MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput,
 /***********************************************************************
  *           acmStreamUnprepareHeader (MSACM32.44)
  */
-MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash, 
-                                        DWORD fdwUnprepare)
+MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash,
+                     DWORD fdwUnprepare)
 {
-    PWINE_ACMSTREAM    was;
-    MMRESULT           ret = MMSYSERR_NOERROR;
-    PACMDRVSTREAMHEADER        padsh;
+    PWINE_ACMSTREAM    was;
+    MMRESULT        ret = MMSYSERR_NOERROR;
+    PACMDRVSTREAMHEADER    padsh;
 
     TRACE("(0x%08x, %p, %ld)\n", has, pash, fdwUnprepare);
-    
     if ((was = ACM_GetStream(has)) == NULL)
-       return MMSYSERR_INVALHANDLE;
+    return MMSYSERR_INVALHANDLE;
     if (!pash || pash->cbStruct < sizeof(ACMSTREAMHEADER))
-       return MMSYSERR_INVALPARAM;
+    return MMSYSERR_INVALPARAM;
 
     if (!(pash->fdwStatus & ACMSTREAMHEADER_STATUSF_PREPARED))
-       return ACMERR_UNPREPARED;
+    return ACMERR_UNPREPARED;
 
     /* Note: the ACMSTREAMHEADER and ACMDRVSTREAMHEADER structs are of same
      * size. some fields are private to msacm internals, and are exposed
@@ -774,18 +774,18 @@ MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash,
 
     /* check that pointers have not been modified */
     if (padsh->pbPreparedSrc != padsh->pbSrc ||
-       padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
-       padsh->pbPreparedDst != padsh->pbDst ||
-       padsh->cbPreparedDstLength < padsh->cbDstLength) {
-       return MMSYSERR_INVALPARAM;
-    }  
+    padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
+    padsh->pbPreparedDst != padsh->pbDst ||
+    padsh->cbPreparedDstLength < padsh->cbDstLength) {
+    return MMSYSERR_INVALPARAM;
+    }    
 
     padsh->fdwConvert = fdwUnprepare;
 
     ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_UNPREPARE, (DWORD)&was->drvInst, (DWORD)padsh);
     if (ret == MMSYSERR_NOERROR || ret == MMSYSERR_NOTSUPPORTED) {
-       ret = MMSYSERR_NOERROR;
-       padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE|ACMSTREAMHEADER_STATUSF_PREPARED);
+    ret = MMSYSERR_NOERROR;
+    padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE|ACMSTREAMHEADER_STATUSF_PREPARED);
     }
     TRACE("=> (%d)\n", ret);
     return ret;