Example #1
0
void *
_alutLoadMemoryFromInputStream (InputStream *stream, ALenum *format,
                                ALsizei *size, ALfloat *frequency)
{
    BufferData *bufferData;
    ALenum fmt;
    void *data;

    if (stream == NULL)
    {
        return NULL;
    }

    bufferData = loadFile (stream);
    if (bufferData == NULL)
    {
        _alutInputStreamDestroy (stream);
        return NULL;
    }
    _alutInputStreamDestroy (stream);

    if (!_alutGetFormat (bufferData, &fmt))
    {
        _alutBufferDataDestroy (bufferData);
        return NULL;
    }

    if (size != NULL)
    {
        *size = (ALsizei) _alutBufferDataGetLength (bufferData);
    }

    if (format != NULL)
    {
        *format = fmt;
    }

    if (frequency != NULL)
    {
        *frequency = _alutBufferDataGetSampleFrequency (bufferData);
    }

    data = _alutBufferDataGetData (bufferData);
    _alutBufferDataDetachData (bufferData);
    _alutBufferDataDestroy (bufferData);
    return data;
}
Example #2
0
static ALboolean
passBufferData (BufferData *bufferData, ALuint bid)
{
  ALenum format;
  size_t size;
  ALfloat frequency;
  if (!_alutGetFormat (bufferData, &format))
    {
      return AL_FALSE;
    }
  /* GCC is a bit picky about casting function calls, so we do it in two
     steps... */
  size = _alutBufferDataGetLength (bufferData);
  frequency = _alutBufferDataGetSampleFrequency (bufferData);
  alBufferData (bid, format, _alutBufferDataGetData (bufferData),
                (ALsizei) size, (ALsizei) frequency);
  if (alGetError () != AL_NO_ERROR)
    {
      _alutSetError (ALUT_ERROR_BUFFER_DATA);
      return AL_FALSE;
    }
  return AL_TRUE;
}