[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; |