{Tag,Song}Print, PlayerCommands: report song duration with milliseconds precision

This commit is contained in:
Max Kellermann 2014-11-25 17:46:43 +01:00
parent 83fd822e8b
commit 70b5a81a29
5 changed files with 22 additions and 4 deletions

1
NEWS
View File

@ -2,6 +2,7 @@ ver 0.20 (not yet released)
* protocol * protocol
- "commands" returns playlist commands only if playlist_directory configured - "commands" returns playlist commands only if playlist_directory configured
- "search"/"find" have a "window" parameter - "search"/"find" have a "window" parameter
- report song duration with milliseconds precision
* tags * tags
- ape: drop support for non-standard tag "album artist" - ape: drop support for non-standard tag "album artist"
* output * output

View File

@ -515,6 +515,15 @@
</returnvalue> </returnvalue>
</para> </para>
</listitem> </listitem>
<listitem>
<para>
<varname>duration</varname>:
<footnote id="since_0_20"><simpara>Introduced with <application>MPD</application> 0.20</simpara></footnote>
<returnvalue>
Duration of the current song in seconds.
</returnvalue>
</para>
</listitem>
<listitem> <listitem>
<para> <para>
<varname>bitrate</varname>: <varname>bitrate</varname>:

View File

@ -122,5 +122,8 @@ song_print_info(Client &client, const DetachedSong &song, bool base)
const auto duration = song.GetDuration(); const auto duration = song.GetDuration();
if (!duration.IsNegative()) if (!duration.IsNegative())
client_printf(client, "Time: %u\n", duration.RoundS()); client_printf(client, "Time: %i\n"
"duration: %1.3f\n",
duration.RoundS(),
duration.ToDoubleS());
} }

View File

@ -23,8 +23,6 @@
#include "tag/TagSettings.h" #include "tag/TagSettings.h"
#include "client/Client.hxx" #include "client/Client.hxx"
#define SONG_TIME "Time: "
void tag_print_types(Client &client) void tag_print_types(Client &client)
{ {
int i; int i;
@ -53,7 +51,10 @@ tag_print_values(Client &client, const Tag &tag)
void tag_print(Client &client, const Tag &tag) void tag_print(Client &client, const Tag &tag)
{ {
if (!tag.duration.IsNegative()) if (!tag.duration.IsNegative())
client_printf(client, SONG_TIME "%i\n", tag.duration.RoundS()); client_printf(client, "Time: %i\n"
"duration: %1.3f\n",
tag.duration.RoundS(),
tag.duration.ToDoubleS());
tag_print_values(client, tag); tag_print_values(client, tag);
} }

View File

@ -182,6 +182,10 @@ handle_status(Client &client,
player_status.elapsed_time.ToDoubleS(), player_status.elapsed_time.ToDoubleS(),
player_status.bit_rate); player_status.bit_rate);
if (!player_status.total_time.IsNegative())
client_printf(client, "duration: %1.3f\n",
player_status.total_time.ToDoubleS());
if (player_status.audio_format.IsDefined()) { if (player_status.audio_format.IsDefined()) {
struct audio_format_string af_string; struct audio_format_string af_string;