Beispiel #1
0
uint16_t stream_read_uint16(stream_t *stream)
{
    uint16_t v;
    stream_read(stream, 2, &v);
#ifdef ROCKBOX_LITTLE_ENDIAN
    _Swap16(v);
#endif
    return v;
}
Beispiel #2
0
static int decoder_alac_init(struct alac_decoder *alac, unsigned char *in_buffer)
{
	unsigned char *ptr = in_buffer;
	int i;

	/* Get ALAC parameters from buffer */
	ptr += 4; /* size */
	ptr += 4; /* frma */
	ptr += 4; /* alac */
	ptr += 4; /* size */
	ptr += 4; /* alac */
	ptr += 4; /* 0 ? */
	alac->samples_per_frame = *(uint32_t*)ptr; /* buffer size / 2 ? */
	if (!host_bigendian)
		_Swap32(alac->samples_per_frame);
	ptr += 4;
	alac->info_7a = *(uint8_t*)ptr;
	ptr += 1;
	alac->sample_size = *(uint8_t*)ptr;
	ptr += 1;
	alac->rice_historymult = *(uint8_t*)ptr;
	ptr += 1;
	alac->rice_initialhistory = *(uint8_t*)ptr;
	ptr += 1;
	alac->rice_kmodifier = *(uint8_t*)ptr;
	ptr += 1;
	alac->numchannels = *(uint8_t*)ptr;
	ptr += 1;
	alac->info_80 = *(uint16_t*)ptr;
	if (!host_bigendian)
		_Swap16(alac->info_80);
	ptr += 2;
	alac->info_82 = *(uint32_t*)ptr;
	if (!host_bigendian)
		_Swap32(alac->info_82);
	ptr += 4;
	alac->info_86 = *(uint32_t*)ptr;
	if (!host_bigendian)
		_Swap32(alac->info_86);
	ptr += 4;
	alac->samplerate = *(uint32_t*)ptr;
	if (!host_bigendian)
		_Swap32(alac->samplerate);

	alac->bytespersample = (alac->sample_size / 8) * alac->numchannels;

	/* Allocate buffers */
	for(i = 0; i < 2; i++)
	{
		alac->predicterror_buffer[i] = malloc(alac->samples_per_frame * 4);
		alac->outputsamples_buffer[i] = malloc(alac->samples_per_frame * 4);
		alac->uncompressed_bytes_buffer[i] = malloc(alac->samples_per_frame * 4);
	}

	return 0;
}
Beispiel #3
0
void alac_set_info(alac_file *alac, char *inputbuffer)
{
  char *ptr = inputbuffer;
  ptr += 4; /* size */
  ptr += 4; /* frma */
  ptr += 4; /* alac */
  ptr += 4; /* size */
  ptr += 4; /* alac */

  ptr += 4; /* 0 ? */

  alac->setinfo_max_samples_per_frame = *(uint32_t*)ptr; /* buffer size / 2 ? */
  if (!host_bigendian)
      _Swap32(alac->setinfo_max_samples_per_frame);
  ptr += 4;
  alac->setinfo_7a = *(uint8_t*)ptr;
  ptr += 1;
  alac->setinfo_sample_size = *(uint8_t*)ptr;
  ptr += 1;
  alac->setinfo_rice_historymult = *(uint8_t*)ptr;
  ptr += 1;
  alac->setinfo_rice_initialhistory = *(uint8_t*)ptr;
  ptr += 1;
  alac->setinfo_rice_kmodifier = *(uint8_t*)ptr;
  ptr += 1;
  alac->setinfo_7f = *(uint8_t*)ptr;
  ptr += 1;
  alac->setinfo_80 = *(uint16_t*)ptr;
  if (!host_bigendian)
      _Swap16(alac->setinfo_80);
  ptr += 2;
  alac->setinfo_82 = *(uint32_t*)ptr;
  if (!host_bigendian)
      _Swap32(alac->setinfo_82);
  ptr += 4;
  alac->setinfo_86 = *(uint32_t*)ptr;
  if (!host_bigendian)
      _Swap32(alac->setinfo_86);
  ptr += 4;
  alac->setinfo_8a_rate = *(uint32_t*)ptr;
  if (!host_bigendian)
      _Swap32(alac->setinfo_8a_rate);
  ptr += 4;

  allocate_buffers(alac);

}