Ejemplo n.º 1
0
Archivo: ga.c Proyecto: Botyto/Core
/* Sound Functions */
ga_Sound* ga_sound_create(ga_Memory* in_memory, ga_Format* in_format)
{
  ga_Sound* ret = gcX_ops->allocFunc(sizeof(ga_Sound));
  ret->numSamples = ga_memory_size(in_memory) / ga_format_sampleSize(in_format);
  memcpy(&ret->format, in_format, sizeof(ga_Format));
  ga_memory_acquire(in_memory);
  ret->memory = in_memory;
  ret->refMutex = gc_mutex_create();
  ret->refCount = 1;
  return (ga_Sound*)ret;
}
Ejemplo n.º 2
0
gc_int32 gauX_data_source_memory_seek(void* in_context, gc_int32 in_offset, gc_int32 in_origin)
{
  gau_DataSourceMemoryContext* ctx = (gau_DataSourceMemoryContext*)in_context;
  gc_int32 dataSize = ga_memory_size(ctx->memory);
  gc_mutex_lock(ctx->memMutex);
  switch(in_origin)
  {
  case GA_SEEK_ORIGIN_SET: ctx->pos = in_offset; break;
  case GA_SEEK_ORIGIN_CUR: ctx->pos += in_offset; break;
  case GA_SEEK_ORIGIN_END: ctx->pos = dataSize - in_offset; break;
  }
  ctx->pos = ctx->pos < 0 ? 0 : ctx->pos > dataSize ? dataSize : ctx->pos;
  gc_mutex_unlock(ctx->memMutex);
  return 0;
}
Ejemplo n.º 3
0
gc_int32 gauX_data_source_memory_read(void* in_context, void* in_dst, gc_int32 in_size, gc_int32 in_count)
{
  gau_DataSourceMemoryContext* ctx = (gau_DataSourceMemoryContext*)in_context;
  gc_int32 ret = 0;
  gc_int32 dataSize = ga_memory_size(ctx->memory);
  gc_int32 toRead = in_size * in_count;
  gc_int32 remaining;

  gc_mutex_lock(ctx->memMutex);
  remaining = dataSize - ctx->pos;
  toRead = toRead < remaining ? toRead : remaining;
  toRead = toRead - (toRead % in_size);
  if(toRead)
  {
    memcpy(in_dst, (char*)ga_memory_data(ctx->memory) + ctx->pos, toRead);
    ctx->pos += toRead;
    ret = toRead / in_size;
  }
  gc_mutex_unlock(ctx->memMutex);
  return ret;
}
Ejemplo n.º 4
0
Archivo: ga.c Proyecto: Botyto/Core
gc_int32 ga_sound_numSamples(ga_Sound* in_sound)
{
  return ga_memory_size(in_sound->memory) / ga_format_sampleSize(&in_sound->format);
}
Ejemplo n.º 5
0
Archivo: ga.c Proyecto: Botyto/Core
gc_int32 ga_sound_size(ga_Sound* in_sound)
{
  return ga_memory_size(in_sound->memory);
}