VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /usr/share/emscripten/tests/freealut/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/share/emscripten/tests/freealut/src/alutBufferData.c
#include "alutInternal.h"

struct BufferData_struct
{
  ALvoid *data;
  size_t length;
  ALint numChannels;
  ALint bitsPerSample;
  ALfloat sampleFrequency;
};

BufferData *_alutBufferDataConstruct(ALvoid * data, size_t length, ALint numChannels, ALint bitsPerSample, ALfloat sampleFrequency)
{
  BufferData *bufferData = (BufferData *) _alutMalloc(sizeof(BufferData));

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

  bufferData->data = data;
  bufferData->length = length;
  bufferData->numChannels = numChannels;
  bufferData->bitsPerSample = bitsPerSample;
  bufferData->sampleFrequency = sampleFrequency;

  return bufferData;
}

ALboolean _alutBufferDataDestroy(BufferData * bufferData)
{
  if (bufferData->data != NULL)
  {
    free(bufferData->data);
  }
  free(bufferData);
  return AL_TRUE;
}

ALvoid *_alutBufferDataGetData(const BufferData * bufferData)
{
  return bufferData->data;
}

void _alutBufferDataDetachData(BufferData * bufferData)
{
  bufferData->data = NULL;
}

size_t _alutBufferDataGetLength(const BufferData * bufferData)
{
  return bufferData->length;
}

static ALint getNumChannels(const BufferData * bufferData)
{
  return bufferData->numChannels;
}

static ALint getBitsPerSample(const BufferData * bufferData)
{
  return bufferData->bitsPerSample;
}

ALfloat _alutBufferDataGetSampleFrequency(const BufferData * bufferData)
{
  return bufferData->sampleFrequency;
}

/****************************************************************************
 * The utility functions below do not know the internal BufferData
 * representation.
 ****************************************************************************/

ALboolean _alutGetFormat(const BufferData * bufferData, ALenum * format)
{
  if (!_alutFormatConstruct(getNumChannels(bufferData), getBitsPerSample(bufferData), format))
  {
    _alutSetError(ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE);
    return AL_FALSE;
  }
  return AL_TRUE;
}

static ALuint generateBuffer(void)
{
  ALuint buffer;

  alGenBuffers(1, &buffer);
  if (alGetError() != AL_NO_ERROR)
  {
    _alutSetError(ALUT_ERROR_GEN_BUFFERS);
    return AL_NONE;
  }
  return buffer;
}

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

ALuint _alutPassBufferData(BufferData * bufferData)
{
  ALuint buffer = generateBuffer();

  if (buffer == AL_NONE)
  {
    return AL_NONE;
  }

  if (!passBufferData(bufferData, buffer))
  {
    return AL_NONE;
  }

  return buffer;
}

VaKeR 2022