mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-08 12:45:26 -05:00
FS#11099 - Rewind before resume
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25706 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
2970eb5b4c
commit
d38093de2f
6 changed files with 56 additions and 0 deletions
|
|
@ -13511,3 +13511,20 @@
|
||||||
*: none
|
*: none
|
||||||
</voice>
|
</voice>
|
||||||
</phrase>
|
</phrase>
|
||||||
|
<phrase>
|
||||||
|
id: LANG_RESUME_REWIND
|
||||||
|
desc: in playback settings menu
|
||||||
|
user: core
|
||||||
|
<source>
|
||||||
|
*: none
|
||||||
|
swcodec: "Rewind Before Resume"
|
||||||
|
</source>
|
||||||
|
<dest>
|
||||||
|
*: none
|
||||||
|
swcodec: "Rewind Before Resume"
|
||||||
|
</dest>
|
||||||
|
<voice>
|
||||||
|
*: none
|
||||||
|
swcodec: "Rewind before resume"
|
||||||
|
</voice>
|
||||||
|
</phrase>
|
||||||
|
|
|
||||||
|
|
@ -177,6 +177,7 @@ MAKE_MENU(unplug_menu, ID2P(LANG_HEADPHONE_UNPLUG), 0, Icon_NOICON,
|
||||||
|
|
||||||
MENUITEM_SETTING(skip_length, &global_settings.skip_length, NULL);
|
MENUITEM_SETTING(skip_length, &global_settings.skip_length, NULL);
|
||||||
MENUITEM_SETTING(prevent_skip, &global_settings.prevent_skip, NULL);
|
MENUITEM_SETTING(prevent_skip, &global_settings.prevent_skip, NULL);
|
||||||
|
MENUITEM_SETTING(resume_rewind, &global_settings.resume_rewind, NULL);
|
||||||
|
|
||||||
MAKE_MENU(playback_settings,ID2P(LANG_PLAYBACK),0,
|
MAKE_MENU(playback_settings,ID2P(LANG_PLAYBACK),0,
|
||||||
Icon_Playback_menu,
|
Icon_Playback_menu,
|
||||||
|
|
@ -203,6 +204,10 @@ MAKE_MENU(playback_settings,ID2P(LANG_PLAYBACK),0,
|
||||||
,&unplug_menu
|
,&unplug_menu
|
||||||
#endif
|
#endif
|
||||||
,&skip_length, &prevent_skip,
|
,&skip_length, &prevent_skip,
|
||||||
|
|
||||||
|
#if CONFIG_CODEC == SWCODEC
|
||||||
|
&resume_rewind,
|
||||||
|
#endif
|
||||||
);
|
);
|
||||||
|
|
||||||
static int playback_callback(int action,const struct menu_item_ex *this_item)
|
static int playback_callback(int action,const struct menu_item_ex *this_item)
|
||||||
|
|
|
||||||
|
|
@ -1344,6 +1344,17 @@ static void audio_finish_load_track(void)
|
||||||
|
|
||||||
track_id3->elapsed = 0;
|
track_id3->elapsed = 0;
|
||||||
offset = track_id3->offset;
|
offset = track_id3->offset;
|
||||||
|
size_t resume_rewind = (global_settings.resume_rewind *
|
||||||
|
track_id3->bitrate * 1000) / 8;
|
||||||
|
|
||||||
|
if (offset < resume_rewind)
|
||||||
|
{
|
||||||
|
offset = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
offset -= resume_rewind;
|
||||||
|
}
|
||||||
|
|
||||||
enum data_type type = TYPE_PACKET_AUDIO;
|
enum data_type type = TYPE_PACKET_AUDIO;
|
||||||
|
|
||||||
|
|
@ -1375,6 +1386,8 @@ static void audio_finish_load_track(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
track_id3->offset = offset;
|
||||||
|
|
||||||
logf("load track: %s", track_id3->path);
|
logf("load track: %s", track_id3->path);
|
||||||
|
|
||||||
if (file_offset > AUDIO_REBUFFER_GUESS_SIZE)
|
if (file_offset > AUDIO_REBUFFER_GUESS_SIZE)
|
||||||
|
|
|
||||||
|
|
@ -823,6 +823,10 @@ struct user_settings
|
||||||
int hotkey_tree;
|
int hotkey_tree;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_CODEC == SWCODEC
|
||||||
|
/* When resuming playback (after a stop), rewind this number of seconds */
|
||||||
|
int resume_rewind;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/** global variables **/
|
/** global variables **/
|
||||||
|
|
|
||||||
|
|
@ -1683,6 +1683,12 @@ const struct settings_list settings[] = {
|
||||||
#endif
|
#endif
|
||||||
ID2P(LANG_ONPLAY_OPEN_WITH), ID2P(LANG_DELETE), ID2P(LANG_INSERT)),
|
ID2P(LANG_ONPLAY_OPEN_WITH), ID2P(LANG_DELETE), ID2P(LANG_INSERT)),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_CODEC == SWCODEC
|
||||||
|
INT_SETTING(0, resume_rewind, LANG_RESUME_REWIND, 0,
|
||||||
|
"resume rewind", UNIT_SEC, 0, 60, 5,
|
||||||
|
NULL, NULL, NULL),
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
const int nb_settings = sizeof(settings)/sizeof(*settings);
|
const int nb_settings = sizeof(settings)/sizeof(*settings);
|
||||||
|
|
|
||||||
|
|
@ -288,3 +288,14 @@ you to configure settings related to audio playback.
|
||||||
if a track ends, which can be achieved by combining this option with
|
if a track ends, which can be achieved by combining this option with
|
||||||
\setting{Repeat} set to \setting{One}
|
\setting{Repeat} set to \setting{One}
|
||||||
|
|
||||||
|
\opt{swcodec}{
|
||||||
|
\section{Rewind Before Resume}\index{Rewind Before Resume}
|
||||||
|
When resuming a track or a bookmark, a short rewind can be done before the
|
||||||
|
playback is started. This can be useful when listening to speech material,
|
||||||
|
to help remember what was being said just before playback was stopped.
|
||||||
|
The size of the rewind can be set to various values between 0 (off) and
|
||||||
|
60 seconds.
|
||||||
|
\note{The rewind is not done when resuming a paused track.}
|
||||||
|
\note{The actual rewind distance may differ a little from the requested
|
||||||
|
value, depending on the file in question.}
|
||||||
|
}%\opt{swcodec}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue