diff options
-rw-r--r-- | deadbeef.h | 1 | ||||
-rw-r--r-- | main.c | 7 | ||||
-rw-r--r-- | plugins.c | 1 | ||||
-rw-r--r-- | plugins/mpgmad/mpgmad.c | 1 | ||||
-rw-r--r-- | streamer.c | 12 | ||||
-rw-r--r-- | streamer.h | 6 |
6 files changed, 27 insertions, 1 deletions
@@ -175,6 +175,7 @@ typedef struct { float (*playback_get_pos) (void); // [0..100] void (*playback_set_pos) (float pos); // [0..100] int (*playback_get_samplerate) (void); // output samplerate + void (*playback_update_bitrate) (float bitrate); // process control const char *(*get_config_dir) (void); void (*quit) (void); @@ -120,7 +120,12 @@ update_songinfo (void) { strcpy (t, "-:--"); } - snprintf (sbtext_new, sizeof (sbtext_new), "[%s] %dHz | %d bit | %s | %d:%02d / %s | %d songs | %d:%02d total playtime", str_playing_song.filetype ? str_playing_song.filetype:"-", samplerate, bitspersample, mode, minpos, secpos, t, pl_getcount (), mintotal, sectotal); + int bitrate = streamer_get_bitrate (); + char sbitrate[20] = ""; + if (bitrate > 0) { + snprintf (sbitrate, sizeof (sbitrate), "%d kbps ", bitrate); + } + snprintf (sbtext_new, sizeof (sbtext_new), "[%s] %s| %dHz | %d bit | %s | %d:%02d / %s | %d songs | %d:%02d total playtime", str_playing_song.filetype ? str_playing_song.filetype:"-", sbitrate, samplerate, bitspersample, mode, minpos, secpos, t, pl_getcount (), mintotal, sectotal); } if (strcmp (sbtext_new, sb_text)) { @@ -62,6 +62,7 @@ static DB_functions_t deadbeef_api = { .playback_get_pos = plug_playback_get_pos, .playback_set_pos = plug_playback_set_pos, .playback_get_samplerate = p_get_rate, + .playback_update_bitrate = streamer_update_bitrate, .get_config_dir = plug_get_config_dir, .quit = plug_quit, // threading diff --git a/plugins/mpgmad/mpgmad.c b/plugins/mpgmad/mpgmad.c index 7465a076..c6fd8ae1 100644 --- a/plugins/mpgmad/mpgmad.c +++ b/plugins/mpgmad/mpgmad.c @@ -684,6 +684,7 @@ cmp3_decode (void) { plugin.info.channels = MAD_NCHANNELS(&frame.header); mad_synth_frame(&synth,&frame); + deadbeef->playback_update_bitrate (frame.header.bitrate/1000); int cachepos = (buffer.cachefill + buffer.cachepos) & CACHE_MASK; int len = synth.pcm.length; @@ -71,6 +71,7 @@ static int badsong = -1; static float seekpos = -1; static float playpos = 0; // play position of current song +static float avg_bitrate = -1; // avg bitrate of current song playItem_t str_playing_song; playItem_t str_streaming_song; @@ -182,6 +183,16 @@ streamer_get_playpos (void) { return playpos; } +float +streamer_get_bitrate (void) { + return avg_bitrate; +} + +void +streamer_update_bitrate (float bitrate) { + avg_bitrate = bitrate; +} + void streamer_set_nextsong (int song, int pstate) { trace ("streamer_set_nextsong %d %d\n", song, pstate); @@ -302,6 +313,7 @@ streamer_thread (uintptr_t ctx) { trace ("sending songstarted to plugins\n"); plug_trigger_event (DB_EV_SONGSTARTED, 0); playpos = 0; + avg_bitrate = -1; } if (seekpos >= 0) { @@ -60,6 +60,12 @@ streamer_ok_to_read (int len); float streamer_get_playpos (void); +float +streamer_get_bitrate (void); + +void +streamer_update_bitrate (float bitrate); + int streamer_is_buffering (void); |