Ignore:
Timestamp:
Sep 15, 2001, 11:47:44 AM (24 years ago)
Author:
sandervl
Message:

restored old version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/msacm32/stream.c

    r6648 r6712  
    11/* -*- tab-width: 8; c-basic-offset: 4 -*- */
    2 /* $Id: stream.c,v 1.2 2001-09-05 13:11:26 bird Exp $ */
     2
    33/*
    44 *      MSACM32 library
    55 *
    66 *      Copyright 1998  Patrik Stridvall
    7  *        1999  Eric Pouech
     7 *                1999  Eric Pouech
    88 */
    99
    1010/* TODO
    11  *  + asynchronous conversion is not implemented
    12  *  + callback/notification
    13  *  * acmStreamMessage
    14  *  + properly close ACM streams
     11 *      + asynchronous conversion is not implemented
     12 *      + callback/notification
     13 *      * acmStreamMessage
     14 *      + properly close ACM streams
    1515 */
    1616
     
    2626
    2727DEFAULT_DEBUG_CHANNEL(msacm);
    28 
    29 static PWINE_ACMSTREAM  ACM_GetStream(HACMSTREAM has)
     28   
     29static PWINE_ACMSTREAM  ACM_GetStream(HACMSTREAM has)
    3030{
    3131    return (PWINE_ACMSTREAM)has;
     
    3737MMRESULT WINAPI acmStreamClose(HACMSTREAM has, DWORD fdwClose)
    3838{
    39     PWINE_ACMSTREAM was;
    40     MMRESULT        ret;
    41 
     39    PWINE_ACMSTREAM     was;
     40    MMRESULT            ret;
     41               
    4242    TRACE("(0x%08x, %ld)\n", has, fdwClose);
    43 
     43   
    4444    if ((was = ACM_GetStream(has)) == NULL) {
    45     return MMSYSERR_INVALHANDLE;
     45        return MMSYSERR_INVALHANDLE;
    4646    }
    4747    ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_CLOSE, (DWORD)&was->drvInst, 0);
    4848    if (ret == MMSYSERR_NOERROR) {
    49     if (was->hAcmDriver)
    50         acmDriverClose(was->hAcmDriver, 0L);
    51     HeapFree(MSACM_hHeap, 0, was);
     49        if (was->hAcmDriver)
     50            acmDriverClose(was->hAcmDriver, 0L);       
     51        HeapFree(MSACM_hHeap, 0, was);
    5252    }
    5353    TRACE("=> (%d)\n", ret);
     
    5858 *           acmStreamConvert (MSACM32.38)
    5959 */
    60 MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, PACMSTREAMHEADER pash,
    61                 DWORD fdwConvert)
    62 {
    63     PWINE_ACMSTREAM was;
    64     MMRESULT        ret = MMSYSERR_NOERROR;
    65     PACMDRVSTREAMHEADER padsh;
     60MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, PACMSTREAMHEADER pash, 
     61                                DWORD fdwConvert)
     62{
     63    PWINE_ACMSTREAM     was;
     64    MMRESULT            ret = MMSYSERR_NOERROR;
     65    PACMDRVSTREAMHEADER padsh;
    6666
    6767    TRACE("(0x%08x, %p, %ld)\n", has, pash, fdwConvert);
    68 
     68   
    6969    if ((was = ACM_GetStream(has)) == NULL)
    70     return MMSYSERR_INVALHANDLE;
     70        return MMSYSERR_INVALHANDLE;
    7171    if (!pash || pash->cbStruct < sizeof(ACMSTREAMHEADER))
    72     return MMSYSERR_INVALPARAM;
     72        return MMSYSERR_INVALPARAM;
    7373
    7474    if (!(pash->fdwStatus & ACMSTREAMHEADER_STATUSF_PREPARED))
    75     return ACMERR_UNPREPARED;
     75        return ACMERR_UNPREPARED;
    7676
    7777    /* Note: the ACMSTREAMHEADER and ACMDRVSTREAMHEADER structs are of same
     
    8383    /* check that pointers have not been modified */
    8484    if (padsh->pbPreparedSrc != padsh->pbSrc ||
    85     padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
    86     padsh->pbPreparedDst != padsh->pbDst ||
    87     padsh->cbPreparedDstLength < padsh->cbDstLength) {
    88     return MMSYSERR_INVALPARAM;
    89     }
     85        padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
     86        padsh->pbPreparedDst != padsh->pbDst ||
     87        padsh->cbPreparedDstLength < padsh->cbDstLength) {
     88        return MMSYSERR_INVALPARAM;
     89    }   
    9090
    9191    padsh->fdwConvert = fdwConvert;
     
    9393    ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_CONVERT, (DWORD)&was->drvInst, (DWORD)padsh);
    9494    if (ret == MMSYSERR_NOERROR) {
    95     padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_DONE;
     95        padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_DONE;
    9696    }
    9797    TRACE("=> (%d)\n", ret);
     
    102102 *           acmStreamMessage (MSACM32.39)
    103103 */
    104 MMRESULT WINAPI acmStreamMessage(HACMSTREAM has, UINT uMsg, LPARAM lParam1,
    105                 LPARAM lParam2)
     104MMRESULT WINAPI acmStreamMessage(HACMSTREAM has, UINT uMsg, LPARAM lParam1, 
     105                                LPARAM lParam2)
    106106{
    107107    FIXME("(0x%08x, %u, %ld, %ld): stub\n", has, uMsg, lParam1, lParam2);
     
    114114 */
    115115MMRESULT WINAPI acmStreamOpen(PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
    116                   PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
    117                   DWORD dwInstance, DWORD fdwOpen)
    118 {
    119     PWINE_ACMSTREAM was;
    120     PWINE_ACMDRIVER wad;
    121     MMRESULT        ret;
    122     int         wfxSrcSize;
    123     int         wfxDstSize;
    124 
     116                              PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
     117                              DWORD dwInstance, DWORD fdwOpen)
     118{
     119    PWINE_ACMSTREAM     was;
     120    PWINE_ACMDRIVER     wad;
     121    MMRESULT            ret;
     122    int                 wfxSrcSize;
     123    int                 wfxDstSize;
     124   
    125125    TRACE("(%p, 0x%08x, %p, %p, %p, %ld, %ld, %ld)\n",
    126       phas, had, pwfxSrc, pwfxDst, pwfltr, dwCallback, dwInstance, fdwOpen);
    127 
    128     TRACE("src [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n",
    129       pwfxSrc->wFormatTag, pwfxSrc->nChannels, pwfxSrc->nSamplesPerSec, pwfxSrc->nAvgBytesPerSec,
    130       pwfxSrc->nBlockAlign, pwfxSrc->wBitsPerSample, pwfxSrc->cbSize);
    131 
    132     TRACE("dst [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n",
    133       pwfxDst->wFormatTag, pwfxDst->nChannels, pwfxDst->nSamplesPerSec, pwfxDst->nAvgBytesPerSec,
    134       pwfxDst->nBlockAlign, pwfxDst->wBitsPerSample, pwfxDst->cbSize);
     126          phas, had, pwfxSrc, pwfxDst, pwfltr, dwCallback, dwInstance, fdwOpen);
     127
     128    TRACE("src [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n", 
     129          pwfxSrc->wFormatTag, pwfxSrc->nChannels, pwfxSrc->nSamplesPerSec, pwfxSrc->nAvgBytesPerSec,
     130          pwfxSrc->nBlockAlign, pwfxSrc->wBitsPerSample, pwfxSrc->cbSize);
     131
     132    TRACE("dst [wFormatTag=%u, nChannels=%u, nSamplesPerSec=%lu, nAvgBytesPerSec=%lu, nBlockAlign=%u, wBitsPerSample=%u, cbSize=%u]\n", 
     133          pwfxDst->wFormatTag, pwfxDst->nChannels, pwfxDst->nSamplesPerSec, pwfxDst->nAvgBytesPerSec,
     134          pwfxDst->nBlockAlign, pwfxDst->wBitsPerSample, pwfxDst->cbSize);
    135135
    136136    if ((fdwOpen & ACM_STREAMOPENF_QUERY) && phas) return MMSYSERR_INVALPARAM;
     
    143143    was = HeapAlloc(MSACM_hHeap, 0, sizeof(*was) + wfxSrcSize + wfxDstSize + ((pwfltr) ? sizeof(WAVEFILTER) : 0));
    144144    if (was == NULL)
    145     return MMSYSERR_NOMEM;
    146 
     145        return MMSYSERR_NOMEM;
     146   
    147147    was->drvInst.cbStruct = sizeof(was->drvInst);
    148148    was->drvInst.pwfxSrc = (PWAVEFORMATEX)((LPSTR)was + sizeof(*was));
     
    151151    memcpy(was->drvInst.pwfxDst, pwfxDst, wfxDstSize);
    152152    if (pwfltr) {
    153     was->drvInst.pwfltr = (PWAVEFILTER)((LPSTR)was + sizeof(*was) + wfxSrcSize + wfxDstSize);
    154     memcpy(was->drvInst.pwfltr, pwfltr, sizeof(WAVEFILTER));
     153        was->drvInst.pwfltr = (PWAVEFILTER)((LPSTR)was + sizeof(*was) + wfxSrcSize + wfxDstSize);
     154        memcpy(was->drvInst.pwfltr, pwfltr, sizeof(WAVEFILTER));
    155155    } else {
    156     was->drvInst.pwfltr = NULL;
    157     }
    158     was->drvInst.dwCallback = dwCallback;
     156        was->drvInst.pwfltr = NULL;
     157    }
     158    was->drvInst.dwCallback = dwCallback;   
    159159    was->drvInst.dwInstance = dwInstance;
    160160    was->drvInst.fdwOpen = fdwOpen;
    161     was->drvInst.fdwDriver = 0L;
    162     was->drvInst.dwDriver = 0L;
     161    was->drvInst.fdwDriver = 0L; 
     162    was->drvInst.dwDriver = 0L;     
    163163    was->drvInst.has = (HACMSTREAM)was;
    164 
     164   
    165165    if (had) {
    166     if (!(wad = MSACM_GetDriver(had))) {
    167         ret = MMSYSERR_INVALPARAM;
    168         goto errCleanUp;
    169     }
    170 
    171     was->obj.dwType = WINE_ACMOBJ_STREAM;
    172     was->obj.pACMDriverID = wad->obj.pACMDriverID;
    173     was->pDrv = wad;
    174     was->hAcmDriver = 0; /* not to close it in acmStreamClose */
    175 
    176     ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
    177     if (ret != MMSYSERR_NOERROR)
    178         goto errCleanUp;
     166        if (!(wad = MSACM_GetDriver(had))) {
     167            ret = MMSYSERR_INVALPARAM;
     168            goto errCleanUp;
     169        }
     170       
     171        was->obj.dwType = WINE_ACMOBJ_STREAM;
     172        was->obj.pACMDriverID = wad->obj.pACMDriverID;
     173        was->pDrv = wad;
     174        was->hAcmDriver = 0; /* not to close it in acmStreamClose */
     175
     176        ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
     177        if (ret != MMSYSERR_NOERROR)
     178            goto errCleanUp;
    179179    } else {
    180     PWINE_ACMDRIVERID wadi;
    181 
    182     ret = ACMERR_NOTPOSSIBLE;
    183     for (wadi = MSACM_pFirstACMDriverID; wadi; wadi = wadi->pNextACMDriverID) {
    184         ret = acmDriverOpen(&had, (HACMDRIVERID)wadi, 0L);
    185         if (ret == MMSYSERR_NOERROR) {
    186         if ((wad = MSACM_GetDriver(had)) != 0) {
    187             was->obj.dwType = WINE_ACMOBJ_STREAM;
    188             was->obj.pACMDriverID = wad->obj.pACMDriverID;
    189             was->pDrv = wad;
    190             was->hAcmDriver = had;
    191 
    192             ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
    193             if (ret == MMSYSERR_NOERROR) {
    194             if (fdwOpen & ACM_STREAMOPENF_QUERY) {
    195                 acmDriverClose(had, 0L);
    196             }
    197             break;
    198             }
    199         }
    200         /* no match, close this acm driver and try next one */
    201         acmDriverClose(had, 0L);
    202         }
    203     }
    204     if (ret != MMSYSERR_NOERROR) {
    205         ret = ACMERR_NOTPOSSIBLE;
    206         goto errCleanUp;
    207     }
     180        PWINE_ACMDRIVERID wadi;
     181       
     182        ret = ACMERR_NOTPOSSIBLE;
     183        for (wadi = MSACM_pFirstACMDriverID; wadi; wadi = wadi->pNextACMDriverID) {
     184            ret = acmDriverOpen(&had, (HACMDRIVERID)wadi, 0L);
     185            if (ret == MMSYSERR_NOERROR) {
     186                if ((wad = MSACM_GetDriver(had)) != 0) {
     187                    was->obj.dwType = WINE_ACMOBJ_STREAM;
     188                    was->obj.pACMDriverID = wad->obj.pACMDriverID;
     189                    was->pDrv = wad;
     190                    was->hAcmDriver = had;
     191                   
     192                    ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L);
     193                    if (ret == MMSYSERR_NOERROR) {
     194                        if (fdwOpen & ACM_STREAMOPENF_QUERY) {
     195                            acmDriverClose(had, 0L);
     196                        }
     197                        break;
     198                    }
     199                }
     200                /* no match, close this acm driver and try next one */
     201                acmDriverClose(had, 0L);
     202            }
     203        }
     204        if (ret != MMSYSERR_NOERROR) {
     205            ret = ACMERR_NOTPOSSIBLE;
     206            goto errCleanUp;
     207        }
    208208    }
    209209    ret = MMSYSERR_NOERROR;
    210210    if (!(fdwOpen & ACM_STREAMOPENF_QUERY)) {
     211        if (phas)
     212            *phas = (HACMSTREAM)was;
     213        TRACE("=> (%d)\n", ret);
     214        return ret;
     215    }
     216errCleanUp:             
    211217    if (phas)
    212         *phas = (HACMSTREAM)was;
    213     TRACE("=> (%d)\n", ret);
    214     return ret;
    215     }
    216 errCleanUp:
    217     if (phas)
    218     *phas = (HACMSTREAM)0;
     218        *phas = (HACMSTREAM)0;
    219219    HeapFree(MSACM_hHeap, 0, was);
    220220    TRACE("=> (%d)\n", ret);
     
    226226 *           acmStreamPrepareHeader (MSACM32.41)
    227227 */
    228 MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash,
    229                        DWORD fdwPrepare)
    230 {
    231     PWINE_ACMSTREAM was;
    232     MMRESULT        ret = MMSYSERR_NOERROR;
    233     PACMDRVSTREAMHEADER padsh;
     228MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash, 
     229                                       DWORD fdwPrepare)
     230{
     231    PWINE_ACMSTREAM     was;
     232    MMRESULT            ret = MMSYSERR_NOERROR;
     233    PACMDRVSTREAMHEADER padsh;
    234234
    235235    TRACE("(0x%08x, %p, %ld)\n", has, pash, fdwPrepare);
    236 
     236   
    237237    if ((was = ACM_GetStream(has)) == NULL)
    238     return MMSYSERR_INVALHANDLE;
     238        return MMSYSERR_INVALHANDLE;
    239239    if (!pash || pash->cbStruct < sizeof(ACMSTREAMHEADER))
    240     return MMSYSERR_INVALPARAM;
     240        return MMSYSERR_INVALPARAM;
    241241    if (fdwPrepare)
    242     ret = MMSYSERR_INVALFLAG;
     242        ret = MMSYSERR_INVALFLAG;
    243243
    244244    if (pash->fdwStatus & ACMSTREAMHEADER_STATUSF_DONE)
    245     return MMSYSERR_NOERROR;
     245        return MMSYSERR_NOERROR;
    246246
    247247    /* Note: the ACMSTREAMHEADER and ACMDRVSTREAMHEADER structs are of same
     
    264264    ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_PREPARE, (DWORD)&was->drvInst, (DWORD)padsh);
    265265    if (ret == MMSYSERR_NOERROR || ret == MMSYSERR_NOTSUPPORTED) {
    266     ret = MMSYSERR_NOERROR;
    267     padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE);
    268     padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_PREPARED;
    269     padsh->fdwPrepared = padsh->fdwStatus;
    270     padsh->dwPrepared = 0;
    271     padsh->pbPreparedSrc = padsh->pbSrc;
    272     padsh->cbPreparedSrcLength = padsh->cbSrcLength;
    273     padsh->pbPreparedDst = padsh->pbDst;
    274     padsh->cbPreparedDstLength = padsh->cbDstLength;
     266        ret = MMSYSERR_NOERROR;
     267        padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE);
     268        padsh->fdwStatus |= ACMSTREAMHEADER_STATUSF_PREPARED;
     269        padsh->fdwPrepared = padsh->fdwStatus;
     270        padsh->dwPrepared = 0;
     271        padsh->pbPreparedSrc = padsh->pbSrc;
     272        padsh->cbPreparedSrcLength = padsh->cbSrcLength;
     273        padsh->pbPreparedDst = padsh->pbDst;
     274        padsh->cbPreparedDstLength = padsh->cbDstLength;
    275275    } else {
    276     padsh->fdwPrepared = 0;
    277     padsh->dwPrepared = 0;
    278     padsh->pbPreparedSrc = 0;
    279     padsh->cbPreparedSrcLength = 0;
    280     padsh->pbPreparedDst = 0;
    281     padsh->cbPreparedDstLength = 0;
     276        padsh->fdwPrepared = 0;
     277        padsh->dwPrepared = 0;
     278        padsh->pbPreparedSrc = 0;
     279        padsh->cbPreparedSrcLength = 0;
     280        padsh->pbPreparedDst = 0;
     281        padsh->cbPreparedDstLength = 0;
    282282    }
    283283    TRACE("=> (%d)\n", ret);
     
    290290MMRESULT WINAPI acmStreamReset(HACMSTREAM has, DWORD fdwReset)
    291291{
    292     PWINE_ACMSTREAM was;
    293     MMRESULT        ret = MMSYSERR_NOERROR;
     292    PWINE_ACMSTREAM     was;
     293    MMRESULT            ret = MMSYSERR_NOERROR;
    294294
    295295    TRACE("(0x%08x, %ld)\n", has, fdwReset);
    296296
    297297    if (fdwReset) {
    298     ret = MMSYSERR_INVALFLAG;
     298        ret = MMSYSERR_INVALFLAG;
    299299    } else if ((was = ACM_GetStream(has)) == NULL) {
    300     return MMSYSERR_INVALHANDLE;
     300        return MMSYSERR_INVALHANDLE;
    301301    } else if (was->drvInst.fdwOpen & ACM_STREAMOPENF_ASYNC) {
    302     ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_RESET, (DWORD)&was->drvInst, 0);
     302        ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_RESET, (DWORD)&was->drvInst, 0);
    303303    }
    304304    TRACE("=> (%d)\n", ret);
     
    309309 *           acmStreamSize (MSACM32.43)
    310310 */
    311 MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput,
    312                   LPDWORD pdwOutputBytes, DWORD fdwSize)
    313 {
    314     PWINE_ACMSTREAM was;
    315     ACMDRVSTREAMSIZE    adss;
    316     MMRESULT        ret;
    317 
     311MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput, 
     312                              LPDWORD pdwOutputBytes, DWORD fdwSize)
     313{
     314    PWINE_ACMSTREAM     was;
     315    ACMDRVSTREAMSIZE    adss;
     316    MMRESULT            ret;
     317   
    318318    TRACE("(0x%08x, %ld, %p, %ld)\n", has, cbInput, pdwOutputBytes, fdwSize);
    319 
     319   
    320320    if ((was = ACM_GetStream(has)) == NULL) {
    321     return MMSYSERR_INVALHANDLE;
     321        return MMSYSERR_INVALHANDLE;
    322322    }
    323323    if ((fdwSize & ~ACM_STREAMSIZEF_QUERYMASK) != 0) {
    324     return MMSYSERR_INVALFLAG;
     324        return MMSYSERR_INVALFLAG;
    325325    }
    326326
    327327    *pdwOutputBytes = 0L;
    328 
     328   
    329329    switch (fdwSize & ACM_STREAMSIZEF_QUERYMASK) {
    330330    case ACM_STREAMSIZEF_DESTINATION:
    331     adss.cbDstLength = cbInput;
    332     adss.cbSrcLength = 0;
    333     break;
     331        adss.cbDstLength = cbInput;
     332        adss.cbSrcLength = 0;
     333        break;
    334334    case ACM_STREAMSIZEF_SOURCE:
    335     adss.cbSrcLength = cbInput;
    336     adss.cbDstLength = 0;
    337     break;
    338     default:
    339     return MMSYSERR_INVALFLAG;
    340     }
    341 
     335        adss.cbSrcLength = cbInput;
     336        adss.cbDstLength = 0;
     337        break;
     338    default:   
     339        return MMSYSERR_INVALFLAG;
     340    }
     341   
    342342    adss.cbStruct = sizeof(adss);
    343343    adss.fdwSize = fdwSize;
    344     ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_SIZE,
    345                 (DWORD)&was->drvInst, (DWORD)&adss);
     344    ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_SIZE, 
     345                            (DWORD)&was->drvInst, (DWORD)&adss);
    346346    if (ret == MMSYSERR_NOERROR) {
    347     switch (fdwSize & ACM_STREAMSIZEF_QUERYMASK) {
    348     case ACM_STREAMSIZEF_DESTINATION:
    349         *pdwOutputBytes = adss.cbSrcLength;
    350         break;
    351     case ACM_STREAMSIZEF_SOURCE:
    352         *pdwOutputBytes = adss.cbDstLength;
    353         break;
    354     }
     347        switch (fdwSize & ACM_STREAMSIZEF_QUERYMASK) {
     348        case ACM_STREAMSIZEF_DESTINATION:
     349            *pdwOutputBytes = adss.cbSrcLength;
     350            break;
     351        case ACM_STREAMSIZEF_SOURCE:
     352            *pdwOutputBytes = adss.cbDstLength;
     353            break;
     354        }
    355355    }
    356356    TRACE("=> (%d) [%lu]\n", ret, *pdwOutputBytes);
     
    361361 *           acmStreamUnprepareHeader (MSACM32.44)
    362362 */
    363 MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash,
    364                     DWORD fdwUnprepare)
    365 {
    366     PWINE_ACMSTREAM was;
    367     MMRESULT        ret = MMSYSERR_NOERROR;
    368     PACMDRVSTREAMHEADER padsh;
     363MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, PACMSTREAMHEADER pash, 
     364                                        DWORD fdwUnprepare)
     365{
     366    PWINE_ACMSTREAM     was;
     367    MMRESULT            ret = MMSYSERR_NOERROR;
     368    PACMDRVSTREAMHEADER padsh;
    369369
    370370    TRACE("(0x%08x, %p, %ld)\n", has, pash, fdwUnprepare);
    371 
     371   
    372372    if ((was = ACM_GetStream(has)) == NULL)
    373     return MMSYSERR_INVALHANDLE;
     373        return MMSYSERR_INVALHANDLE;
    374374    if (!pash || pash->cbStruct < sizeof(ACMSTREAMHEADER))
    375     return MMSYSERR_INVALPARAM;
     375        return MMSYSERR_INVALPARAM;
    376376
    377377    if (!(pash->fdwStatus & ACMSTREAMHEADER_STATUSF_PREPARED))
    378     return ACMERR_UNPREPARED;
     378        return ACMERR_UNPREPARED;
    379379
    380380    /* Note: the ACMSTREAMHEADER and ACMDRVSTREAMHEADER structs are of same
     
    386386    /* check that pointers have not been modified */
    387387    if (padsh->pbPreparedSrc != padsh->pbSrc ||
    388     padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
    389     padsh->pbPreparedDst != padsh->pbDst ||
    390     padsh->cbPreparedDstLength < padsh->cbDstLength) {
    391     return MMSYSERR_INVALPARAM;
    392     }
     388        padsh->cbPreparedSrcLength < padsh->cbSrcLength ||
     389        padsh->pbPreparedDst != padsh->pbDst ||
     390        padsh->cbPreparedDstLength < padsh->cbDstLength) {
     391        return MMSYSERR_INVALPARAM;
     392    }   
    393393
    394394    padsh->fdwConvert = fdwUnprepare;
     
    396396    ret = SendDriverMessage(was->pDrv->hDrvr, ACMDM_STREAM_UNPREPARE, (DWORD)&was->drvInst, (DWORD)padsh);
    397397    if (ret == MMSYSERR_NOERROR || ret == MMSYSERR_NOTSUPPORTED) {
    398     ret = MMSYSERR_NOERROR;
    399     padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE|ACMSTREAMHEADER_STATUSF_PREPARED);
    400     }
    401     TRACE("=> (%d)\n", ret);
    402     return ret;
    403 }
     398        ret = MMSYSERR_NOERROR;
     399        padsh->fdwStatus &= ~(ACMSTREAMHEADER_STATUSF_DONE|ACMSTREAMHEADER_STATUSF_INQUEUE|ACMSTREAMHEADER_STATUSF_PREPARED);
     400    }
     401    TRACE("=> (%d)\n", ret);
     402    return ret;
     403}
Note: See TracChangeset for help on using the changeset viewer.