Re: Problems with alSourceQueueBuffers on MacOSX

Juan Miguel Martín Muñoz <[email protected]> Fri, 15 Jul 2011 09:56:09 +0200
Newsgroups gmane.comp.lib.openal
Message-ID <CADN8KfTY5ih0PTQnfOkdb6kNU_RKtRhAAGyyJ7LBGpr7crk_vw@mail.gmail.com>
Ah, sorry Eric, alGetString(err) returns NULL :(

El 15 de julio de 2011 09:48, Juan Miguel Martín Muñoz
<[email protected]>escribió:

> Good morning!
>
> Jason, Eric, thanks for your reply.
> alGetError() after alSourceQueueBuffers() returns -50. I don't understand
> that, -50 is not a valid return value for alGetError.
> But I found some new. alSourceQueueBuffers returns some error (???) because
> the buffer is corrupt.
>
> I'll try to explain what happens with the code
>
> ALenum err = alGetError(); *// at this point alGetError
> returns AL_NO_ERROR*
>
> // Is the buffer empty?
> alGetSourcei(uiSource, AL_BUFFERS_QUEUED, &iQueuedBuffers); *// iQueuedBuffers
> is 0*
> err = alGetError(); *// at this point alGetError returns AL_NO_ERROR*
>
> if (iQueuedBuffers == 0)
> {
>     // Fill all the Buffers with decoded audio data from the OggVorbis file
>     for (iLoop = 0; iLoop < PS_NUM_BUFFERS; iLoop++) *// PS_NUM_BUFFERS =
> 2*
>
>     {
>         ulBytesWritten = DecodeOggVorbis(&sOggVorbisFile, pDecodeBuffer,
> ulBufferSize, ulChannels);
>         if (ulBytesWritten)
>         {
>             alGetError();
>             *// ulFormat is AL_FORMAT_STEREO16, pDecodeBuffer type is
> (ALchar *), ulBytesWritten is 44100, ulFrequency is 44100*
>             alBufferData(uiBuffers[iLoop], ulFormat, pDecodeBuffer,
> ulBytesWritten, ulFrequency);
>             err = alGetError(); *// at this point alGetError
> returns AL_NO_ERROR!!!*
>         }
>     }
>
> ALboolean bTest = alIsBuffer(uiBuffers[0]); *// bTest = AL_TRUE*
> bTest = alIsBuffer(uiBuffers[1]); *// bTest = AL_TRUE*
>
> ALint res;
> alGetBufferi(uiBuffers[0], AL_BITS, &res); *// res = 16 (this is OK)*
> alGetBufferi(uiBuffers[0], AL_CHANNELS, &res); *// res = 2 (this is OK)*
> alGetBufferi(uiBuffers[0], AL_SIZE, &res); *// res = 44100 (this is OK)*
> alGetBufferi(uiBuffers[0], AL_FREQUENCY, &res); *// res = -2147483648
> (this is CORRUPT!)*
> *// uiBuffers[1] returns the same values*
>
> err = alGetError(); *// at this point alGetError returns AL_NO_ERROR!!!*
>
> alSourceQueueBuffers(uiSource, PS_NUM_BUFFERS, uiBuffers);
> err = alGetError(); *// err is -50 ?¿?¿?¿?¿*
> }
>
> Thanks for your time!
>
> El 14 de julio de 2011 23:15, Eric Wing <[email protected]> escribió:
>
> On 7/14/11, Juan Miguel Martín Muñoz <[email protected]> wrote:
>> > Hi!
>> >
>> > I've this code to fill buffers with decode audio data
>> >
>> > // Is the buffer empty?
>> > alGetSourcei(uiSource, AL_BUFFERS_QUEUED, &iQueuedBuffers);
>> > if (iQueuedBuffers == 0)
>> > {
>> > // Fill all the Buffers with decoded audio data from the OggVorbis file
>> > for (iLoop = 0; iLoop < PS_NUM_BUFFERS; iLoop++)
>> > {
>> > ulBytesWritten = DecodeOggVorbis(&sOggVorbisFile, pDecodeBuffer,
>> > ulBufferSize, ulChannels);
>> > if (ulBytesWritten)
>> > {
>> > alBufferData(uiBuffers[iLoop], ulFormat, pDecodeBuffer, ulBytesWritten,
>> > ulFrequency);
>> > }
>> > }
>> > alGetError();
>> > alSourceQueueBuffers(uiSource, PS_NUM_BUFFERS, uiBuffers);
>> > ALenum err = alGetError();
>> > }
>> >
>> > // Start playing source
>> > alSourcePlay(uiSource);
>> >
>> > This code works fine on PC but on MacOSX (10.6) I ger an error code
>> "-50"
>> > after alSourceQueueBuffers.
>> >
>> > Thanks in advance!
>> >
>>
>> What does alGetString(err) say?
>> Does alGetError return an error for any of your other OpenAL commands?
>>
>> Random guess: maybe you need more syntax:
>> alSourceQueueBuffers(uiSource, PS_NUM_BUFFERS, &uiBuffers);
>> or
>> alSourceQueueBuffers(uiSource, PS_NUM_BUFFERS, &uiBuffers[0]);
>>
>> -Eric
>> --
>> Beginning iPhone Games Development
>> http://playcontrol.net/iphonegamebook/
>>
>
>

_______________________________________________
Openal mailing list
[email protected]
http://opensource.creative.com/mailman/listinfo/openal