rockbox/apps
Michael Sevakis 4888131972 Update software recording engine to latest codec interface.
Basically, just give it a good rewrite.

Software codec recording can be implemented in a more straightforward
and simple manner and made more robust through the better codec
control now available.

Encoded audio buffer uses a packed format instead of fixed-size
chunks and uses smaller data headers leading to more efficient usage.
The greatest benefit is with a VBR format like wavpack which needs
to request a maximum size but only actually ends up committing part
of that request.

No guard buffers are used for either PCM or encoded audio. PCM is
read into the codec's provided buffer and mono conversion done at
that time in the core if required. Any highly-specialized sample
conversion is still done within the codec itself, such as 32-bit
(wavpack) or interleaved mono (mp3).

There is no longer a separate filename array. All metadata goes
onto the main encoded audio buffer, eliminating any predermined
file limit on the buffer as well as not wasting the space for
unused path queue slots.

The core and codec interface is less awkward and a bit more sensible.
Some less useful interface features were removed. Threads are kept
on narrow code paths ie. the audio thread never calls encoding
functions and the codec thread never calls file functions as before.

Codecs no longer call file functions directly. Writes are buffered
in the core and data written to storage in larger chunks to speed up
flushing of data. In fact, codecs are no longer aware of the stream
being a file at all and have no access to the fd.

SPDIF frequency detection no longer requires a restart of recording
or plugging the source before entering the screen. It will poll
for changes and update when stopped or prerecording (which does
discard now-invalid prerecorded data).

I've seen to it that writing a proper header on full disk works
when the format makes it reasonably practical to do so. Other cases
may have incorrect data sizes but sample info will be in tact. File
left that way may play anyway.

mp3_enc.codec acquires the ability to write 'Info' headers with LAME
tags to make it gapless (bonus).

