ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

port.c
Go to the documentation of this file.
00001 /* IDirectMusicPort Implementation
00002  *
00003  * Copyright (C) 2003-2004 Rok Mandeljc
00004  *
00005  * This program is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU Lesser General Public
00007  * License as published by the Free Software Foundation; either
00008  * version 2.1 of the License, or (at your option) any later version.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  * Lesser General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU Lesser General Public
00016  * License along with this program; if not, write to the Free Software
00017  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00018  */
00019 
00020 #include "dmusic_private.h"
00021 
00022 WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
00023 
00024 /* IDirectMusicPortImpl IUnknown part: */
00025 static HRESULT WINAPI IDirectMusicPortImpl_QueryInterface (LPDIRECTMUSICPORT iface, REFIID riid, LPVOID *ppobj) {
00026     ICOM_THIS_MULTI(IDirectMusicPortImpl, lpVtbl, iface);
00027 
00028     TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ppobj);
00029 
00030     if (IsEqualIID (riid, &IID_IUnknown) ||
00031         IsEqualGUID(riid, &IID_IDirectMusicPort) ||
00032         IsEqualGUID(riid, &IID_IDirectMusicPort8)) {
00033         *ppobj = &This->lpVtbl;
00034         IDirectMusicPort_AddRef((LPDIRECTMUSICPORT)*ppobj);
00035         return S_OK;
00036     } else if (IsEqualGUID(riid, &IID_IDirectMusicPortDownload) ||
00037            IsEqualGUID(riid, &IID_IDirectMusicPortDownload8)) {
00038         *ppobj = &This->lpDownloadVtbl;
00039         IDirectMusicPortDownload_AddRef((LPDIRECTMUSICPORTDOWNLOAD)*ppobj);
00040         return S_OK;
00041     } else if (IsEqualGUID(riid, &IID_IDirectMusicThru) ||
00042            IsEqualGUID(riid, &IID_IDirectMusicThru8)) {
00043         *ppobj = &This->lpThruVtbl;
00044         IDirectMusicThru_AddRef((LPDIRECTMUSICTHRU)*ppobj);
00045         return S_OK;
00046     }
00047     WARN("(%p, %s, %p): not found\n", This, debugstr_dmguid(riid), ppobj);
00048     return E_NOINTERFACE;
00049 }
00050 
00051 static ULONG WINAPI IDirectMusicPortImpl_AddRef (LPDIRECTMUSICPORT iface) {
00052     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00053     ULONG refCount = InterlockedIncrement(&This->ref);
00054 
00055     TRACE("(%p)->(ref before=%u)\n", This, refCount - 1);
00056 
00057     DMUSIC_LockModule();
00058 
00059     return refCount;
00060 }
00061 
00062 static ULONG WINAPI IDirectMusicPortImpl_Release (LPDIRECTMUSICPORT iface) {
00063     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00064     ULONG refCount = InterlockedDecrement(&This->ref);
00065 
00066     TRACE("(%p)->(ref before=%u)\n", This, refCount + 1);
00067 
00068     if (!refCount) {
00069         HeapFree(GetProcessHeap(), 0, This);
00070     }
00071 
00072     DMUSIC_UnlockModule();
00073 
00074     return refCount;
00075 }
00076 
00077 /* IDirectMusicPortImpl IDirectMusicPort part: */
00078 static HRESULT WINAPI IDirectMusicPortImpl_PlayBuffer (LPDIRECTMUSICPORT iface, LPDIRECTMUSICBUFFER pBuffer) {
00079     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00080     FIXME("(%p, %p): stub\n", This, pBuffer);
00081     return S_OK;
00082 }
00083 
00084 static HRESULT WINAPI IDirectMusicPortImpl_SetReadNotificationHandle (LPDIRECTMUSICPORT iface, HANDLE hEvent) {
00085     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00086     FIXME("(%p, %p): stub\n", This, hEvent);
00087     return S_OK;
00088 }
00089 
00090 static HRESULT WINAPI IDirectMusicPortImpl_Read (LPDIRECTMUSICPORT iface, LPDIRECTMUSICBUFFER pBuffer) {
00091     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00092     FIXME("(%p, %p): stub\n", This, pBuffer);
00093     return S_OK;
00094 }
00095 
00096 static HRESULT WINAPI IDirectMusicPortImpl_DownloadInstrument (LPDIRECTMUSICPORT iface, IDirectMusicInstrument* pInstrument, IDirectMusicDownloadedInstrument** ppDownloadedInstrument, DMUS_NOTERANGE* pNoteRanges, DWORD dwNumNoteRanges) {
00097     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00098 
00099     FIXME("(%p, %p, %p, %p, %d): stub\n", This, pInstrument, ppDownloadedInstrument, pNoteRanges, dwNumNoteRanges);
00100 
00101     if (!pInstrument || !ppDownloadedInstrument || (dwNumNoteRanges && !pNoteRanges))
00102         return E_POINTER;
00103 
00104     return DMUSIC_CreateDirectMusicDownloadedInstrumentImpl(&IID_IDirectMusicDownloadedInstrument, (LPVOID*)ppDownloadedInstrument, NULL);
00105 }
00106 
00107 static HRESULT WINAPI IDirectMusicPortImpl_UnloadInstrument (LPDIRECTMUSICPORT iface, IDirectMusicDownloadedInstrument *pDownloadedInstrument) {
00108     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00109     FIXME("(%p, %p): stub\n", This, pDownloadedInstrument);
00110     return S_OK;
00111 }
00112 
00113 static HRESULT WINAPI IDirectMusicPortImpl_GetLatencyClock (LPDIRECTMUSICPORT iface, IReferenceClock** ppClock) {
00114     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00115     TRACE("(%p, %p)\n", This, ppClock);
00116     *ppClock = This->pLatencyClock;
00117     IReferenceClock_AddRef (*ppClock);
00118     return S_OK;
00119 }
00120 
00121 static HRESULT WINAPI IDirectMusicPortImpl_GetRunningStats (LPDIRECTMUSICPORT iface, LPDMUS_SYNTHSTATS pStats) {
00122     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00123     FIXME("(%p, %p): stub\n", This, pStats);
00124     return S_OK;
00125 }
00126 
00127 static HRESULT WINAPI IDirectMusicPortImpl_Compact (LPDIRECTMUSICPORT iface) {
00128     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00129     FIXME("(%p): stub\n", This);
00130     return S_OK;
00131 }
00132 
00133 static HRESULT WINAPI IDirectMusicPortImpl_GetCaps (LPDIRECTMUSICPORT iface, LPDMUS_PORTCAPS pPortCaps) {
00134     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00135     TRACE("(%p, %p)\n", This, pPortCaps);
00136     *pPortCaps = This->caps;
00137     return S_OK;
00138 }
00139 
00140 static HRESULT WINAPI IDirectMusicPortImpl_DeviceIoControl (LPDIRECTMUSICPORT iface, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped) {
00141     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00142     FIXME("(%p, %d, %p, %d, %p, %d, %p, %p): stub\n", This, dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped);
00143     return S_OK;
00144 }
00145 
00146 static HRESULT WINAPI IDirectMusicPortImpl_SetNumChannelGroups (LPDIRECTMUSICPORT iface, DWORD dwChannelGroups) {
00147     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00148     FIXME("(%p, %d): semi-stub\n", This, dwChannelGroups);
00149     This->nrofgroups = dwChannelGroups;
00150     return S_OK;
00151 }
00152 
00153 static HRESULT WINAPI IDirectMusicPortImpl_GetNumChannelGroups (LPDIRECTMUSICPORT iface, LPDWORD pdwChannelGroups) {
00154     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00155     TRACE("(%p, %p)\n", This, pdwChannelGroups);
00156     *pdwChannelGroups = This->nrofgroups;
00157     return S_OK;
00158 }
00159 
00160 HRESULT WINAPI IDirectMusicPortImpl_Activate (LPDIRECTMUSICPORT iface, BOOL fActive) {
00161     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00162     TRACE("(%p, %d)\n", This, fActive);
00163     This->fActive = fActive;
00164     return S_OK;
00165 }
00166 
00167 static HRESULT WINAPI IDirectMusicPortImpl_SetChannelPriority (LPDIRECTMUSICPORT iface, DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) {
00168     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00169     FIXME("(%p, %d, %d, %d): semi-stub\n", This, dwChannelGroup, dwChannel, dwPriority);
00170     if (dwChannel > 16) {
00171         WARN("isn't there supposed to be 16 channels (no. %d requested)?! (faking as it is ok)\n", dwChannel);
00172         /*return E_INVALIDARG;*/
00173     }   
00174     return S_OK;
00175 }
00176 
00177 static HRESULT WINAPI IDirectMusicPortImpl_GetChannelPriority (LPDIRECTMUSICPORT iface, DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) {
00178     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00179     TRACE("(%p, %d, %d, %p)\n", This, dwChannelGroup, dwChannel, pdwPriority);
00180     *pdwPriority = This->group[dwChannelGroup-1].channel[dwChannel].priority;
00181     return S_OK;
00182 }
00183 
00184 static HRESULT WINAPI IDirectMusicPortImpl_SetDirectSound (LPDIRECTMUSICPORT iface, LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer) {
00185     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00186     FIXME("(%p, %p, %p): stub\n", This, pDirectSound, pDirectSoundBuffer);
00187     return S_OK;
00188 }
00189 
00190 static HRESULT WINAPI IDirectMusicPortImpl_GetFormat (LPDIRECTMUSICPORT iface, LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSize, LPDWORD pdwBufferSize) {
00191     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00192     WAVEFORMATEX format;
00193     FIXME("(%p, %p, %p, %p): stub\n", This, pWaveFormatEx, pdwWaveFormatExSize, pdwBufferSize);
00194 
00195     if (pWaveFormatEx == NULL)
00196     {
00197         if (pdwWaveFormatExSize)
00198             *pdwWaveFormatExSize = sizeof(format);
00199         else
00200             return E_POINTER;
00201     }
00202     else
00203     {
00204         if (pdwWaveFormatExSize == NULL)
00205             return E_POINTER;
00206 
00207         /* Just fill this in with something that will not crash Direct Sound for now. */
00208         /* It won't be used anyway until Performances are completed */
00209         format.wFormatTag = WAVE_FORMAT_PCM;
00210         format.nChannels = 2; /* This->params.dwAudioChannels; */
00211         format.nSamplesPerSec = 44100; /* This->params.dwSampleRate; */
00212         format.wBitsPerSample = 16; /* FIXME: check this */
00213         format.nBlockAlign = (format.wBitsPerSample * format.nChannels) / 8;
00214         format.nAvgBytesPerSec = format.nSamplesPerSec * format.nBlockAlign;
00215         format.cbSize = 0;
00216 
00217         if (*pdwWaveFormatExSize >= sizeof(format))
00218         {
00219             CopyMemory(pWaveFormatEx, &format, min(sizeof(format), *pdwWaveFormatExSize));
00220             *pdwWaveFormatExSize = sizeof(format);  /* FIXME check if this is set */
00221         }
00222         else
00223             return E_POINTER;   /* FIXME find right error */
00224     }
00225 
00226     if (pdwBufferSize)
00227         *pdwBufferSize = 44100 * 2 * 2;
00228     else
00229         return E_POINTER;
00230 
00231     return S_OK;
00232 }
00233 
00234 static const IDirectMusicPortVtbl DirectMusicPort_Vtbl = {
00235     IDirectMusicPortImpl_QueryInterface,
00236     IDirectMusicPortImpl_AddRef,
00237     IDirectMusicPortImpl_Release,
00238     IDirectMusicPortImpl_PlayBuffer,
00239     IDirectMusicPortImpl_SetReadNotificationHandle,
00240     IDirectMusicPortImpl_Read,
00241     IDirectMusicPortImpl_DownloadInstrument,
00242     IDirectMusicPortImpl_UnloadInstrument,
00243     IDirectMusicPortImpl_GetLatencyClock,
00244     IDirectMusicPortImpl_GetRunningStats,
00245     IDirectMusicPortImpl_Compact,
00246     IDirectMusicPortImpl_GetCaps,
00247     IDirectMusicPortImpl_DeviceIoControl,
00248     IDirectMusicPortImpl_SetNumChannelGroups,
00249     IDirectMusicPortImpl_GetNumChannelGroups,
00250     IDirectMusicPortImpl_Activate,
00251     IDirectMusicPortImpl_SetChannelPriority,
00252     IDirectMusicPortImpl_GetChannelPriority,
00253     IDirectMusicPortImpl_SetDirectSound,
00254     IDirectMusicPortImpl_GetFormat
00255 };
00256 
00257 /* IDirectMusicPortDownload IUnknown parts follow: */
00258 static HRESULT WINAPI IDirectMusicPortDownloadImpl_QueryInterface (LPDIRECTMUSICPORTDOWNLOAD iface, REFIID riid, LPVOID *ppobj) {
00259     ICOM_THIS_MULTI(IDirectMusicPortImpl, lpDownloadVtbl, iface);
00260     TRACE("(%p/%p)->(%s, %p)\n", This, iface, debugstr_dmguid(riid), ppobj);
00261     return IUnknown_QueryInterface((IUnknown *)&(This->lpVtbl), riid, ppobj);
00262 }
00263 
00264 static ULONG WINAPI IDirectMusicPortDownloadImpl_AddRef (LPDIRECTMUSICPORTDOWNLOAD iface) {
00265     ICOM_THIS_MULTI(IDirectMusicPortImpl, lpDownloadVtbl, iface);
00266     TRACE("(%p/%p)->()\n", This, iface);
00267     return IUnknown_AddRef((IUnknown *)&(This->lpVtbl));
00268 }
00269 
00270 static ULONG WINAPI IDirectMusicPortDownloadImpl_Release (LPDIRECTMUSICPORTDOWNLOAD iface) {
00271     ICOM_THIS_MULTI(IDirectMusicPortImpl, lpDownloadVtbl, iface);
00272     TRACE("(%p/%p)->()\n", This, iface);
00273     return IUnknown_Release((IUnknown *)&(This->lpVtbl));
00274 }
00275 
00276 /* IDirectMusicPortDownload Interface follow: */
00277 static HRESULT WINAPI IDirectMusicPortDownloadImpl_GetBuffer (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD dwDLId, IDirectMusicDownload** ppIDMDownload) {
00278     ICOM_THIS_MULTI(IDirectMusicPortImpl, lpDownloadVtbl, iface);
00279 
00280     FIXME("(%p/%p)->(%d, %p): stub\n", This, iface, dwDLId, ppIDMDownload);
00281 
00282     if (!ppIDMDownload)
00283         return E_POINTER;
00284 
00285     return DMUSIC_CreateDirectMusicDownloadImpl(&IID_IDirectMusicDownload, (LPVOID*)ppIDMDownload, NULL);
00286 }
00287 
00288 static HRESULT WINAPI IDirectMusicPortDownloadImpl_AllocateBuffer (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD dwSize, IDirectMusicDownload** ppIDMDownload) {
00289     ICOM_THIS_MULTI(IDirectMusicPortImpl, lpDownloadVtbl, iface);
00290     FIXME("(%p/%p)->(%d, %p): stub\n", This, iface, dwSize, ppIDMDownload);
00291     return S_OK;
00292 }
00293 
00294 static HRESULT WINAPI IDirectMusicPortDownloadImpl_GetDLId (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD* pdwStartDLId, DWORD dwCount) {
00295     ICOM_THIS_MULTI(IDirectMusicPortImpl, lpDownloadVtbl, iface);
00296     FIXME("(%p/%p)->(%p, %d): stub\n", This, iface, pdwStartDLId, dwCount);
00297     return S_OK;
00298 }
00299 
00300 static HRESULT WINAPI IDirectMusicPortDownloadImpl_GetAppend (LPDIRECTMUSICPORTDOWNLOAD iface, DWORD* pdwAppend) {
00301     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00302     FIXME("(%p/%p)->(%p): stub\n", This, iface, pdwAppend);
00303     return S_OK;
00304 }
00305 
00306 static HRESULT WINAPI IDirectMusicPortDownloadImpl_Download (LPDIRECTMUSICPORTDOWNLOAD iface, IDirectMusicDownload* pIDMDownload) {
00307     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00308     FIXME("(%p/%p)->(%p): stub\n", This, iface, pIDMDownload);
00309     return S_OK;
00310 }
00311 
00312 static HRESULT WINAPI IDirectMusicPortDownloadImpl_Unload (LPDIRECTMUSICPORTDOWNLOAD iface, IDirectMusicDownload* pIDMDownload) {
00313     IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface;
00314     FIXME("(%p/%p)->(%p): stub\n", This, iface, pIDMDownload);
00315     return S_OK;
00316 }
00317 
00318 static const IDirectMusicPortDownloadVtbl DirectMusicPortDownload_Vtbl = {
00319     IDirectMusicPortDownloadImpl_QueryInterface,
00320     IDirectMusicPortDownloadImpl_AddRef,
00321     IDirectMusicPortDownloadImpl_Release,
00322     IDirectMusicPortDownloadImpl_GetBuffer,
00323     IDirectMusicPortDownloadImpl_AllocateBuffer,
00324     IDirectMusicPortDownloadImpl_GetDLId,
00325     IDirectMusicPortDownloadImpl_GetAppend,
00326     IDirectMusicPortDownloadImpl_Download,
00327     IDirectMusicPortDownloadImpl_Unload
00328 };
00329 
00330 /* IDirectMusicThru IUnknown parts follow: */
00331 static HRESULT WINAPI IDirectMusicThruImpl_QueryInterface (LPDIRECTMUSICTHRU iface, REFIID riid, LPVOID *ppobj) {
00332     ICOM_THIS_MULTI(IDirectMusicPortImpl, lpThruVtbl, iface);
00333     TRACE("(%p/%p)->(%s, %p)\n", This, iface, debugstr_dmguid(riid), ppobj);
00334     return IUnknown_QueryInterface((IUnknown *)&(This->lpVtbl), riid, ppobj);
00335 }
00336 
00337 static ULONG WINAPI IDirectMusicThruImpl_AddRef (LPDIRECTMUSICTHRU iface) {
00338     ICOM_THIS_MULTI(IDirectMusicPortImpl, lpThruVtbl, iface);
00339     TRACE("(%p/%p)->()\n", This, iface);
00340     return IUnknown_AddRef((IUnknown *)&(This->lpVtbl));
00341 }
00342 
00343 static ULONG WINAPI IDirectMusicThruImpl_Release (LPDIRECTMUSICTHRU iface) {
00344     ICOM_THIS_MULTI(IDirectMusicPortImpl, lpThruVtbl, iface);
00345     TRACE("(%p/%p)->()\n", This, iface);
00346     return IUnknown_Release((IUnknown *)&(This->lpVtbl));
00347 }
00348 
00349 /* IDirectMusicThru Interface follow: */
00350 static HRESULT WINAPI IDirectMusicThruImpl_ThruChannel (LPDIRECTMUSICTHRU iface, DWORD dwSourceChannelGroup, DWORD dwSourceChannel, DWORD dwDestinationChannelGroup, DWORD dwDestinationChannel, LPDIRECTMUSICPORT pDestinationPort) {
00351     ICOM_THIS_MULTI(IDirectMusicPortImpl, lpThruVtbl, iface);
00352     FIXME("(%p/%p)->(%d, %d, %d, %d, %p): stub\n", This, iface, dwSourceChannelGroup, dwSourceChannel, dwDestinationChannelGroup, dwDestinationChannel, pDestinationPort);
00353     return S_OK;
00354 }
00355 
00356 static const IDirectMusicThruVtbl DirectMusicThru_Vtbl = {
00357     IDirectMusicThruImpl_QueryInterface,
00358     IDirectMusicThruImpl_AddRef,
00359     IDirectMusicThruImpl_Release,
00360     IDirectMusicThruImpl_ThruChannel
00361 };
00362 
00363 HRESULT WINAPI DMUSIC_CreateDirectMusicPortImpl (LPCGUID lpcGUID, LPVOID *ppobj, LPUNKNOWN pUnkOuter, LPDMUS_PORTPARAMS pPortParams, LPDMUS_PORTCAPS pPortCaps) {
00364     IDirectMusicPortImpl *obj;
00365 
00366     TRACE("(%p,%p,%p)\n", lpcGUID, ppobj, pUnkOuter);
00367 
00368     obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicPortImpl));
00369     if (NULL == obj) {
00370         *ppobj = NULL;
00371         return E_OUTOFMEMORY;
00372     }
00373     obj->lpVtbl = &DirectMusicPort_Vtbl;
00374     obj->lpDownloadVtbl = &DirectMusicPortDownload_Vtbl;
00375     obj->lpThruVtbl = &DirectMusicThru_Vtbl;
00376     obj->ref = 0;  /* will be inited by QueryInterface */
00377     obj->fActive = FALSE;
00378     obj->params = *pPortParams;
00379     obj->caps = *pPortCaps;
00380     obj->pDirectSound = NULL;
00381     obj->pLatencyClock = NULL;
00382     DMUSIC_CreateReferenceClockImpl(&IID_IReferenceClock, (LPVOID*)&obj->pLatencyClock, NULL);
00383 
00384 #if 0
00385     if (pPortParams->dwValidParams & DMUS_PORTPARAMS_CHANNELGROUPS) {
00386       obj->nrofgroups = pPortParams->dwChannelGroups;
00387       /* setting default priorities */          
00388       for (j = 0; j < obj->nrofgroups; j++) {
00389         TRACE ("Setting default channel priorities on channel group %i\n", j + 1);
00390         obj->group[j].channel[0].priority = DAUD_CHAN1_DEF_VOICE_PRIORITY;
00391         obj->group[j].channel[1].priority = DAUD_CHAN2_DEF_VOICE_PRIORITY;
00392         obj->group[j].channel[2].priority = DAUD_CHAN3_DEF_VOICE_PRIORITY;
00393         obj->group[j].channel[3].priority = DAUD_CHAN4_DEF_VOICE_PRIORITY;
00394         obj->group[j].channel[4].priority = DAUD_CHAN5_DEF_VOICE_PRIORITY;
00395         obj->group[j].channel[5].priority = DAUD_CHAN6_DEF_VOICE_PRIORITY;
00396         obj->group[j].channel[6].priority = DAUD_CHAN7_DEF_VOICE_PRIORITY;
00397         obj->group[j].channel[7].priority = DAUD_CHAN8_DEF_VOICE_PRIORITY;
00398         obj->group[j].channel[8].priority = DAUD_CHAN9_DEF_VOICE_PRIORITY;
00399         obj->group[j].channel[9].priority = DAUD_CHAN10_DEF_VOICE_PRIORITY;
00400         obj->group[j].channel[10].priority = DAUD_CHAN11_DEF_VOICE_PRIORITY;
00401         obj->group[j].channel[11].priority = DAUD_CHAN12_DEF_VOICE_PRIORITY;
00402         obj->group[j].channel[12].priority = DAUD_CHAN13_DEF_VOICE_PRIORITY;
00403         obj->group[j].channel[13].priority = DAUD_CHAN14_DEF_VOICE_PRIORITY;
00404         obj->group[j].channel[14].priority = DAUD_CHAN15_DEF_VOICE_PRIORITY;
00405         obj->group[j].channel[15].priority = DAUD_CHAN16_DEF_VOICE_PRIORITY;
00406       }
00407     }
00408 #endif
00409 
00410     return IDirectMusicPortImpl_QueryInterface ((LPDIRECTMUSICPORT)obj, lpcGUID, ppobj);
00411 }

Generated on Fri May 25 2012 04:19:31 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.