mirror of
https://github.com/Rockbox/rockbox.git
synced 2026-10-09 23:53:28 -04:00
skin_engine: more tags for the recording screen
What the built-in recording screen shows and the skin tags did not:
- %RS size of the current recording, as "1.5MB"
- %RP seconds in the pre-record buffer, empty unless pre-recording
- %Rc clips counted by the peak meter
- %Rt trigger state by name; as a conditional off, ready, steady, go,
postrec, retrig, continue
- %Rw recording warnings in hex, empty while there are none
- %Ri recording source by name; as a conditional the same on every
target: mic, line in, digital, FM radio
- %Rg gain of the source in dB, the left channel's for line in and FM
The manual gets a Recording section covering these and the recording
tags that were there, none of which it described.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change-Id: I889f95fd472c472c2589393a6c77eff4a4fd5c8f
This commit is contained in:
parent
7ba413d87d
commit
a3227cadb5
4 changed files with 147 additions and 0 deletions
|
|
@ -1917,6 +1917,106 @@ const char *get_token_value(struct gui_wps *gwps,
|
|||
goto gtv_ret_numeric_tag_info;
|
||||
}
|
||||
|
||||
/* bytes recorded to the current file, as "1.5MB" */
|
||||
case SKIN_TOKEN_REC_SIZE:
|
||||
return output_dyn_value(buf, buf_size, audio_num_recorded_bytes(),
|
||||
byte_units, 4, true);
|
||||
|
||||
/* seconds in the pre-record buffer; nothing unless pre-recording */
|
||||
case SKIN_TOKEN_REC_PRERECORD:
|
||||
if (!(audio_status() & AUDIO_STATUS_PRERECORD))
|
||||
return NULL;
|
||||
numeric_ret = audio_prerecorded_time() / HZ;
|
||||
itoa_buf(buf, buf_size, numeric_ret);
|
||||
numeric_buf = buf;
|
||||
goto gtv_ret_numeric_tag_info;
|
||||
|
||||
case SKIN_TOKEN_REC_CLIPCOUNT:
|
||||
numeric_ret = pm_get_clipcount();
|
||||
itoa_buf(buf, buf_size, numeric_ret);
|
||||
numeric_buf = buf;
|
||||
goto gtv_ret_numeric_tag_info;
|
||||
|
||||
/* trigger state; as a conditional: off, ready, steady, go,
|
||||
* post-record, retrigger, continue */
|
||||
case SKIN_TOKEN_REC_TRIGGER:
|
||||
{
|
||||
static const char * const trig_name[] =
|
||||
{ "off", "ready", "steady", "go", "postrec", "retrig",
|
||||
"continue" };
|
||||
int trig = peak_meter_trigger_status();
|
||||
|
||||
if (trig < 0 || trig >= (int)ARRAYLEN(trig_name))
|
||||
return NULL;
|
||||
numeric_ret = trig + 1;
|
||||
numeric_buf = (char *)trig_name[trig];
|
||||
goto gtv_ret_numeric_tag_info;
|
||||
}
|
||||
|
||||
/* recording warnings, in hex; nothing while there are none */
|
||||
case SKIN_TOKEN_REC_WARNING:
|
||||
if (!(audio_status() & AUDIO_STATUS_WARNING))
|
||||
return NULL;
|
||||
snprintf(buf, buf_size, "%08lX",
|
||||
(unsigned long)pcm_rec_get_warnings());
|
||||
return buf;
|
||||
|
||||
/* input source; as a conditional, the same on every target: mic,
|
||||
* line in, digital, FM radio */
|
||||
case SKIN_TOKEN_REC_SOURCE:
|
||||
switch (global_settings.rec_source)
|
||||
{
|
||||
#ifdef HAVE_MIC_REC
|
||||
case AUDIO_SRC_MIC:
|
||||
numeric_ret = 1;
|
||||
numeric_buf = (char *)str(LANG_RECORDING_SRC_MIC);
|
||||
break;
|
||||
#endif
|
||||
#ifdef HAVE_LINE_REC
|
||||
case AUDIO_SRC_LINEIN:
|
||||
numeric_ret = 2;
|
||||
numeric_buf = (char *)str(LANG_LINE_IN);
|
||||
break;
|
||||
#endif
|
||||
#ifdef HAVE_SPDIF_REC
|
||||
case AUDIO_SRC_SPDIF:
|
||||
numeric_ret = 3;
|
||||
numeric_buf = (char *)str(LANG_RECORDING_SRC_DIGITAL);
|
||||
break;
|
||||
#endif
|
||||
#ifdef HAVE_FMRADIO_REC
|
||||
case AUDIO_SRC_FMRADIO:
|
||||
numeric_ret = 4;
|
||||
numeric_buf = (char *)str(LANG_FM_RADIO);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
goto gtv_ret_numeric_tag_info;
|
||||
|
||||
/* gain of the current source in dB - the left channel's for line
|
||||
* in and FM radio; nothing for a source without one */
|
||||
case SKIN_TOKEN_REC_GAIN:
|
||||
switch (global_settings.rec_source)
|
||||
{
|
||||
#ifdef HAVE_MIC_REC
|
||||
case AUDIO_SRC_MIC:
|
||||
format_sound_value_ex(buf, buf_size, SOUND_MIC_GAIN,
|
||||
global_settings.rec_mic_gain, true);
|
||||
return buf;
|
||||
#endif
|
||||
#if defined(HAVE_LINE_REC) || defined(HAVE_FMRADIO_REC)
|
||||
HAVE_LINE_REC_(case AUDIO_SRC_LINEIN:)
|
||||
HAVE_FMRADIO_REC_(case AUDIO_SRC_FMRADIO:)
|
||||
format_sound_value_ex(buf, buf_size, SOUND_LEFT_GAIN,
|
||||
global_settings.rec_left_gain, true);
|
||||
return buf;
|
||||
#endif
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif /* HAVE_RECORDING */
|
||||
|
||||
case SKIN_TOKEN_CURRENT_SCREEN:
|
||||
|
|
|
|||
|
|
@ -252,6 +252,13 @@ static const struct tag_info legal_tags[] =
|
|||
TAG(SKIN_TOKEN_REC_SECONDS, "Rs" , "", SKIN_REFRESH_DYNAMIC),
|
||||
TAG(SKIN_TOKEN_REC_MINUTES, "Rn" , "", SKIN_REFRESH_DYNAMIC),
|
||||
TAG(SKIN_TOKEN_REC_HOURS, "Rh" , "", SKIN_REFRESH_DYNAMIC),
|
||||
TAG(SKIN_TOKEN_REC_SIZE, "RS" , "", SKIN_REFRESH_DYNAMIC),
|
||||
TAG(SKIN_TOKEN_REC_PRERECORD, "RP" , "", SKIN_REFRESH_DYNAMIC),
|
||||
TAG(SKIN_TOKEN_REC_CLIPCOUNT, "Rc" , "", SKIN_REFRESH_DYNAMIC),
|
||||
TAG(SKIN_TOKEN_REC_TRIGGER, "Rt" , "", SKIN_REFRESH_DYNAMIC),
|
||||
TAG(SKIN_TOKEN_REC_WARNING, "Rw" , "", SKIN_REFRESH_DYNAMIC),
|
||||
TAG(SKIN_TOKEN_REC_SOURCE, "Ri" , "", SKIN_REFRESH_DYNAMIC),
|
||||
TAG(SKIN_TOKEN_REC_GAIN, "Rg" , "", SKIN_REFRESH_DYNAMIC),
|
||||
|
||||
/* Skin variables */
|
||||
TAG(SKIN_TOKEN_VAR_SET, "vs", "SSi|I", SKIN_REFRESH_DYNAMIC),
|
||||
|
|
|
|||
|
|
@ -276,6 +276,13 @@ enum skin_token_type {
|
|||
SKIN_TOKEN_REC_SECONDS,
|
||||
SKIN_TOKEN_REC_MINUTES,
|
||||
SKIN_TOKEN_REC_HOURS,
|
||||
SKIN_TOKEN_REC_SIZE,
|
||||
SKIN_TOKEN_REC_PRERECORD,
|
||||
SKIN_TOKEN_REC_CLIPCOUNT,
|
||||
SKIN_TOKEN_REC_TRIGGER,
|
||||
SKIN_TOKEN_REC_WARNING,
|
||||
SKIN_TOKEN_REC_SOURCE,
|
||||
SKIN_TOKEN_REC_GAIN,
|
||||
|
||||
|
||||
/* Radio Tokens */
|
||||
|
|
|
|||
|
|
@ -515,6 +515,39 @@ Examples:
|
|||
For general information where to put album art see \reference{ref:album_art}.
|
||||
}
|
||||
|
||||
\opt{recording}{
|
||||
\section{Recording}
|
||||
These tags show the state of recording, in any skin.
|
||||
\begin{tagmap}
|
||||
\config{\%Rp} & Can this \dap{} record?\\
|
||||
\config{\%Rr} & Is a recording in progress?\\
|
||||
\config{\%Rh} & Hours of the current recording.\\
|
||||
\config{\%Rn} & Minutes of the current recording, 00 to 59.\\
|
||||
\config{\%Rs} & Seconds of the current recording, 00 to 59.\\
|
||||
\config{\%RS} & Size of the current recording, e.g. ``1.5MB''.\\
|
||||
\config{\%RP} & Seconds in the pre-record buffer; empty unless
|
||||
pre-recording.\\
|
||||
\config{\%Re} & Recording format: wav, aiff, wv or mp3. As a conditional:
|
||||
\config{\%?Re<wav|aiff|wv|mp3>}.\\
|
||||
\config{\%Rf} & Sample rate in kHz, e.g. ``44.1''. As a conditional, 1 to
|
||||
12: 96, 88.2, 64, 48, 44.1, 32, 24, 22.05, 16, 12, 11.025 and 8~kHz.\\
|
||||
\config{\%Rb} & MP3 bitrate in kbps; empty for the other formats. As a
|
||||
conditional, 1 to 18 for 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128,
|
||||
144, 160, 192, 224, 256 and 320~kbps.\\
|
||||
\config{\%Rm} & Is the recording mono?\\
|
||||
\config{\%Ri} & Recording source, by name. As a conditional, the same on
|
||||
every \dap{}: \config{\%?Ri<mic|line in|digital|FM radio>}.\\
|
||||
\config{\%Rg} & Gain of the recording source in dB -- for line in and
|
||||
FM radio the left channel's. Empty for a source without a gain.\\
|
||||
\config{\%Rc} & Number of clips the peak meter has counted.\\
|
||||
\config{\%Rt} & Trigger state: off, ready, steady, go, postrec, retrig or
|
||||
continue. As a conditional:
|
||||
\config{\%?Rt<off|ready|steady|go|postrec|retrig|continue>}.\\
|
||||
\config{\%Rw} & Recording warnings, as a hexadecimal number; empty while
|
||||
there are none.\\
|
||||
\end{tagmap}
|
||||
}
|
||||
|
||||
\opt{radio}{
|
||||
\section{FM Radio}
|
||||
\begin{tagmap}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue