Add audio_format_init() function
It makes no difference right now, but we're about to add an endianness flag and will want to make sure it's correctly initialised every time.
This commit is contained in:
parent
4100035b19
commit
37754559b8
@ -36,6 +36,15 @@ static inline void audio_format_clear(struct audio_format *af)
|
||||
af->channels = 0;
|
||||
}
|
||||
|
||||
static inline void audio_format_init(struct audio_format *af,
|
||||
uint32_t sample_rate,
|
||||
uint8_t bits, uint8_t channels)
|
||||
{
|
||||
af->sample_rate = sample_rate;
|
||||
af->bits = bits;
|
||||
af->channels = channels;
|
||||
}
|
||||
|
||||
static inline bool audio_format_defined(const struct audio_format *af)
|
||||
{
|
||||
return af->sample_rate != 0;
|
||||
|
@ -41,6 +41,8 @@ audio_format_parse(struct audio_format *dest, const char *src, GError **error)
|
||||
{
|
||||
char *endptr;
|
||||
unsigned long value;
|
||||
uint32_t rate;
|
||||
uint8_t bits, channels;
|
||||
|
||||
audio_format_clear(dest);
|
||||
|
||||
@ -61,7 +63,7 @@ audio_format_parse(struct audio_format *dest, const char *src, GError **error)
|
||||
return false;
|
||||
}
|
||||
|
||||
dest->sample_rate = value;
|
||||
rate = value;
|
||||
|
||||
/* parse sample format */
|
||||
|
||||
@ -81,7 +83,7 @@ audio_format_parse(struct audio_format *dest, const char *src, GError **error)
|
||||
return false;
|
||||
}
|
||||
|
||||
dest->bits = value;
|
||||
bits = value;
|
||||
|
||||
/* parse channel count */
|
||||
|
||||
@ -93,7 +95,9 @@ audio_format_parse(struct audio_format *dest, const char *src, GError **error)
|
||||
return false;
|
||||
}
|
||||
|
||||
dest->channels = value;
|
||||
channels = value;
|
||||
|
||||
audio_format_init(dest, rate, bits, channels);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -195,9 +195,8 @@ void flac_metadata_common_cb(const FLAC__StreamMetadata * block,
|
||||
|
||||
switch (block->type) {
|
||||
case FLAC__METADATA_TYPE_STREAMINFO:
|
||||
data->audio_format.bits = (int8_t)si->bits_per_sample;
|
||||
data->audio_format.sample_rate = si->sample_rate;
|
||||
data->audio_format.channels = (int8_t)si->channels;
|
||||
audio_format_init(&data->audio_format, si->sample_rate,
|
||||
si->bits_per_sample, si->channels);
|
||||
data->total_time = ((float)si->total_samples) / (si->sample_rate);
|
||||
break;
|
||||
case FLAC__METADATA_TYPE_VORBIS_COMMENT:
|
||||
|
@ -136,11 +136,9 @@ audiofile_stream_decode(struct decoder *decoder, struct input_stream *is)
|
||||
afSetVirtualSampleFormat(af_fp, AF_DEFAULT_TRACK,
|
||||
AF_SAMPFMT_TWOSCOMP, bits);
|
||||
afGetVirtualSampleFormat(af_fp, AF_DEFAULT_TRACK, &fs, &bits);
|
||||
audio_format.bits = (uint8_t)bits;
|
||||
audio_format.sample_rate =
|
||||
(unsigned int)afGetRate(af_fp, AF_DEFAULT_TRACK);
|
||||
audio_format.channels =
|
||||
(uint8_t)afGetVirtualChannels(af_fp, AF_DEFAULT_TRACK);
|
||||
|
||||
audio_format_init(&audio_format, afGetRate(af_fp, AF_DEFAULT_TRACK),
|
||||
bits, afGetVirtualChannels(af_fp, AF_DEFAULT_TRACK));
|
||||
|
||||
if (!audio_format_valid(&audio_format)) {
|
||||
g_warning("Invalid audio format: %u:%u:%u\n",
|
||||
|
@ -262,11 +262,7 @@ faad_decoder_init(faacDecHandle decoder, struct decoder_buffer *buffer,
|
||||
|
||||
decoder_buffer_consume(buffer, nbytes);
|
||||
|
||||
*audio_format = (struct audio_format){
|
||||
.bits = 16,
|
||||
.channels = channels,
|
||||
.sample_rate = sample_rate,
|
||||
};
|
||||
audio_format_init(audio_format, sample_rate, 16, channels);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -267,6 +267,7 @@ ffmpeg_decode_internal(struct ffmpeg_context *ctx)
|
||||
struct audio_format audio_format;
|
||||
enum decoder_command cmd;
|
||||
int total_time;
|
||||
uint8_t bits;
|
||||
|
||||
total_time = 0;
|
||||
|
||||
@ -275,13 +276,13 @@ ffmpeg_decode_internal(struct ffmpeg_context *ctx)
|
||||
}
|
||||
|
||||
#if LIBAVCODEC_VERSION_INT >= ((51<<16)+(41<<8)+0)
|
||||
audio_format.bits = (uint8_t) av_get_bits_per_sample_format(codec_context->sample_fmt);
|
||||
bits = (uint8_t) av_get_bits_per_sample_format(codec_context->sample_fmt);
|
||||
#else
|
||||
/* XXX fixme 16-bit for older ffmpeg (13 Aug 2007) */
|
||||
audio_format.bits = (uint8_t) 16;
|
||||
bits = (uint8_t) 16;
|
||||
#endif
|
||||
audio_format.sample_rate = (unsigned int)codec_context->sample_rate;
|
||||
audio_format.channels = codec_context->channels;
|
||||
audio_format_init(&audio_format, codec_context->sample_rate, bits,
|
||||
codec_context->channels);
|
||||
|
||||
if (!audio_format_valid(&audio_format)) {
|
||||
g_warning("Invalid audio format: %u:%u:%u\n",
|
||||
|
@ -1148,13 +1148,6 @@ mp3_read(struct mp3_data *data, struct replay_gain_info **replay_gain_info_r)
|
||||
return ret != DECODE_BREAK;
|
||||
}
|
||||
|
||||
static void mp3_audio_format(struct mp3_data *data, struct audio_format *af)
|
||||
{
|
||||
af->bits = 24;
|
||||
af->sample_rate = (data->frame).header.samplerate;
|
||||
af->channels = MAD_NCHANNELS(&(data->frame).header);
|
||||
}
|
||||
|
||||
static void
|
||||
mp3_decode(struct decoder *decoder, struct input_stream *input_stream)
|
||||
{
|
||||
@ -1170,7 +1163,8 @@ mp3_decode(struct decoder *decoder, struct input_stream *input_stream)
|
||||
return;
|
||||
}
|
||||
|
||||
mp3_audio_format(&data, &audio_format);
|
||||
audio_format_init(&audio_format, data.frame.header.samplerate, 24,
|
||||
MAD_NCHANNELS(&data.frame.header));
|
||||
|
||||
decoder_initialized(decoder, &audio_format,
|
||||
data.input_stream->seekable, data.total_time);
|
||||
|
@ -175,9 +175,7 @@ mod_decode(struct decoder *decoder, const char *path)
|
||||
return;
|
||||
}
|
||||
|
||||
audio_format.bits = 16;
|
||||
audio_format.sample_rate = 44100;
|
||||
audio_format.channels = 2;
|
||||
audio_format_init(&audio_format, 44100, 16, 2);
|
||||
|
||||
secPerByte =
|
||||
1.0 / ((audio_format.bits * audio_format.channels / 8.0) *
|
||||
|
@ -121,9 +121,7 @@ mod_decode(struct decoder *decoder, struct input_stream *is)
|
||||
return;
|
||||
}
|
||||
|
||||
audio_format.bits = 16;
|
||||
audio_format.sample_rate = 44100;
|
||||
audio_format.channels = 2;
|
||||
audio_format_init(&audio_format, 44100, 16, 2);
|
||||
|
||||
sec_perbyte =
|
||||
1.0 / ((audio_format.bits * audio_format.channels / 8.0) *
|
||||
|
@ -131,11 +131,7 @@ mp4_faad_new(mp4ff_t *mp4fh, int *track_r, struct audio_format *audio_format)
|
||||
}
|
||||
|
||||
*track_r = track;
|
||||
*audio_format = (struct audio_format){
|
||||
.bits = 16,
|
||||
.channels = channels,
|
||||
.sample_rate = sample_rate,
|
||||
};
|
||||
audio_format_init(audio_format, sample_rate, 16, channels);
|
||||
|
||||
if (!audio_format_valid(audio_format)) {
|
||||
g_warning("Invalid audio format: %u:%u:%u\n",
|
||||
|
@ -193,9 +193,7 @@ mpcdec_decode(struct decoder *mpd_decoder, struct input_stream *is)
|
||||
mpc_demux_get_info(demux, &info);
|
||||
#endif
|
||||
|
||||
audio_format.bits = 24;
|
||||
audio_format.channels = info.channels;
|
||||
audio_format.sample_rate = info.sample_freq;
|
||||
audio_format_init(&audio_format, info.sample_freq, 24, info.channels);
|
||||
|
||||
if (!audio_format_valid(&audio_format)) {
|
||||
#ifndef MPC_IS_OLD_API
|
||||
|
@ -103,9 +103,7 @@ sidplay_file_decode(struct decoder *decoder, const char *path_fs)
|
||||
/* initialize the MPD decoder */
|
||||
|
||||
struct audio_format audio_format;
|
||||
audio_format.sample_rate = 48000;
|
||||
audio_format.bits = 16;
|
||||
audio_format.channels = 2;
|
||||
audio_format_init(&audio_format, 48000, 16, 2);
|
||||
|
||||
decoder_initialized(decoder, &audio_format, false, -1);
|
||||
|
||||
|
@ -124,12 +124,10 @@ sndfile_stream_decode(struct decoder *decoder, struct input_stream *is)
|
||||
return;
|
||||
}
|
||||
|
||||
audio_format.sample_rate = info.samplerate;
|
||||
/* for now, always read 32 bit samples. Later, we could lower
|
||||
MPD's CPU usage by reading 16 bit samples with
|
||||
sf_readf_short() on low-quality source files. */
|
||||
audio_format.bits = 32;
|
||||
audio_format.channels = info.channels;
|
||||
audio_format_init(&audio_format, info.samplerate, 32, info.channels);
|
||||
|
||||
if (!audio_format_valid(&audio_format)) {
|
||||
g_warning("invalid audio format");
|
||||
|
@ -324,8 +324,7 @@ vorbis_stream_decode(struct decoder *decoder,
|
||||
vorbis_info *vi = ov_info(&vf, -1);
|
||||
struct replay_gain_info *new_rgi;
|
||||
|
||||
audio_format.channels = vi->channels;
|
||||
audio_format.sample_rate = vi->rate;
|
||||
audio_format_init(&audio_format, vi->rate, 16, vi->channels);
|
||||
|
||||
if (!audio_format_valid(&audio_format)) {
|
||||
g_warning("Invalid audio format: %u:%u:%u\n",
|
||||
|
@ -145,9 +145,9 @@ wavpack_decode(struct decoder *decoder, WavpackContext *wpc, bool can_seek,
|
||||
int bytes_per_sample, output_sample_size;
|
||||
int position;
|
||||
|
||||
audio_format.sample_rate = WavpackGetSampleRate(wpc);
|
||||
audio_format.channels = WavpackGetReducedChannels(wpc);
|
||||
audio_format.bits = WavpackGetBitsPerSample(wpc);
|
||||
audio_format_init(&audio_format, WavpackGetSampleRate(wpc),
|
||||
WavpackGetBitsPerSample(wpc),
|
||||
WavpackGetReducedChannels(wpc));
|
||||
|
||||
/* round bitwidth to 8-bit units */
|
||||
audio_format.bits = (audio_format.bits + 7) & (~7);
|
||||
|
@ -41,11 +41,7 @@ encoder_to_stdout(struct encoder *encoder)
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
GError *error = NULL;
|
||||
struct audio_format audio_format = {
|
||||
.sample_rate = 44100,
|
||||
.bits = 16,
|
||||
.channels = 2,
|
||||
};
|
||||
struct audio_format audio_format;
|
||||
bool ret;
|
||||
const char *encoder_name;
|
||||
const struct encoder_plugin *plugin;
|
||||
@ -66,6 +62,8 @@ int main(int argc, char **argv)
|
||||
else
|
||||
encoder_name = "vorbis";
|
||||
|
||||
audio_format_init(&audio_format, 44100, 16, 2);
|
||||
|
||||
/* create the encoder */
|
||||
|
||||
plugin = encoder_plugin_get(encoder_name);
|
||||
|
@ -70,11 +70,7 @@ load_filter(const char *name)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct audio_format audio_format = {
|
||||
.sample_rate = 44100,
|
||||
.bits = 16,
|
||||
.channels = 2,
|
||||
};
|
||||
struct audio_format audio_format;
|
||||
bool success;
|
||||
GError *error = NULL;
|
||||
struct filter *filter;
|
||||
@ -87,6 +83,8 @@ int main(int argc, char **argv)
|
||||
return 1;
|
||||
}
|
||||
|
||||
audio_format_init(&audio_format, 44100, 16, 2);
|
||||
|
||||
g_thread_init(NULL);
|
||||
|
||||
/* read configuration file (mpd.conf) */
|
||||
|
@ -100,11 +100,7 @@ load_audio_output(struct audio_output *ao, const char *name)
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct audio_output ao;
|
||||
struct audio_format audio_format = {
|
||||
.sample_rate = 44100,
|
||||
.bits = 16,
|
||||
.channels = 2,
|
||||
};
|
||||
struct audio_format audio_format;
|
||||
bool success;
|
||||
GError *error = NULL;
|
||||
char buffer[4096];
|
||||
@ -116,6 +112,8 @@ int main(int argc, char **argv)
|
||||
return 1;
|
||||
}
|
||||
|
||||
audio_format_init(&audio_format, 44100, 16, 2);
|
||||
|
||||
g_thread_init(NULL);
|
||||
|
||||
/* read configuration file (mpd.conf) */
|
||||
|
@ -35,11 +35,7 @@
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
GError *error = NULL;
|
||||
struct audio_format audio_format = {
|
||||
.sample_rate = 48000,
|
||||
.bits = 16,
|
||||
.channels = 2,
|
||||
};
|
||||
struct audio_format audio_format;
|
||||
bool ret;
|
||||
static char buffer[4096];
|
||||
ssize_t nbytes;
|
||||
@ -57,6 +53,7 @@ int main(int argc, char **argv)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
audio_format_init(&audio_format, 48000, 16, 2);
|
||||
|
||||
while ((nbytes = read(0, buffer, sizeof(buffer))) > 0) {
|
||||
pcm_volume(buffer, nbytes, &audio_format, PCM_VOLUME_1 / 2);
|
||||
|
Loading…
Reference in New Issue
Block a user