Change-Id: I670685166d5eb32ef58ef317f50b8af766ceb653
Reviewed-on: http://gerrit.rockbox.org/493
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
2013-06-30 00:40:27 +02:00
..
bitmaps Sansa clip zip: fix pinkish outline around usb logo 2012-02-18 16:01:06 +01:00
gui skin_engine: Fix crash on skin_reset (e.g. on language change). 2013-06-23 20:55:46 +02:00
hosted/android android: Fix crash on start up. 2012-03-30 11:23:07 +02:00
keymaps clip+/zip: add FMS soft lock action 2013-06-29 11:39:35 +02:00
lang Add DAC's oversampling filter roll-off selection to sound settings. 2013-05-24 11:18:16 +04:00
menus Add DAC's oversampling filter roll-off selection to sound settings. 2013-05-24 11:18:16 +04:00
player Fix remaining reds/yellows. 2010-05-14 13:21:40 +00:00
plugins plugin_midi: expand gustable[] to 128 entries 2013-06-16 18:33:57 +02:00
radio Enable key lock in radio screen 2013-06-10 15:19:45 +02:00
recorder Update software recording engine to latest codec interface. 2013-06-30 00:40:27 +02:00
abrepeat.c abrepeat: drop some inline's and rearrange code to save some size since this stuff is hardly speed critical. 2011-01-18 16:11:33 +00:00
abrepeat.h abrepeat: drop some inline's and rearrange code to save some size since this stuff is hardly speed critical. 2011-01-18 16:11:33 +00:00
action.c Fix missed buttons in action.c if action_wait_for_release() was called 2012-08-15 23:08:26 +02:00
action.h skin_engine: Make pressing the setting bar touch region work 2012-07-06 14:28:34 +10:00
alarm_menu.c Changed the FOR_NB_SCREENS macro to always be a for loop that declares its own loop variable. This removes the need to declare this variable in the outer scope. 2011-10-15 19:35:02 +00:00
alarm_menu.h
appevents.h Have voice fire an event when it starts and stops playing. 2013-05-31 18:45:51 -04:00
applimits.h Remove two unused defines. 2010-08-21 15:49:42 +00:00
apps.make Android: use APPEXTRA instead of makefile hack 2011-03-11 16:08:36 +00:00
audio_path.c ypr0: This patch adds radio support to Samsung YP-R0 2012-05-28 19:39:14 +02:00
audio_thread.c Update software recording engine to latest codec interface. 2013-06-30 00:40:27 +02:00
audio_thread.h Update software recording engine to latest codec interface. 2013-06-30 00:40:27 +02:00
beep.c Make rbcodec/dsp includes more specific. 2012-04-29 17:31:30 -04:00
bookmark.c bookmark: add cancelling of autoload bookmark 2013-04-06 11:35:36 +02:00
bookmark.h Fix minor bookmark problems/Enhance bookmark functions 2012-03-12 08:54:02 +01:00
buffering.c Fix some lockup caused by handles not being initialized to < 0... 2012-05-21 02:28:13 -04:00
buffering.h Add more INIT_ATTR and add config.h includes to header files with INIT_ATTR. 2011-12-19 20:12:52 +00:00
codec_thread.c Update software recording engine to latest codec interface. 2013-06-30 00:40:27 +02:00
codec_thread.h Update software recording engine to latest codec interface. 2013-06-30 00:40:27 +02:00
codecs.c Update software recording engine to latest codec interface. 2013-06-30 00:40:27 +02:00
core_asmdefs.c
cuesheet.c Rename 'mp3entry.embed_cuesheet' to 'mp3entry.embedded_cuesheet' and pull out a field (FS#12473) 2011-12-22 18:56:11 +00:00
cuesheet.h FS #12419 : Support for embedded cuesheets. 2011-12-16 10:09:41 +00:00
debug_menu.c woops, revert test code 2013-03-28 22:36:49 +11:00
debug_menu.h dbg_ports() : move proto to system.h 2012-01-04 05:21:44 +00:00
enc_config.c Fix different enum comparison warning when building with gcc 4.5 2010-12-20 20:56:22 +00:00
enc_config.h
features.txt Rename HAVE_PITCHSCREEN to HAVE_PITCHCONTROL 2012-05-09 14:32:38 +02:00
filetree.c Use crc32 of filename to resume tracks 2013-01-02 08:29:38 +01:00
filetree.h
filetypes.c Fix color of files with no extension. 2013-06-05 18:35:09 -04:00
filetypes.h Add more INIT_ATTR and add config.h includes to header files with INIT_ATTR. 2011-12-19 20:12:52 +00:00
fracmul.h Build librbcodec with DSP and metadata. 2012-03-18 12:00:39 +01:00
iap.c IAP: use a state machine for handling iap packets, based on FS#12135 2011-09-25 12:19:33 +00:00
keyboard.h
language.c Add stdio.h include for SEEK_SET define to various files. 2010-12-25 18:43:34 +00:00
language.h
logfdisp.c Remove last traces of sprintf.h 2010-05-07 02:13:47 +00:00
logfdisp.h
main.c Refactor audio thread to run both recording and playback. 2013-05-31 03:20:35 -04:00
menu.c Remove extraneous parens 2012-05-06 23:13:34 -04:00
menu.h FS#12251 - User shortcuts in the main menu. 2011-11-15 13:22:02 +00:00
misc.c New GUI browser to select one (or more) folders. 2012-07-30 21:20:51 +02:00
misc.h New GUI browser to select one (or more) folders. 2012-07-30 21:20:51 +02:00
mpeg.c Tweak paramters of mp3_play_data and callback. 2012-03-04 14:50:47 -05:00
mpeg.h
onplay.c Rename HAVE_PITCHSCREEN to HAVE_PITCHCONTROL 2012-05-09 14:32:38 +02:00
onplay.h FS#12251 - User shortcuts in the main menu. 2011-11-15 13:22:02 +00:00
pcmbuf.c Fix a bug in pcmbuf.c when doing offset with modulus. 2013-06-28 02:17:58 -04:00
pcmbuf.h Fix up some more type stuff in pcmbuf.c. 2012-04-27 16:51:54 -04:00
playback.c Update software recording engine to latest codec interface. 2013-06-30 00:40:27 +02:00
playback.h Refactor audio thread to run both recording and playback. 2013-05-31 03:20:35 -04:00
playlist.c Use crc32 of filename to resume tracks 2013-01-02 08:29:38 +01:00
playlist.h Use crc32 of filename to resume tracks 2013-01-02 08:29:38 +01:00
playlist_catalog.c FS#11808 - Major playlist handling changes (on disk playlists) 2011-07-20 14:11:15 +00:00
playlist_catalog.h FS#11808 - Major playlist handling changes (on disk playlists) 2011-07-20 14:11:15 +00:00
playlist_menu.h
playlist_viewer.c Fixing data abort (pc in strchr). when scrolling a big playlist very fast. 2012-07-19 00:00:41 +02:00
playlist_viewer.h FS#11808 - Major playlist handling changes (on disk playlists) 2011-07-20 14:11:15 +00:00
plugin.c Use crc32 of filename to resume tracks 2013-01-02 08:29:38 +01:00
plugin.h Bump the plugin api version. This should have been in 212e7808. 2013-01-04 00:34:12 +01:00
rbcodec_helpers.c Rename HAVE_PITCHSCREEN to HAVE_PITCHCONTROL 2012-05-09 14:32:38 +02:00
rbcodecconfig.h rbcodec: Hooks for target specific functions in dsp_process loop 2012-05-03 23:47:46 +02:00
rbcodecplatform.h rbcodec: abstract tdspeed buffer allocation 2012-05-07 10:29:07 +02:00
README
root_menu.c Use crc32 of filename to resume tracks 2013-01-02 08:29:38 +01:00
root_menu.h main menu: Add the ability to hide and reorder the main menu items. 2012-02-25 12:40:44 +01:00
screen_access.c Add the 9 segment lcd funciton to remote lcds 2012-12-09 17:27:11 +11:00
screen_access.h 9 segment bitmap drawing: 2012-12-09 17:11:19 +11:00
screens.c Make rbcodec/dsp includes more specific. 2012-04-29 17:31:30 -04:00
screens.h
scrobbler.c ypr0: Correct .scrobbler.log path for YPR0 2012-09-11 06:36:47 +02:00
scrobbler.h Make scrobbler_flush_cache() static 2011-08-01 19:43:13 +00:00
settings.c Add DAC's oversampling filter roll-off selection to sound settings. 2013-05-24 11:18:16 +04:00
settings.h Add DAC's oversampling filter roll-off selection to sound settings. 2013-05-24 11:18:16 +04:00
settings_list.c Add DAC's oversampling filter roll-off selection to sound settings. 2013-05-24 11:18:16 +04:00
settings_list.h EQ settings: Rework the settings to clean up the config file. 2013-02-09 13:05:32 +01:00
shortcuts.c Add set_sleeptimer_duration function in minutes 2012-10-06 11:59:13 +02:00
shortcuts.h shortcuts: talk the time and configure the sleep timeout 2011-12-08 10:23:46 +00:00
sound_menu.h Remove unneeded include. 2010-08-21 16:07:34 +00:00
SOURCES Refactor audio thread to run both recording and playback. 2013-05-31 03:20:35 -04:00
status.c
status.h Rockbox as an application: Replace many occurences of #ifdef SIMULATOR with #if (CONFIG_PLATFORM & PLATFORM_HOSTED) (or equivalently). 2010-06-21 16:53:00 +00:00
tagcache.c Fix possible readlink() buffer overflow 2013-01-15 22:04:18 +01:00
tagcache.h Fix database tool. 2012-07-31 10:33:27 +02:00
tagnavi.config FS#12132 patch 7: Add a new default format for untagged tracks: 2011-07-31 16:26:39 +00:00
tagtree.c GSoC/Buflib: Enable compaction in buflib. 2011-08-30 14:01:45 +00:00
tagtree.h Add more INIT_ATTR and add config.h includes to header files with INIT_ATTR. 2011-12-19 20:12:52 +00:00
talk.c Add comment to clarify calculation. 2012-06-05 22:53:21 +02:00
talk.h Add conditionals for functions only needed on SWCODEC targets. 2011-12-15 20:58:14 +00:00
tree.c keyclick: Add a callback so screens can cancel a click. Add a generic list callback to stop clicks when we are at the end of the list 2012-01-12 22:28:36 +11:00
tree.h Add more INIT_ATTR and add config.h includes to header files with INIT_ATTR. 2011-12-19 20:12:52 +00:00
usb_keymaps.c remove superfluous ifdef 2011-12-28 19:23:38 +00:00
usb_keymaps.h
voice_thread.c Argh, move a comment to the (now) proper location. :) 2013-05-31 19:01:24 -04:00
voice_thread.h voice_thread_init was left INIT_ATTR but is being called too late. 2012-05-21 15:21:36 -04:00

For general information see: docs/README
For API information see: docs/API