path: root/apps/tagcache.h
AgeCommit message (Collapse)AuthorFilesLines
2022-03-19tagtree/tagcache add new clause operators begins/ends _oneofWilliam Wilgus1-1/+3
new operators @^, @$ begins_oneof and ends_oneof albumartist @^ "L|The L" Led Zeppelin, The look albumartist @$ "girls|Boys" spice girls, beasty boys Change-Id: I26ce3d8155d970a55e003f74e2f9478db76204f1
2022-03-02tagcache compress uniqbuf 2 16-bit indices occupy a single 32 bit slotWilliam Wilgus1-1/+1
a lot of space is wasted when file indices less than 65535 entries should be more than 1 byte apart so use the LSB as a flag when indices are > 65535 set flag to 0 and proceed as before explicitly mark uniqbuf as 32bit Change-Id: I54e06c152c369eb6c0322186fe2c1e9a1e6d940d
2022-02-27tagcache, coverity cleanup, Add TAGS_ALL_COUNTWilliam Wilgus1-2/+4
Change-Id: Ia880c921a00b603aa4ba81b0c0670ed00491e41a
2021-09-17Database: Fix tag_albumartist; new tag_virt_canonicalartist.James D. Smith1-5/+5
Change-Id: I1d887f8a9d6690b8286407d2502432b0497cfeb9
2021-08-07tagcache: Don't treat tag_virt_basename as a numeric tagAidan MacDonald1-4/+3
Change-Id: I88fe17466b606a1f60a4c823214edd9766deb260
2014-03-10Implement time-based resume and playback start.Michael Sevakis1-6/+8
This complements offset-based resume and playback start funcionality. The implementation is global on both HWCODEC and SWCODEC. Basically, if either the specified elapsed or offset are non-zero, it indicates a mid-track resume. To resume by time only, set elapsed to nonzero and offset to zero. To resume by offset only, set offset to nonzero and elapsed to zero. Which one the codec uses and which has priority is up to the codec; however, using an elapsed time covers more cases: * Codecs not able to use an offset such as VGM or other atomic formats * Starting playback at a nonzero elapsed time from a source that contains no offset, such as a cuesheet The change re-versions pretty much everything from tagcache to nvram. Change-Id: Ic7aebb24e99a03ae99585c5e236eba960d163f38 Reviewed-on: Reviewed-by: Michael Sevakis <> Tested: Michael Sevakis <>
2012-07-31Fix database tool.Thomas Martitz1-3/+3
It was also broken functionally, probably since a while.So restore the functionality. Run it on the dap, the tcd files will be placed into .rockbox folder. Change-Id: Id7a6ce4389dfaf99799258902be80d630af0601c
2012-07-30Database: Support for multiple search roots.Thomas Martitz1-2/+0
Support multiple roots (i.e. scan folders) using the new folder_select() function. Amaximum of 12 dirs can be selected, however the setting (i.e. the entire folder list) cannot be longer than 80 chars. The setting works similar to the autoresume dirs: Directories are seperated by colons, e.g. "/Music:/Podcasts". Default is "/sdcard" on android, "/" on all other targets. Changes are made to the multiple-root logic in tagcache.c. This is to a) provide the logic at all on native targets and b) support more than one root before the scan even starts (until now it was used to add roots during scan due to symlinks). Change-Id: I64992c0678324536e8e64cd4427c8abbd8e8b39e
2011-12-19Add more INIT_ATTR and add config.h includes to header files with INIT_ATTR.Boris Gjenero1-0/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-12-14FS#12378 : Remove various unused code, and comment out some unused code and ↵Boris Gjenero1-3/+0
data for reference or future use. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-08-30GSoC/Buflib: Enable compaction in buflib.Thomas Martitz1-1/+3
This enables the ability to allocate (and free) memory dynamically without fragmentation, through compaction. This means allocations can move and fragmentation be reduced. Most changes are preparing Rockbox for this, which many times means adding a move callback which can temporarily disable movement when the corresponding code is in a critical section. For now, the audio buffer allocation has a central role, because it's the one having allocated most. This buffer is able to shrink itself, for which it needs to stop playback for a very short moment. For this, audio_buffer_available() returns the size of the audio buffer which can possibly be used by other allocations because the audio buffer can shrink. lastfm scrobbling and timestretch can now be toggled at runtime without requiring a reboot. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-07-31FS#12132 patch 6, part 2: tagnavi.config: Add support for "basename"Michael Hohmuth1-2/+2
in formats and conditions. The basename is the non-directory part of a file's pathname. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-07-01Allocate indices directly in ramcache header. Add version code toMiika Pekkarinen1-0/+3
tagcache state dump header. Debug: hdr-structure corruption might happen after rebuilding of dircache. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-06-06FS#12132 patch 4: Added a comment for the tagcache_search.type field.Michael Hohmuth1-1/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-05-10tagnavi.config: Add a logical-OR operator ("|") for tagnavi conditionals.Michael Hohmuth1-1/+1
Logical-AND ("&") always takes precedence over logical-OR. (Parentheses are not supported.) Fight binsize increase by storing some common expressions in local variables. This avoids repeated reevaluations involving memory accesses. check_clauses: Fail clause (return false) in case of errors (tag too long, DB entry deleted). git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-02-27Fix database import and exportMichael Hohmuth1-1/+1
Correct an omission that happened when the DB schema was changed last time. Add a comment to enum tag_type to prevent this from happening in the future. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-01-17Fix player becoming unresponsive on Stop / Pause in some cases.Dominik Riebeling1-0/+1
Fix for FS#11856: In tagtree_buffer_event, do not wait for database to come online as that may never happen. Rather, wait until it either has come online or has decided that this will never happen. Added a new function to tagcache.c to export this information. Flyspray: FS#11865 Author: Michael Hohmuth git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-01-02Commit part of FS#11748 by Michael Hohmuth. Adds support for automatically ↵Michael Giacomelli1-2/+3
resuming any song that is not played to completion at any point later in time, regardless of how many intermediate tracks are played. This is accomplished by expanding the database to record incompletely played tracks. Currently, the feature is simply on or off, in which case all tracks automatically resume, or they do not. The remainder of patches in the task expand this feature by allowing only certain file to automatically resume, only resuming in certain circumstances, etc but are not included until we reach agreement on what should be included. Additionally, the manual will need to be updated once we agree on the available settings. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-09-30use correct condition for #if for tagcache_fill_tags().Teruaki Kawashima1-0/+2
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-05-20accept FS#10992 by Rui Araújo to fix FS#10976 - make the <Untagged> string ↵Jonathan Gordon1-0/+3
translatable git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-03-03FS#10756 - Free unused init codeThomas Martitz1-1/+1
Introduce a new .init section for initialisation code, so that it can be copied to an area which is later overwritten before calling. The stack/bss can then overwrite that code, effectively freeing the code size that the initialisation routines need. Gives a few kB ram usage back. Only implemented for PP and as3525 so far. More targets could be added, as well as more functions. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-06-20Keep simulators happy.Miika Pekkarinen1-1/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-06-20A bunch of stability fixes into tagcache engine and database browser. Mainly ↵Miika Pekkarinen1-14/+19
data retrieval problems, races, data corruption of sorted index files at the end with junk data, access to unitialized memory and so on. Should fix FS#8710 and may fix FS#8414. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-06-06Add a system-wide BIT_N macro, implemented via an LUT on SH, and use it in ↵Andrew Mahone1-6/+2
the TAGCACHE_IS_* macros in place of per-set LUTs, removing duplication of data between those LUTs and the mask values used on other targets. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-06-03Replace bitfield for tagcache tag sets with array of char on SH.Andrew Mahone1-1/+2
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-06-03Replace arrays of tags that are numeric/sorted/uniqued with bitfields ↵Andrew Mahone1-2/+17
flagging each tag that is a member of the set, and replace the membership tests with a shift and bitwise and. The test is still done inside a function on SH, as this saves some space vs the macro used on other targets. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-03-06Fix FS#9977 - Thanks to Brian Sutherland for intensive testing and effortThomas Martitz1-1/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2008-10-15Split id3.c/h into metadata.c/h and metadata/mp3.c. Updated all references. ↵Björn Stenberg1-1/+1
Moved mp3data.c/h from firmware to apps. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2008-08-29Fixed a possible index id destruction and temporary problems with the DB ↵Miika Pekkarinen1-2/+6
when DB has been loaded to ram, dircache enabled and statistics gathering ON. Fixed serial (affecting last played song order) being one too low after importing the changelog. A bit of code cleanup and comments also. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2008-06-28Updated our source code header to explicitly mention that we are GPL v2 orDaniel Stenberg1-2/+4
later. We still need to hunt down snippets used that are not. 1324 modified files... git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2008-05-03Renamed build_tagcache to tagcache_build to make it consistent with the ↵Bertrik Sikken1-1/+1
function naming of the other functions in tagcache.c git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2008-05-03Made source files #include the header file that they implement to make sure ↵Bertrik Sikken1-1/+2
they are in sync. Made some local functions static. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2008-03-25Tiny fix of spelling in comment.Steve Bavin1-1/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2008-02-17Fixed red, forgot to commit header changes.Miika Pekkarinen1-0/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-12-18Preserve song statistics when moving files or altering metadata. Conditions ↵Miika Pekkarinen1-7/+5
required to apply: song length must not change AND either filenames (with path) must match or two of the following tags matches: artist, album, title. IMPORTANT: Currently dircache enabled and DB loaded to RAM is required for reliable operation of this feature. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-12-16Added file modify time field to the DB. Now metadata changes should be ↵Miika Pekkarinen1-3/+16
detected with database autoupdate enabled. Runtime statistics are not yet preserved. Preserving statistics over moving of files and altering metadata is going to be implemented next. IMPORTANT: Export database before upgrading. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-10-30some improvements to FS#8008 - see tracker entry for detailsRobert Kukla1-4/+3
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-10-29rework my previous commit (FS#8008) to be able to work for any of the ↵Jonathan Gordon1-4/+6
strings in the id3 info struct, new ones need to be added to tagtree.c and tagnavi.config *currently available tags are* #title# #artist# #album# #genre# #composer# #albumartist# and #directory# git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-10-29Accept FS#8008 - allows the current artist or album to be used in databse ↵Jonathan Gordon1-1/+7
searches (use the #artist# or #album# keywords in tagnavi.config) git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-10-21Fixed debug menu crashing. Show last file processed by tagcache engine in ↵Miika Pekkarinen1-0/+7
debug menu. Enabled autoupdating of deleted files for flash storage devices. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-08-08Add support for grouping tags. From FS#7362.Dan Everton1-3/+3
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-08-03Add support for parsing the disc number tag from metadata and use of it in ↵Dan Everton1-3/+3
the database. Patch originally from FS#4961 with some minor tweaks by me. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-07-21Queue song statistical data to the tagcache system and update entirely in ↵Miika Pekkarinen1-0/+6
background. Fixes ratings disappearing or not saving in the DB at all. Fixes also UI delay when stopping playback and new statistics are committed to DB. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-04-12Now track total playtime should be accessible as well by using Pm and Ps ↵Miika Pekkarinen1-0/+1
virtual tags. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-04-12Added virtual tags in database to break track length to minutes and seconds.Miika Pekkarinen1-0/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-03-26Rating support for database and WPS (based on FS# 6301). A value between 0 ↵Robert Kukla1-4/+4
and 10 can be assigned to the currently playing track using the WPS context menu. This value is displayed in the WPS using the %rr tag (replacing autoscore) and can be used as "rating" in tagnavi.config (examples provided). git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-03-08Really don't try to initialise while the database status is unknownSteve Bavin1-0/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-03-07Lead user through database initialisationSteve Bavin1-1/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-03-01Introducing the root menu!Jonathan Gordon1-0/+1
Blind users: get a new voice file as there are lots of lang changes and new strings. FS#6630 or RootMenu on the wiki for more info. complaints to /dev/null :) git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2007-02-25Cleaned up code a bit, fixed possible bug during committing numeric indices ↵Miika Pekkarinen1-5/+6
and made code more fault tolerant. Added a new numeric tag making it possible to list recently added tracks. Export your DB. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657