mpg123 decoder: report bitrate
This commit is contained in:
parent
18b30b5019
commit
731ea9b489
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user