summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorLars-Dominik Braun <PromyLOPh@lavabit.com>2009-02-05 18:35:21 +0100
committerLars-Dominik Braun <PromyLOPh@lavabit.com>2009-02-05 18:35:21 +0100
commita2aee035072a5d346c187a890539f72c6d5167a0 (patch)
tree50e595a0941e223191784966312097995c985ca8 /src/main.c
parent9bf820b044e846bb2b17dfb2b78a1d9a8d3c59f1 (diff)
downloadpianobar-windows-a2aee035072a5d346c187a890539f72c6d5167a0.tar.gz
pianobar-windows-a2aee035072a5d346c187a890539f72c6d5167a0.tar.bz2
pianobar-windows-a2aee035072a5d346c187a890539f72c6d5167a0.zip
Time display for mp3 playback
Time is now counted in milliseconds, not aac frames. Calculations seem to be inaccurate sometimes (about +-2 seconds).
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c31
1 files changed, 11 insertions, 20 deletions
diff --git a/src/main.c b/src/main.c
index 33ece10..c08fc57 100644
--- a/src/main.c
+++ b/src/main.c
@@ -45,11 +45,6 @@ THE SOFTWARE.
#include "config.h"
#include "ui.h"
-inline float BarSamplesToSeconds (float samplerate, float channels,
- float samples) {
- return channels * 1000.0 * samples / samplerate;
-}
-
int main (int argc, char **argv) {
PianoHandle_t ph;
static struct audioPlayer player;
@@ -128,13 +123,11 @@ int main (int argc, char **argv) {
while (!doQuit) {
/* already played a song, clean up things/scrobble song */
if (player.mode == PLAYER_FINISHED_PLAYBACK) {
- scrobbleSong.length = BarSamplesToSeconds (player.samplerate,
- player.channels, player.sampleSizeN);
- /* scrobble when >= nn% are played */
- if (BarSamplesToSeconds (player.samplerate,
- player.channels, player.sampleSizeCurr) * 100 /
- scrobbleSong.length >=
- settings.lastfmScrobblePercent &&
+ scrobbleSong.length = player.songDuration / BAR_PLAYER_MS_TO_S_FACTOR;
+ /* scrobble when >= nn% are played; use seconds, not
+ * milliseconds */
+ if (player.songPlayed / BAR_PLAYER_MS_TO_S_FACTOR * 100 /
+ scrobbleSong.length >= settings.lastfmScrobblePercent &&
settings.enableScrobbling) {
WardrobeReturn_t wRet;
@@ -224,14 +217,12 @@ int main (int argc, char **argv) {
/* show time */
if (player.mode >= PLAYER_SAMPLESIZE_INITIALIZED &&
player.mode < PLAYER_FINISHED_PLAYBACK) {
- float songLength = BarSamplesToSeconds (player.samplerate,
- player.channels, player.sampleSizeN);
- float songRemaining = songLength -
- BarSamplesToSeconds (player.samplerate,
- player.channels, player.sampleSizeCurr);
- printf ("-%02i:%02i/%02i:%02i\r", (int) songRemaining/60,
- (int) songRemaining%60, (int) songLength/60,
- (int) songLength%60);
+ long int songRemaining = player.songDuration - player.songPlayed;
+ printf ("-%02i:%02i/%02i:%02i\r",
+ (int) songRemaining / BAR_PLAYER_MS_TO_S_FACTOR / 60,
+ (int) songRemaining / BAR_PLAYER_MS_TO_S_FACTOR % 60,
+ (int) player.songDuration / BAR_PLAYER_MS_TO_S_FACTOR / 60,
+ (int) player.songDuration / BAR_PLAYER_MS_TO_S_FACTOR % 60);
fflush (stdout);
}
}