mpg123 decoder: report bitrate

This commit is contained in:
Yuriy Kaminskiy 2011-01-21 16:25:46 +03:00 committed by Max Kellermann
parent 18b30b5019
commit 731ea9b489

View File

@ -105,6 +105,7 @@ mpd_mpg123_file_decode(struct decoder *decoder, const char *path_fs)
int error; int error;
off_t num_samples; off_t num_samples;
enum decoder_command cmd; enum decoder_command cmd;
struct mpg123_frameinfo info;
/* open the file */ /* open the file */
@ -128,6 +129,21 @@ mpd_mpg123_file_decode(struct decoder *decoder, const char *path_fs)
(float)num_samples / (float)num_samples /
(float)audio_format.sample_rate); (float)audio_format.sample_rate);
if (mpg123_info(handle, &info) != MPG123_OK) {
info.vbr = MPG123_CBR;
info.bitrate = 0;
}
switch (info.vbr) {
case MPG123_ABR:
info.bitrate = info.abr_rate;
break;
case MPG123_CBR:
break;
default:
info.bitrate = 0;
}
/* the decoder main loop */ /* the decoder main loop */
do { do {
@ -144,9 +160,17 @@ mpd_mpg123_file_decode(struct decoder *decoder, const char *path_fs)
break; break;
} }
/* update bitrate for ABR/VBR */
if (info.vbr != MPG123_CBR) {
/* FIXME: maybe skip, as too expensive? */
/* FIXME: maybe, (info.vbr == MPG123_VBR) ? */
if (mpg123_info (handle, &info) != MPG123_OK)
info.bitrate = 0;
}
/* send to MPD */ /* send to MPD */
cmd = decoder_data(decoder, NULL, buffer, nbytes, 0); cmd = decoder_data(decoder, NULL, buffer, nbytes, info.bitrate);
/* seeking not yet implemented */ /* seeking not yet implemented */
} while (cmd == DECODE_COMMAND_NONE); } while (cmd == DECODE_COMMAND_NONE);