Exemplo n.º 1
0
void safe_decoder_delete_(FLAC__FileDecoder *decoder)
{
	if(decoder) {
		safe_decoder_finish_(decoder);
		FLAC__file_decoder_delete(decoder);
	}
}
Exemplo n.º 2
0
void FLAC_plugin__decoder_delete(FLAC__FileDecoder *decoder)
{
	if (decoder)
	{
		FLAC_plugin__decoder_finish(decoder);
		FLAC__file_decoder_delete(decoder);
	}
}
Exemplo n.º 3
0
static void
loader_flc_close(libaudio_prop_t *prop)
{
  flc_data_t *data;

  assert(prop != NULL);
  assert(prop->type == LIBAUDIO_TYPE_FLC);
  assert(prop->loader_data != NULL);
  
  data = (flc_data_t *)prop->loader_data;
  FLAC__file_decoder_delete(data->decoder);
  free(data);
}
Exemplo n.º 4
0
const char *grabbag__replaygain_analyze_file(const char *filename, float *title_gain, float *title_peak)
{
	DecoderInstance instance;
	FLAC__FileDecoder *decoder = FLAC__file_decoder_new();

	if(0 == decoder)
		return "memory allocation error";

	instance.error = false;

	/* It does these three by default but lets be explicit: */
	FLAC__file_decoder_set_md5_checking(decoder, false);
	FLAC__file_decoder_set_metadata_ignore_all(decoder);
	FLAC__file_decoder_set_metadata_respond(decoder, FLAC__METADATA_TYPE_STREAMINFO);

	FLAC__file_decoder_set_filename(decoder, filename);
	FLAC__file_decoder_set_write_callback(decoder, write_callback_);
	FLAC__file_decoder_set_metadata_callback(decoder, metadata_callback_);
	FLAC__file_decoder_set_error_callback(decoder, error_callback_);
	FLAC__file_decoder_set_client_data(decoder, &instance);

	if(FLAC__file_decoder_init(decoder) != FLAC__FILE_DECODER_OK) {
		FLAC__file_decoder_delete(decoder);
		return "initializing decoder";
	}

	if(!FLAC__file_decoder_process_until_end_of_file(decoder) || instance.error) {
		FLAC__file_decoder_delete(decoder);
		return "decoding file";
	}

	FLAC__file_decoder_delete(decoder);

	grabbag__replaygain_get_title(title_gain, title_peak);

	return 0;
}
Exemplo n.º 5
0
static libaudio_prop_t *
loader_flc_open_prop(const char *filename, libaudio_prop_t *prop)
{
  flc_data_t *data;
  FLAC__FileDecoder *decoder;

  data = (flc_data_t *)malloc(sizeof(flc_data_t));
  if (data == NULL)
    return NULL;

  decoder = FLAC__file_decoder_new();
  if (decoder == NULL)
    return NULL;

  if (!flac_init(decoder, data, filename))
    {
      FLAC__file_decoder_delete(decoder);
      free(data);
      return NULL;
    }

  if (FLAC__file_decoder_init(decoder) != FLAC__FILE_DECODER_OK)
    {
      FLAC__file_decoder_delete(decoder);
      free(data);
      return NULL;
    }

  /*
   *  The metadata callback should fill the sample_rate, channels
   *  and bits_per_sample values in our data structure.
   */
  data->sample_rate = 0;
  if (!FLAC__file_decoder_process_metadata(decoder))
    {
      FLAC__file_decoder_delete(decoder);
      free(data);
      return NULL;
    }

  if (data->sample_rate == 0)
    {
      /*
       *  We got no stream info while processing the metadata, odd.
       */
      FLAC__file_decoder_delete(decoder);
      free(data);
      return NULL;
    }

  data->eof = 0;
  data->idx = 0;
  data->size = 0;
  data->decoder = decoder;

  prop->type = LIBAUDIO_TYPE_FLC;
  prop->loader = self;
  prop->loader_data = data;

  prop->sample_freq = data->sample_rate;
  prop->sample_size = data->bits_per_sample;
  prop->channels = data->channels;

  return prop;
}