summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-10-11 17:38:21 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-10-11 17:38:21 +0200
commit52003d97f6c92d15607ef0d4f1e953f342ccd51e (patch)
treef36cde622a61ea7544aef2913e31768ba9976015
parent4326a465afb45622d22d2dd52fe6f4d25f1a17ef (diff)
experimental kbps display in statusbar
-rw-r--r--deadbeef.h1
-rw-r--r--main.c7
-rw-r--r--plugins.c1
-rw-r--r--plugins/mpgmad/mpgmad.c1
-rw-r--r--streamer.c12
-rw-r--r--streamer.h6
6 files changed, 27 insertions, 1 deletions
diff --git a/deadbeef.h b/deadbeef.h
index 9a7237a1..bc1a7d6e 100644
--- a/deadbeef.h
+++ b/deadbeef.h
@@ -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);
diff --git a/main.c b/main.c
index 7434e4fc..1406cc75 100644
--- a/main.c
+++ b/main.c
@@ -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)) {
diff --git a/plugins.c b/plugins.c
index 6657c02e..9e08c1d8 100644
--- a/plugins.c
+++ b/plugins.c
@@ -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;
diff --git a/streamer.c b/streamer.c
index e2fd369a..25d87c99 100644
--- a/streamer.c
+++ b/streamer.c
@@ -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) {
diff --git a/streamer.h b/streamer.h
index 4f434223..a00d3ffd 100644
--- a/streamer.h
+++ b/streamer.h
@@ -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);