[Xbyamp-cvs] xbmp/player AsyncDirectSound.cpp,1.3,1.4
Status: Pre-Alpha
Brought to you by:
yamp
|
From: <ya...@us...> - 2002-12-05 21:53:40
|
Update of /cvsroot/xbyamp/xbmp/player
In directory sc8-pr-cvs1:/tmp/cvs-serv23530
Modified Files:
AsyncDirectSound.cpp
Log Message:
no message
Index: AsyncDirectSound.cpp
===================================================================
RCS file: /cvsroot/xbyamp/xbmp/player/AsyncDirectSound.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** AsyncDirectSound.cpp 4 Dec 2002 20:57:37 -0000 1.3
--- AsyncDirectSound.cpp 5 Dec 2002 21:53:37 -0000 1.4
***************
*** 62,66 ****
m_pDSound->GetTime(&m_delay);
m_delay-=m_startTime;
- mp_msg(0,0,"callback%i", m_delay);
}
}
--- 62,65 ----
***************
*** 71,76 ****
CASyncDirectSound::CASyncDirectSound(int iChannels, unsigned int uiSamplesPerSec, unsigned int uiBitsPerSample)
{
mp_msg(0,0,"init directsound chns:%i rate:%i, bits:%i",iChannels,uiSamplesPerSec,uiBitsPerSample);
! m_dwPacketSize = 4608;
m_bPause = false;
m_bIsPlaying = false;
--- 70,76 ----
CASyncDirectSound::CASyncDirectSound(int iChannels, unsigned int uiSamplesPerSec, unsigned int uiBitsPerSample)
{
+
mp_msg(0,0,"init directsound chns:%i rate:%i, bits:%i",iChannels,uiSamplesPerSec,uiBitsPerSample);
! m_dwPacketSize = 1152 * 2 * iChannels;
m_bPause = false;
m_bIsPlaying = false;
***************
*** 85,98 ****
ZeroMemory(&m_wfx,sizeof(m_wfx));
! // request a 16-bit stereo primary sound buffer with 22 KHz sampling rate
! m_wfx.wFormatTag = WAVE_FORMAT_PCM;
! m_wfx.nChannels = iChannels;
! m_wfx.nSamplesPerSec = uiSamplesPerSec;
! m_wfx.wBitsPerSample = uiBitsPerSample;
! m_wfx.nBlockAlign = (m_wfx.wBitsPerSample / 8) * m_wfx.nChannels;
! m_wfx.nAvgBytesPerSec = m_wfx.nSamplesPerSec * m_wfx.nBlockAlign;
// Create enough samples to hold approx 2 sec worth of audio.
! m_dwNumPackets = ( 2 * (m_wfx.nSamplesPerSec / ( m_dwPacketSize / 2 * m_wfx.nChannels )));
m_pbSampleData = new BYTE[ m_dwNumPackets * m_dwPacketSize ];
m_adwStatus = new DWORD[ m_dwNumPackets ];
--- 85,97 ----
ZeroMemory(&m_wfx,sizeof(m_wfx));
! XAudioCreatePcmFormat( iChannels,
! uiSamplesPerSec,
! uiBitsPerSample,
! &m_wfx
! );
!
// Create enough samples to hold approx 2 sec worth of audio.
! m_dwNumPackets = ( (m_wfx.nSamplesPerSec / ( m_dwPacketSize / (2 * m_wfx.nChannels) )) / 2);
m_pbSampleData = new BYTE[ m_dwNumPackets * m_dwPacketSize ];
m_adwStatus = new DWORD[ m_dwNumPackets ];
***************
*** 110,125 ****
for( DWORD j = 0; j < m_dwNumPackets; j++ )
! m_adwStatus[ j ] = XMEDIAPACKET_STATUS_SUCCESS;
! DSMIXBINVOLUMEPAIR dsmbvp[6] = {DSMIXBINVOLUMEPAIRS_DEFAULT_6CHANNEL}; // xbmp
DSMIXBINS dsmb;
! dsmb.dwMixBinCount = 6;
! dsmb.lpMixBinVolumePairs = dsmbvp;
DSSTREAMDESC dssd;
memset(&dssd,0,sizeof(dssd));
dssd.dwFlags = DSSTREAMCAPS_ACCURATENOTIFY; // xbmp=0
dssd.dwMaxAttachedPackets = m_dwNumPackets;
! dssd.lpwfxFormat = &m_wfx;
dssd.lpfnCallback = StaticStreamCallback;
dssd.lpvContext = this;
--- 109,167 ----
for( DWORD j = 0; j < m_dwNumPackets; j++ )
! m_adwStatus[ j ] = XMEDIAPACKET_STATUS_SUCCESS;
! DSMIXBINVOLUMEPAIR dsmbvp6[6] = {DSMIXBINVOLUMEPAIRS_DEFAULT_6CHANNEL};
! DSMIXBINVOLUMEPAIR dsmbvp4[4] = {DSMIXBINVOLUMEPAIRS_DEFAULT_4CHANNEL};
! DSMIXBINVOLUMEPAIR dsmbvp2[4] = {DSMIXBINVOLUMEPAIRS_DEFAULT_STEREO};
! DSMIXBINVOLUMEPAIR dsmbvp1[4] = {DSMIXBINVOLUMEPAIRS_DEFAULT_MONO};
DSMIXBINS dsmb;
!
!
! WAVEFORMATEXTENSIBLE wfx;
! wfx.Format = m_wfx;
! wfx.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
! wfx.Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE);
! wfx.Samples.wValidBitsPerSample = wfx.Format.wBitsPerSample;
! switch (iChannels)
! {
! case 1:
! wfx.dwChannelMask = SPEAKER_FRONT_LEFT;
! dsmb.dwMixBinCount = 1;
! dsmb.lpMixBinVolumePairs = dsmbvp1;
! break;
!
! case 2:
! wfx.dwChannelMask = SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT;
! dsmb.dwMixBinCount = 2;
! dsmb.lpMixBinVolumePairs = dsmbvp2;
! break;
!
! case 3:
! case 4:
! wfx.dwChannelMask =SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_BACK_LEFT|SPEAKER_BACK_RIGHT;
! dsmb.dwMixBinCount = 4;
! dsmb.lpMixBinVolumePairs = dsmbvp4;
! break;
!
! case 5:
! wfx.dwChannelMask =SPEAKER_FRONT_CENTER|SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_BACK_LEFT|SPEAKER_BACK_RIGHT;
! dsmb.dwMixBinCount = 5;
! dsmb.lpMixBinVolumePairs = dsmbvp6;
! break;
!
! case 6:
! wfx.dwChannelMask = SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER|SPEAKER_LOW_FREQUENCY|SPEAKER_BACK_LEFT|SPEAKER_BACK_RIGHT;
! dsmb.dwMixBinCount = 6;
! dsmb.lpMixBinVolumePairs = dsmbvp6;
! break;
! }
! wfx.SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
DSSTREAMDESC dssd;
memset(&dssd,0,sizeof(dssd));
+
dssd.dwFlags = DSSTREAMCAPS_ACCURATENOTIFY; // xbmp=0
dssd.dwMaxAttachedPackets = m_dwNumPackets;
! dssd.lpwfxFormat = (WAVEFORMATEX*)&wfx;
dssd.lpfnCallback = StaticStreamCallback;
dssd.lpvContext = this;
***************
*** 132,135 ****
--- 174,182 ----
m_pStream->SetHeadroom(600);
m_pStream->SetVolume(VOLUME_MAX);
+ m_pStream->Flush();
+ // if (S_OK== m_pStream->SetFormat((WAVEFORMATEX*)&wfx))
+ // {
+ // OUTPUTDEBUG("*WARNING* Unable to set format on sound stream!");
+ // }
m_bIsAllocated = true;
|