diff options
| author | Frank Gevaerts <frank@gevaerts.be> | 2009-11-09 17:57:17 +0000 |
|---|---|---|
| committer | Frank Gevaerts <frank@gevaerts.be> | 2009-11-09 17:57:17 +0000 |
| commit | 8c15799e7056729fab8ca06de406bffe89602558 (patch) | |
| tree | 659668b7962351c5886e0b898d5822acc907e454 | |
| parent | 7de32efe1c44d5278be53cf7f3a0dbc7b6fe1493 (diff) | |
| download | rockbox-8c15799e7056729fab8ca06de406bffe89602558.zip rockbox-8c15799e7056729fab8ca06de406bffe89602558.tar.gz rockbox-8c15799e7056729fab8ca06de406bffe89602558.tar.bz2 rockbox-8c15799e7056729fab8ca06de406bffe89602558.tar.xz | |
Implement %Ss for playback speed
This is similar to %Sp for pitch. The conditional form %?Ss<...> is also
supported in the same way as FS#10680; you can use
%?Ss<%xdAa|%xdAb|>
to show an icon of a tortoise (subpicture 1 of image A) or a hare
(subpicture 2 of image A) when not playing at the normal speed.
Flyspray: FS#10681
Author: Junio C Hamano
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23591 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 3 | ||||
| -rw-r--r-- | apps/gui/skin_engine/skin_tokens.c | 20 | ||||
| -rw-r--r-- | apps/gui/skin_engine/skin_tokens.h | 1 |
3 files changed, 24 insertions, 0 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index d06494d..0e21ec0 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -279,6 +279,9 @@ static const struct wps_tag all_tags[] = { #if (CONFIG_CODEC != MAS3507D) { WPS_TOKEN_SOUND_PITCH, "Sp", WPS_REFRESH_DYNAMIC, NULL }, #endif +#if (CONFIG_CODEC == SWCODEC) + { WPS_TOKEN_SOUND_SPEED, "Ss", WPS_REFRESH_DYNAMIC, NULL }, +#endif #if (CONFIG_LED == LED_VIRTUAL) || defined(HAVE_REMOTE_LCD) { WPS_TOKEN_VLED_HDD, "lh", WPS_REFRESH_DYNAMIC, NULL }, #endif diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index 9cd8dfc..b271bfe 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c @@ -49,6 +49,7 @@ #include "playlist.h" #if CONFIG_CODEC == SWCODEC #include "playback.h" +#include "tdspeed.h" #endif #include "viewport.h" @@ -832,6 +833,25 @@ const char *get_token_value(struct gui_wps *gwps, } #endif +#if CONFIG_CODEC == SWCODEC + case WPS_TOKEN_SOUND_SPEED: + { + int32_t pitch = sound_get_pitch(); + int32_t speed; + if (dsp_timestretch_available()) + speed = GET_SPEED(pitch, dsp_get_timestretch()); + else + speed = pitch; + snprintf(buf, buf_size, "%ld.%ld", + speed / PITCH_SPEED_PRECISION, + (speed % PITCH_SPEED_PRECISION) / (PITCH_SPEED_PRECISION / 10)); + if (intval) + *intval = pitch_speed_enum(limit, speed, + PITCH_SPEED_PRECISION * 100); + return buf; + } +#endif + case WPS_TOKEN_MAIN_HOLD: #ifdef HAS_BUTTON_HOLD if (button_hold()) diff --git a/apps/gui/skin_engine/skin_tokens.h b/apps/gui/skin_engine/skin_tokens.h index cb8e671..27594db 100644 --- a/apps/gui/skin_engine/skin_tokens.h +++ b/apps/gui/skin_engine/skin_tokens.h @@ -68,6 +68,7 @@ enum wps_token_type { WPS_TOKEN_SOUND_PITCH, #endif #if (CONFIG_CODEC == SWCODEC) + WPS_TOKEN_SOUND_SPEED, WPS_TOKEN_REPLAYGAIN, WPS_TOKEN_CROSSFADE, #endif |