Changeset 65673 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Feb 8, 2017 11:50:42 AM (8 years ago)
- Location:
- trunk/src/VBox/Devices/Audio
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevHDA.cpp
r65624 r65673 2674 2674 pStrmCfg->Props.cBits = cBits; 2675 2675 pStrmCfg->Props.fSigned = true; 2676 pStrmCfg->Props.cShift = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pStrmCfg->Props.cBits, pStrmCfg->Props.cChannels); 2676 2677 } 2677 2678 -
trunk/src/VBox/Devices/Audio/DevIchAc97.cpp
r65624 r65673 1641 1641 streamCfg.Props.cBits = 16; 1642 1642 streamCfg.Props.fSigned = true; 1643 streamCfg.Props.cShift = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(streamCfg.Props.cBits, streamCfg.Props.cChannels); 1643 1644 1644 1645 rc = ichac97MixerAddDrvStreams(pThis, pMixSink, &streamCfg); -
trunk/src/VBox/Devices/Audio/DrvAudio.h
r65636 r65673 153 153 uint8_t DrvAudioHlpAudFmtToBits(PDMAUDIOFMT enmFmt); 154 154 const char *DrvAudioHlpAudFmtToStr(PDMAUDIOFMT enmFmt); 155 void DrvAudioHlpClearBuf( PPDMAUDIOPCMPROPS pPCMInfo, void *pvBuf, size_t cbBuf, uint32_t cSamples);155 void DrvAudioHlpClearBuf(const PPDMAUDIOPCMPROPS pPCMInfo, void *pvBuf, size_t cbBuf, uint32_t cSamples); 156 156 uint32_t DrvAudioHlpCalcBitrate(uint8_t cBits, uint32_t uHz, uint8_t cChannels); 157 uint32_t DrvAudioHlpCalcBitrate( PPDMAUDIOPCMPROPS pProps);158 bool DrvAudioHlpPCMPropsAreEqual( PPDMAUDIOPCMPROPS pPCMProps1,PPDMAUDIOPCMPROPS pPCMProps2);159 bool DrvAudioHlpPCMPropsAreEqual( PPDMAUDIOPCMPROPS pPCMProps,PPDMAUDIOSTREAMCFG pCfg);157 uint32_t DrvAudioHlpCalcBitrate(const PPDMAUDIOPCMPROPS pProps); 158 bool DrvAudioHlpPCMPropsAreEqual(const PPDMAUDIOPCMPROPS pPCMProps1, const PPDMAUDIOPCMPROPS pPCMProps2); 159 bool DrvAudioHlpPCMPropsAreEqual(const PPDMAUDIOPCMPROPS pPCMProps, const PPDMAUDIOSTREAMCFG pCfg); 160 160 bool DrvAudioHlpPCMPropsAreValid(const PPDMAUDIOPCMPROPS pProps); 161 int DrvAudioHlpPCMPropsToStreamCfg( PPDMAUDIOPCMPROPS pPCMProps, PPDMAUDIOSTREAMCFG pCfg);162 const char *DrvAudioHlpRecSrcToStr( PDMAUDIORECSOURCE enmRecSource);163 void DrvAudioHlpStreamCfgPrint( PPDMAUDIOSTREAMCFG pCfg);161 int DrvAudioHlpPCMPropsToStreamCfg(const PPDMAUDIOPCMPROPS pPCMProps, PPDMAUDIOSTREAMCFG pCfg); 162 const char *DrvAudioHlpRecSrcToStr(const PDMAUDIORECSOURCE enmRecSource); 163 void DrvAudioHlpStreamCfgPrint(const PPDMAUDIOSTREAMCFG pCfg); 164 164 bool DrvAudioHlpStreamCfgIsValid(const PPDMAUDIOSTREAMCFG pCfg); 165 165 int DrvAudioHlpStreamCfgCopy(PPDMAUDIOSTREAMCFG pDstCfg, const PPDMAUDIOSTREAMCFG pSrcCfg); … … 174 174 PPDMAUDIODEVICE DrvAudioHlpDeviceAlloc(size_t cbData); 175 175 void DrvAudioHlpDeviceFree(PPDMAUDIODEVICE pDev); 176 PPDMAUDIODEVICE DrvAudioHlpDeviceDup( PPDMAUDIODEVICE pDev, bool fCopyUserData);176 PPDMAUDIODEVICE DrvAudioHlpDeviceDup(const PPDMAUDIODEVICE pDev, bool fCopyUserData); 177 177 178 178 int DrvAudioHlpDeviceEnumInit(PPDMAUDIODEVICEENUM pDevEnm); 179 179 void DrvAudioHlpDeviceEnumFree(PPDMAUDIODEVICEENUM pDevEnm); 180 180 int DrvAudioHlpDeviceEnumAdd(PPDMAUDIODEVICEENUM pDevEnm, PPDMAUDIODEVICE pDev); 181 int DrvAudioHlpDeviceEnumCopyEx(PPDMAUDIODEVICEENUM pDstDevEnm, PPDMAUDIODEVICEENUM pSrcDevEnm, PDMAUDIODIR enmUsage);182 int DrvAudioHlpDeviceEnumCopy(PPDMAUDIODEVICEENUM pDstDevEnm, PPDMAUDIODEVICEENUM pSrcDevEnm);183 PPDMAUDIODEVICEENUM DrvAudioHlpDeviceEnumDup( PPDMAUDIODEVICEENUM pDevEnm);184 int DrvAudioHlpDeviceEnumCopy(PPDMAUDIODEVICEENUM pDstDevEnm, PPDMAUDIODEVICEENUM pSrcDevEnm);185 int DrvAudioHlpDeviceEnumCopyEx(PPDMAUDIODEVICEENUM pDstDevEnm, PPDMAUDIODEVICEENUM pSrcDevEnm, PDMAUDIODIR enmUsage, bool fCopyUserData);186 PPDMAUDIODEVICE DrvAudioHlpDeviceEnumGetDefaultDevice( PPDMAUDIODEVICEENUM pDevEnm, PDMAUDIODIR enmDir);187 void DrvAudioHlpDeviceEnumPrint(const char *pszDesc, PPDMAUDIODEVICEENUM pDevEnm);181 int DrvAudioHlpDeviceEnumCopyEx(PPDMAUDIODEVICEENUM pDstDevEnm, const PPDMAUDIODEVICEENUM pSrcDevEnm, PDMAUDIODIR enmUsage); 182 int DrvAudioHlpDeviceEnumCopy(PPDMAUDIODEVICEENUM pDstDevEnm, const PPDMAUDIODEVICEENUM pSrcDevEnm); 183 PPDMAUDIODEVICEENUM DrvAudioHlpDeviceEnumDup(const PPDMAUDIODEVICEENUM pDevEnm); 184 int DrvAudioHlpDeviceEnumCopy(PPDMAUDIODEVICEENUM pDstDevEnm, const PPDMAUDIODEVICEENUM pSrcDevEnm); 185 int DrvAudioHlpDeviceEnumCopyEx(PPDMAUDIODEVICEENUM pDstDevEnm, const PPDMAUDIODEVICEENUM pSrcDevEnm, PDMAUDIODIR enmUsage, bool fCopyUserData); 186 PPDMAUDIODEVICE DrvAudioHlpDeviceEnumGetDefaultDevice(const PPDMAUDIODEVICEENUM pDevEnm, PDMAUDIODIR enmDir); 187 void DrvAudioHlpDeviceEnumPrint(const char *pszDesc, const PPDMAUDIODEVICEENUM pDevEnm); 188 188 189 189 const char *DrvAudioHlpAudDirToStr(PDMAUDIODIR enmDir); … … 191 191 char *DrvAudioHlpAudDevFlagsToStrA(PDMAUDIODEVFLAG fFlags); 192 192 193 int DrvAudioHlpWAVFileOpen(PPDMAUDIOFILE pFile, const char *pszFile, uint32_t fOpen, PPDMAUDIOPCMPROPS pProps, PDMAUDIOFILEFLAGS fFlags);193 int DrvAudioHlpWAVFileOpen(PPDMAUDIOFILE pFile, const char *pszFile, uint32_t fOpen, const PPDMAUDIOPCMPROPS pProps, PDMAUDIOFILEFLAGS fFlags); 194 194 int DrvAudioHlpWAVFileClose(PPDMAUDIOFILE pFile); 195 195 size_t DrvAudioHlpWAVFileGetDataSize(PPDMAUDIOFILE pFile); -
trunk/src/VBox/Devices/Audio/DrvAudioCommon.cpp
r65636 r65673 141 141 * @param cSamples Number of audio samples to clear in the buffer. 142 142 */ 143 void DrvAudioHlpClearBuf( PPDMAUDIOPCMPROPS pPCMProps, void *pvBuf, size_t cbBuf, uint32_t cSamples)143 void DrvAudioHlpClearBuf(const PPDMAUDIOPCMPROPS pPCMProps, void *pvBuf, size_t cbBuf, uint32_t cSamples) 144 144 { 145 145 AssertPtrReturnVoid(pPCMProps); … … 273 273 * @param fCopyUserData Whether to also copy the user data portion or not. 274 274 */ 275 PPDMAUDIODEVICE DrvAudioHlpDeviceDup( PPDMAUDIODEVICE pDev, bool fCopyUserData)275 PPDMAUDIODEVICE DrvAudioHlpDeviceDup(const PPDMAUDIODEVICE pDev, bool fCopyUserData) 276 276 { 277 277 AssertPtrReturn(pDev, NULL); … … 363 363 * @param pDevEnm Device enumeration to duplicate. 364 364 */ 365 PPDMAUDIODEVICEENUM DrvAudioHlpDeviceEnumDup( PPDMAUDIODEVICEENUM pDevEnm)365 PPDMAUDIODEVICEENUM DrvAudioHlpDeviceEnumDup(const PPDMAUDIODEVICEENUM pDevEnm) 366 366 { 367 367 AssertPtrReturn(pDevEnm, NULL); … … 410 410 * @param fCopyUserData Whether to also copy the user data portion or not. 411 411 */ 412 int DrvAudioHlpDeviceEnumCopyEx(PPDMAUDIODEVICEENUM pDstDevEnm, PPDMAUDIODEVICEENUM pSrcDevEnm,412 int DrvAudioHlpDeviceEnumCopyEx(PPDMAUDIODEVICEENUM pDstDevEnm, const PPDMAUDIODEVICEENUM pSrcDevEnm, 413 413 PDMAUDIODIR enmUsage, bool fCopyUserData) 414 414 { … … 452 452 * @param pSrcDevEnm Source enumeration to use. 453 453 */ 454 int DrvAudioHlpDeviceEnumCopy(PPDMAUDIODEVICEENUM pDstDevEnm, PPDMAUDIODEVICEENUM pSrcDevEnm)454 int DrvAudioHlpDeviceEnumCopy(PPDMAUDIODEVICEENUM pDstDevEnm, const PPDMAUDIODEVICEENUM pSrcDevEnm) 455 455 { 456 456 return DrvAudioHlpDeviceEnumCopyEx(pDstDevEnm, pSrcDevEnm, PDMAUDIODIR_ANY, false /* fCopyUserData */); … … 465 465 * @param enmUsage Usage to get default device for. 466 466 */ 467 PPDMAUDIODEVICE DrvAudioHlpDeviceEnumGetDefaultDevice( PPDMAUDIODEVICEENUM pDevEnm, PDMAUDIODIR enmUsage)467 PPDMAUDIODEVICE DrvAudioHlpDeviceEnumGetDefaultDevice(const PPDMAUDIODEVICEENUM pDevEnm, PDMAUDIODIR enmUsage) 468 468 { 469 469 AssertPtrReturn(pDevEnm, NULL); … … 491 491 * @param pDevEnm Device enumeration to log. 492 492 */ 493 void DrvAudioHlpDeviceEnumPrint(const char *pszDesc, PPDMAUDIODEVICEENUM pDevEnm)493 void DrvAudioHlpDeviceEnumPrint(const char *pszDesc, const PPDMAUDIODEVICEENUM pDevEnm) 494 494 { 495 495 AssertPtrReturnVoid(pszDesc); … … 618 618 * @param enmRecSrc Recording source to convert. 619 619 */ 620 const char *DrvAudioHlpRecSrcToStr( PDMAUDIORECSOURCE enmRecSrc)620 const char *DrvAudioHlpRecSrcToStr(const PDMAUDIORECSOURCE enmRecSrc) 621 621 { 622 622 switch (enmRecSrc) … … 767 767 * @param pProps2 Second properties to compare. 768 768 */ 769 bool DrvAudioHlpPCMPropsAreEqual( PPDMAUDIOPCMPROPS pProps1,PPDMAUDIOPCMPROPS pProps2)769 bool DrvAudioHlpPCMPropsAreEqual(const PPDMAUDIOPCMPROPS pProps1, const PPDMAUDIOPCMPROPS pProps2) 770 770 { 771 771 AssertPtrReturn(pProps1, false); … … 816 816 return false; 817 817 818 fValid |= pProps->uHz > 0;819 fValid |= pProps->cShift == PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pProps->cBits, pProps->cChannels);820 821 fValid |= pProps->fSwapEndian == false; /** @todo Handling Big Endian audio data is not supported yet. */818 fValid &= pProps->uHz > 0; 819 fValid &= pProps->cShift == PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pProps->cBits, pProps->cChannels); 820 821 fValid &= pProps->fSwapEndian == false; /** @todo Handling Big Endian audio data is not supported yet. */ 822 822 823 823 return fValid; … … 832 832 * @param pCfg Stream configuration to compare. 833 833 */ 834 bool DrvAudioHlpPCMPropsAreEqual( PPDMAUDIOPCMPROPS pProps,PPDMAUDIOSTREAMCFG pCfg)834 bool DrvAudioHlpPCMPropsAreEqual(const PPDMAUDIOPCMPROPS pProps, const PPDMAUDIOSTREAMCFG pCfg) 835 835 { 836 836 AssertPtrReturn(pProps, false); … … 847 847 * @param pCfg Pointer to audio stream configuration to store result into. 848 848 */ 849 int DrvAudioHlpPCMPropsToStreamCfg( PPDMAUDIOPCMPROPS pPCMProps, PPDMAUDIOSTREAMCFG pCfg)849 int DrvAudioHlpPCMPropsToStreamCfg(const PPDMAUDIOPCMPROPS pPCMProps, PPDMAUDIOSTREAMCFG pCfg) 850 850 { 851 851 AssertPtrReturn(pPCMProps, VERR_INVALID_POINTER); … … 939 939 } 940 940 941 AssertPtr(pDst); 941 942 return pDst; 942 943 } … … 947 948 * @param pCfg Stream configuration to log. 948 949 */ 949 void DrvAudioHlpStreamCfgPrint( PPDMAUDIOSTREAMCFG pCfg)950 void DrvAudioHlpStreamCfgPrint(const PPDMAUDIOSTREAMCFG pCfg) 950 951 { 951 952 AssertPtrReturnVoid(pCfg); … … 1003 1004 * @remark 1004 1005 */ 1005 uint32_t DrvAudioHlpCalcBitrate( PPDMAUDIOPCMPROPS pProps)1006 uint32_t DrvAudioHlpCalcBitrate(const PPDMAUDIOPCMPROPS pProps) 1006 1007 { 1007 1008 return DrvAudioHlpCalcBitrate(pProps->cBits, pProps->uHz, pProps->cChannels); … … 1137 1138 * @param fFlags Audio file flags. 1138 1139 */ 1139 int DrvAudioHlpWAVFileOpen(PPDMAUDIOFILE pFile, const char *pszFile, uint32_t fOpen, PPDMAUDIOPCMPROPS pProps,1140 int DrvAudioHlpWAVFileOpen(PPDMAUDIOFILE pFile, const char *pszFile, uint32_t fOpen, const PPDMAUDIOPCMPROPS pProps, 1140 1141 PDMAUDIOFILEFLAGS fFlags) 1141 1142 { -
trunk/src/VBox/Devices/Audio/DrvHostDSound.cpp
r65671 r65673 469 469 static HRESULT directSoundPlayInterfaceCreate(PDRVHOSTDSOUND pThis, PDSOUNDSTREAM pStreamDS) 470 470 { 471 AssertPtrReturn(pThis, E_POINTER); 472 AssertPtrReturn(pStreamDS, E_POINTER); 473 471 474 if (pStreamDS->Out.pDS != NULL) 472 475 { … … 509 512 static HRESULT directSoundPlayClose(PDRVHOSTDSOUND pThis, PDSOUNDSTREAM pStreamDS) 510 513 { 511 AssertPtrReturn(pThis, E_POINTER);514 AssertPtrReturn(pThis, E_POINTER); 512 515 AssertPtrReturn(pStreamDS, E_POINTER); 513 516 … … 636 639 RT_ZERO(bc); 637 640 bc.dwSize = sizeof(bc); 641 638 642 hr = IDirectSoundBuffer8_GetCaps(pStreamDS->Out.pDSB, &bc); 639 643 if (FAILED(hr)) … … 770 774 static HRESULT directSoundPlayGetStatus(PDRVHOSTDSOUND pThis, LPDIRECTSOUNDBUFFER8 pDSB, DWORD *pdwStatus) 771 775 { 772 AssertPtr (pThis);776 AssertPtrReturn(pThis, E_POINTER); 773 777 AssertPtrReturn(pDSB, E_POINTER); 778 774 779 AssertPtrNull(pdwStatus); 775 780 … … 843 848 static HRESULT directSoundPlayStart(PDRVHOSTDSOUND pThis, PDSOUNDSTREAM pStreamDS) 844 849 { 845 AssertPtrReturn(pThis, 850 AssertPtrReturn(pThis, E_POINTER); 846 851 AssertPtrReturn(pStreamDS, E_POINTER); 847 852 … … 886 891 */ 887 892 888 static LPCGUID dsoundCaptureSelectDevice(PDRVHOSTDSOUND pThis, PDSOUNDSTREAM pStreamDS) 889 { 890 AssertPtrReturn(pThis, NULL); 891 AssertPtrReturn(pStreamDS, NULL); 892 AssertPtrReturn(pStreamDS->pCfg, NULL); 893 static LPCGUID dsoundCaptureSelectDevice(PDRVHOSTDSOUND pThis, PPDMAUDIOSTREAMCFG pCfg) 894 { 895 AssertPtrReturn(pThis, NULL); 896 AssertPtrReturn(pCfg, NULL); 893 897 894 898 int rc = VINF_SUCCESS; … … 899 903 PDSOUNDDEV pDev = NULL; 900 904 901 switch (p StreamDS->pCfg->DestSource.Source)905 switch (pCfg->DestSource.Source) 902 906 { 903 907 case PDMAUDIORECSOURCE_LINE: … … 932 936 { 933 937 DSLOG(("DSound: Guest source '%s' is using host recording device '%s'\n", 934 DrvAudioHlpRecSrcToStr(p StreamDS->pCfg->DestSource.Source), pDev->pszName));938 DrvAudioHlpRecSrcToStr(pCfg->DestSource.Source), pDev->pszName)); 935 939 936 940 pGUID = &pDev->Guid; … … 948 952 /* This always has to be in the release log. */ 949 953 LogRel(("DSound: Guest source '%s' is using host recording device with GUID '%s'\n", 950 DrvAudioHlpRecSrcToStr(p StreamDS->pCfg->DestSource.Source), pszGUID ? pszGUID: "{?}"));954 DrvAudioHlpRecSrcToStr(pCfg->DestSource.Source), pszGUID ? pszGUID: "{?}")); 951 955 952 956 if (pszGUID) … … 971 975 972 976 973 static HRESULT directSoundCaptureInterfaceCreate(PDRVHOSTDSOUND pThis, PDSOUNDSTREAM pStreamDS) 974 { 977 static HRESULT directSoundCaptureInterfaceCreate(PDRVHOSTDSOUND pThis, PDSOUNDSTREAM pStreamDS, PPDMAUDIOSTREAMCFG pCfg) 978 { 979 AssertPtrReturn(pThis, E_POINTER); 980 AssertPtrReturn(pStreamDS, E_POINTER); 981 AssertPtrReturn(pCfg, E_POINTER); 982 975 983 if (pStreamDS->In.pDSC != NULL) 976 984 { … … 987 995 else 988 996 { 989 LPCGUID pGUID = dsoundCaptureSelectDevice(pThis, p StreamDS);997 LPCGUID pGUID = dsoundCaptureSelectDevice(pThis, pCfg); 990 998 hr = IDirectSoundCapture_Initialize(pStreamDS->In.pDSC, pGUID); 991 999 if (FAILED(hr)) … … 1061 1069 return E_INVALIDARG; 1062 1070 1063 HRESULT hr = directSoundCaptureInterfaceCreate(pThis, pStreamDS );1071 HRESULT hr = directSoundCaptureInterfaceCreate(pThis, pStreamDS, pCfgReq); 1064 1072 if (FAILED(hr)) 1065 1073 return hr; … … 1280 1288 1281 1289 RTMemFree(pDev); 1290 pDev = NULL; 1282 1291 } 1283 1292 } … … 1619 1628 directSoundPlayUnlock(pThis, pDSB, pv1, pv2, cb1, cb2); 1620 1629 1621 pStreamDS->Out.offPlayWritePos = (pStreamDS->Out.offPlayWritePos + PDMAUDIOPCMPROPS_S2B(pProps, cbWrittenTotal)) 1622 % cbBuffer; 1630 pStreamDS->Out.offPlayWritePos = (pStreamDS->Out.offPlayWritePos + cbWrittenTotal) % cbBuffer; 1623 1631 1624 1632 DSLOGF(("DSound: %RU32/%RU32, buffer write pos %ld, rc=%Rrc\n", 1625 PDMAUDIOPCMPROPS_S2B(pProps, cbWrittenTotal), cbLive, pStreamDS->Out.offPlayWritePos, rc));1633 cbWrittenTotal, cbLive, pStreamDS->Out.offPlayWritePos, rc)); 1626 1634 1627 1635 if (pStreamDS->Out.fRestartPlayback)
Note:
See TracChangeset
for help on using the changeset viewer.