Click here to Skip to main content
16,010,268 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: CObArray troubles Pin
Ryan Binns5-Jun-03 23:12
Ryan Binns5-Jun-03 23:12 
GeneralDirectSound Buffer->Lock Error Pin
Miepmuts26-May-03 1:48
Miepmuts26-May-03 1:48 
GeneralRe: DirectSound Buffer->Lock Error Pin
Rage26-May-03 2:11
professionalRage26-May-03 2:11 
GeneralRe: DirectSound Buffer->Lock Error Pin
Miepmuts26-May-03 2:15
Miepmuts26-May-03 2:15 
GeneralRe: DirectSound Buffer->Lock Error Pin
Rage26-May-03 2:16
professionalRage26-May-03 2:16 
GeneralRe: DirectSound Buffer->Lock Error Pin
Miepmuts26-May-03 2:54
Miepmuts26-May-03 2:54 
GeneralRe: DirectSound Buffer->Lock Error Pin
Rage26-May-03 3:44
professionalRage26-May-03 3:44 
GeneralRe: DirectSound Buffer->Lock Error Pin
Miepmuts26-May-03 4:15
Miepmuts26-May-03 4:15 
Allright then. Here it goes:

<br />
hr = DirectSoundCreate(NULL, &m_pDS, 0);<br />
if(hr == DS_OK)<br />
{<br />
  HWND MainhWnd;<br />
  MainhWnd = GetSafeHwnd();<br />
  hr = m_pDS->SetCooperativeLevel(MainhWnd, DSSCL_NORMAL);<br />
  if(hr == DS_OK)<br />
  {<br />
    //Create Primary audio 3D Buffer<br />
    DSBUFFERDESC bufferDesc;<br />
    memset(&bufferDesc, 0, sizeof(DSBUFFERDESC));<br />
    bufferDesc.dwSize = sizeof(DSBUFFERDESC);<br />
    bufferDesc.dwFlags = DSBCAPS_PRIMARYBUFFER | DSBCAPS_GETCURRENTPOSITION2 ;<br />
    bufferDesc.dwBufferBytes = 0;<br />
    bufferDesc.lpwfxFormat = NULL;<br />
    hr = m_pDS->CreateSoundBuffer(&bufferDesc, &m_pPrimaryBuffer, NULL);<br />
    if(hr == DS_OK)<br />
    {<br />
	hr = m_pPrimaryBuffer->QueryInterface( IID_IDirectSound3DBuffer, (void**)    &m_pDS3DBuffer );<br />
	//Set primary internal extended format<br />
	WAVEFORMATEXTENSIBLE formatex;<br />
	memset(&formatex, 0, sizeof(WAVEFORMATEXTENSIBLE));<br />
	formatex.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;<br />
	formatex.Format.nChannels = 4;<br />
	formatex.Format.nSamplesPerSec = 44100;<br />
	formatex.Format.nAvgBytesPerSec = 352800;<br />
	formatex.Format.nBlockAlign = 8;<br />
	formatex.Format.wBitsPerSample = 16;<br />
	formatex.Format.cbSize = 22;<br />
	formatex.Samples.wValidBitsPerSample = 16;<br />
	formatex.dwChannelMask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT<br />
				 | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT;<br />
	formatex.SubFormat = KSDATAFORMAT_SUBTYPE_PCM;<br />
	//Now create a normal sound buffer<br />
	DSBUFFERDESC bufferSec;<br />
	memset(&bufferSec, 0, sizeof(bufferSec));<br />
	bufferSec.dwSize = sizeof(bufferSec);<br />
	bufferSec.dwFlags = DSBCAPS_GETCURRENTPOSITION2;<br />
	bufferSec.lpwfxFormat = &waveformat;<br />
	hr = m_pDS->CreateSoundBuffer(&bufferDesc, &m_pDSBuffer, NULL);<br />
    }<br />
}<br />
<br />
HRESULT hr;<br />
BYTE* pbWavData;<br />
UINT cbWavSize;<br />
VOID* pbData = NULL;<br />
VOID* pbData2 = NULL;<br />
DWORD dwLength;<br />
DWORD dwLength2;<br />
<br />
int nWaveFileSize = ckIn.cksize;<br />
pbWavData = new BYTE[nWaveFileSize];<br />
if(pbWavData == NULL)<br />
{<br />
    return 0;<br />
}<br />
MMIOINFO mmioinfoIn;<br />
<br />
cbWavSize = 0;<br />
if(mmioGetInfo(hmmioIn, &mmioinfoIn, 0) != 0)<br />
{<br />
    return 0;<br />
}<br />
UINT cbDataIn = nWaveFileSize;<br />
if(cbDataIn > ckIn.cksize)<br />
{<br />
    cbDataIn = ckIn.cksize;<br />
}<br />
ckIn.cksize -= cbDataIn;<br />
	<br />
for(DWORD ct = 0; ct < cbDataIn; ct++)<br />
{<br />
    if(mmioinfoIn.pchNext == mmioinfoIn.pchEndRead)<br />
    {<br />
	if(mmioAdvance(hmmioIn, &mmioinfoIn, MMIO_READ) != 0)<br />
	{<br />
	    return 0;<br />
	}<br />
	if(mmioinfoIn.pchNext == mmioinfoIn.pchEndRead)<br />
	{<br />
	    return 0;<br />
	}<br />
    }<br />
<br />
    *((BYTE*)pbWavData + ct) = *((BYTE*)mmioinfoIn.pchNext);<br />
    mmioinfoIn.pchNext++;<br />
}<br />
if(mmioSetInfo(hmmioIn, &mmioinfoIn, 0) != 0)<br />
{<br />
    return 0;<br />
}<br />
cbWavSize = cbDataIn;<br />
m_dwBufferBytes = 8 * 1024;<br />
<br />
StartDataRead(&m_ckIn);<br />
int lPos=0;<br />
hr= m_pDSBuffer->Lock(lPos, m_dwBufferBytes, &pbData, &dwLength, &pbData2,&dwLength2,    DSBLOCK_ENTIREBUFFER);<br />
if( hr != DS_OK)  //hr returns a strange number which equals to DSERR_PRIOLEVELNEEDED<br />
{<br />
   return 0;<br />
}<br />
<br />
memcpy(pbData, pbWavData, m_dwBufferBytes);<br />
m_pDSBuffer->Unlock(pbData, m_dwBufferBytes, NULL, 0);<br />
pbData = NULL;<br />
return 1;<br />
<br />


I hope you can do something with this. There is a part of code in between of initialising the mmio and the chunks.
GeneralGCC with MCVC IDE Pin
Andrew Walker26-May-03 1:24
Andrew Walker26-May-03 1:24 
GeneralRe: GCC with MCVC IDE Pin
tareqsiraj26-May-03 9:42
tareqsiraj26-May-03 9:42 
GeneralVC 5 &lt;-&gt; VC6 Pin
JensB26-May-03 0:04
JensB26-May-03 0:04 
GeneralScope Error Pin
Paul Hooper25-May-03 23:45
Paul Hooper25-May-03 23:45 
GeneralRe: Scope Error Pin
John R. Shaw26-May-03 9:51
John R. Shaw26-May-03 9:51 
GeneralRe: Scope Error Pin
John R. Shaw26-May-03 10:04
John R. Shaw26-May-03 10:04 
GeneralCommunication problem between dialog window and frame window Pin
chen25-May-03 23:38
chen25-May-03 23:38 
GeneralRe: Communication problem between dialog window and frame window Pin
Rage25-May-03 23:52
professionalRage25-May-03 23:52 
QuestionHow Do I Drag&amp;Drop an ActiveX Control Pin
ccdai25-May-03 23:11
ccdai25-May-03 23:11 
GeneralParsing in C Pin
Rickard Andersson2025-May-03 22:57
Rickard Andersson2025-May-03 22:57 
GeneralRe: Parsing in C Pin
jhwurmbach25-May-03 23:26
jhwurmbach25-May-03 23:26 
GeneralRe: Parsing in C Pin
Rickard Andersson2026-May-03 0:24
Rickard Andersson2026-May-03 0:24 
GeneralRe: Parsing in C Pin
John R. Shaw26-May-03 10:13
John R. Shaw26-May-03 10:13 
GeneralRe: Parsing in C Pin
Paul Hooper25-May-03 23:29
Paul Hooper25-May-03 23:29 
GeneralRe: Parsing in C Pin
Rickard Andersson2026-May-03 0:30
Rickard Andersson2026-May-03 0:30 
GeneralRe: Parsing in C Pin
Paul Hooper26-May-03 1:51
Paul Hooper26-May-03 1:51 
GeneralRe: Parsing in C Pin
Rage25-May-03 23:46
professionalRage25-May-03 23:46 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.