summaryrefslogtreecommitdiff
path: root/apps/codec_thread.h (unfollow)
Commit message (Collapse)Author
2013-06-30Update software recording engine to latest codec interface.Michael Sevakis
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>
2011-12-19Add more INIT_ATTR and add config.h includes to header files with INIT_ATTR.Boris Gjenero
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31370 a1c6a512-1295-4272-9138-f99709370657
2011-09-01Remove obsolete init cruft from audio system because of diminished ↵Michael Sevakis
dependencies. All talk/voice dependency in playback.c should be imminently removable. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30401 a1c6a512-1295-4272-9138-f99709370657
2011-07-21is_codec_thread() is not needed anymore since PCM buffer calls other than ↵Michael Sevakis
volume level are no longer made by the voice thread. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30189 a1c6a512-1295-4272-9138-f99709370657
2011-04-27Commit FS#12069 - Playback rework - first stages. Gives as thorough as ↵Michael Sevakis
possible a treatment of codec management, track change and metadata logic as possible while maintaining fairly narrow focus and not rewriting everything all at once. Please see the rockbox-dev mail archive on 2011-04-25 (Playback engine rework) for a more thorough manifest of what was addressed. Plugins and codecs become incompatible. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29785 a1c6a512-1295-4272-9138-f99709370657
2011-02-23Give playback engine better control over the codec. Codec simply follows ↵Michael Sevakis
commands and doesn't concern itself with audio state. Get track change notification in on the actual last buffer insert of the track because now audio simply waits for a track change notify from PCM on the last track and it must be sent reliably. This is still at an intermediate stage but works. Codecs and plugins become incompatible. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29387 a1c6a512-1295-4272-9138-f99709370657
2009-11-01Code cleanup in codec_thread, playback and pcmbuf; more elegant solution to ↵Jeffrey Goode
leftover samples git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23471 a1c6a512-1295-4272-9138-f99709370657
2009-10-31FS#10739: playback.c code splitJeffrey Goode
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23444 a1c6a512-1295-4272-9138-f99709370657
2009-07-13FS#10436 - add the Sansa View to the build system. The bootloader builds ↵Robert Keevil
but doesn't do anything useful yet. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21848 a1c6a512-1295-4272-9138-f99709370657
2008-11-26Add software backlight fading for E100/H300/X5/D2, by Thomas Martitz and ↵Steve Bavin
others - see FS#6800 for credits. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19221 a1c6a512-1295-4272-9138-f99709370657
2008-06-28Updated our source code header to explicitly mention that we are GPL v2 orDaniel Stenberg
later. We still need to hunt down snippets used that are not. 1324 modified files... http://www.rockbox.org/mail/archive/rockbox-dev-archive-2008-06/0060.shtml git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17847 a1c6a512-1295-4272-9138-f99709370657
2007-11-12Hardware controlled backlight brightness for iPod Video and Nano, retaining ↵Jens Arnold
the software PWM fade in/ fade out. * Backlight handling cleanup, getting rid of one layer of 'lowlevelness'. * Use atomic GPIO bit manipulation for PP502x backlight handling. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15599 a1c6a512-1295-4272-9138-f99709370657
2007-10-07Name all button light functions and variables consistently starting with ↵Jens Arnold
buttonlight_ . git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15016 a1c6a512-1295-4272-9138-f99709370657
2007-09-06Sansa c200 port. Rockbox works with sound. Several features are disabled ↵Mark Arigo
including some lcd options, FM radio, recording, and all plugins. Loading the OF from the Rockbox bootloader does not work. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14625 a1c6a512-1295-4272-9138-f99709370657
2007-09-06Move files that will be common to the Sansa e200 and c200Mark Arigo
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14624 a1c6a512-1295-4272-9138-f99709370657
2007-04-23FS#7036: Power saving improvements for Sansa. Shutdown LCD controller when ↵Barry Wardell
backlight is off and shutdown ATA controller when the disk isn't being accessed. Frequency scaling is not enabled yet as it was apparently causing some problems. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13250 a1c6a512-1295-4272-9138-f99709370657
2007-04-22e200: Make the wheel light timeout configurable (under settings > system) ↵Jonathan Gordon
(FS#7067) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13244 a1c6a512-1295-4272-9138-f99709370657
2007-04-12Moved archos backlight code to target tree. Changed old mutlivalue ↵Jens Arnold
CONFIG_BACKLIGHT to a simple HAVE_BACKLIGHT. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13136 a1c6a512-1295-4272-9138-f99709370657
2007-02-03Backlight support for Sansa, including brightness. Thanks to Rene Barry Wardell
Peinthor and FS#6608. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12186 a1c6a512-1295-4272-9138-f99709370657
2006-11-22Add several dummy functions to allow Sansa to build correctlyDaniel Ankers
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11568 a1c6a512-1295-4272-9138-f99709370657
2006-08-01added mostly dummy changes to allow building of a Sansa e200 bootloaderDaniel Stenberg
without functionality git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10399 a1c6a512-1295-4272-9138-f99709370657