# HG changeset patch # User reimar # Date 1128434365 0 # Node ID 7658dde0777bd20975d7fc0aa2eafcbf1699a740 # Parent 27b0d49988b20da54e49b37f8b91f41a71897693 Show total time when playing audio-only files diff -r 27b0d49988b2 -r 7658dde0777b mplayer.c --- a/mplayer.c Tue Oct 04 12:15:12 2005 +0000 +++ b/mplayer.c Tue Oct 04 13:59:25 2005 +0000 @@ -846,6 +846,30 @@ } /** + * \brief append time in the hh:mm:ss.f format + * \param buf buffer to print into + * \param pos position of terminating 0 in buf + * \param len maximum number of characters in buf, not including terminating 0 + * \param time time value to convert/append + */ +static void sadd_hhmmssf(char *buf, unsigned *pos, int len, float time) { + long tenths = 10 * time; + int f1 = tenths % 10; + int ss = (tenths / 10) % 60; + int mm = (tenths / 600) % 60; + int hh = tenths / 36000; + if (time <= 0) { + saddf(buf, pos, len, "unknown"); + return; + } + if (hh > 0) + saddf(buf, pos, len, "%2d:", hh); + if (hh > 0 || mm > 0) + saddf(buf, pos, len, "%02d:", mm); + saddf(buf, pos, len, "%02d.%1d", ss, f1); +} + +/** * \brief print the status line * \param a_pos audio position * \param a_v A-V desynchronization @@ -872,20 +896,12 @@ if (sh_audio) { saddf(line, &pos, width, "A:%6.1f ", a_pos); if (!sh_video) { - // convert time to HH:MM:SS.F format - long tenths = 10 * a_pos; - int f1 = tenths % 10; - int ss = (tenths / 10) % 60; - int mm = (tenths / 600) % 60; - int hh = (tenths / 36000) % 100; + float len = demuxer_get_time_length(demuxer); saddf(line, &pos, width, "("); - if (hh > 0) - saddf(line, &pos, width, "%2d:", hh); - if (hh > 0 || mm > 0) - saddf(line, &pos, width, "%02d:", mm); - saddf(line, &pos, width, "%02d.", ss); - saddf(line, &pos, width, "%1d", f1); - saddf(line, &pos, width, ") "); + sadd_hhmmssf(line, &pos, width, a_pos); + saddf(line, &pos, width, ") of %.1f (", len); + sadd_hhmmssf(line, &pos, width, len); + saddf(line, &pos, width, ")"); } }