Lucas De Marchi [Tue, 6 Aug 2013 22:21:21 +0000 (19:21 -0300)]
plugins/id3: Add new fields
Add codec, sampling rate and channels. Container is left empty on
purpose since .mp3 and .aac files are not inside a container per se. We
may want to split the _codecs table later and put the first part as the
container.
We also have basic support for AAC file in a MPEG 4 file, since it's
almost the same of an MPEG2 one.
We only parse audio parameter fields for the ones with ADTS header.
Adding support for ADIF shall be trivial in the future. The current code
find the ID3v2 tag is actually doing more than it needed. The only case
in which the ID3 tag would not be in the start of the file is if there
was an ADIF tag first. But then the header has a fixed size and we
shouldn't need to use a ring buffer of 3 chars. When adding support to
ADIF we may want to kill useless code.
Regarding the supported codecs, we support all the
mpeg{1,2,2.5,3}layer{1,2,3} values. For AAC there's MAIN, LC, SSR and
LTP. Both for MPEG 2 and 4.
Lucas De Marchi [Fri, 2 Aug 2013 21:10:05 +0000 (18:10 -0300)]
plugins/id3: use designated initializers
It's a pain to add more fields to structs that initialized their fields
like this.
Lucas De Marchi [Fri, 2 Aug 2013 20:27:09 +0000 (17:27 -0300)]
audio: use inttypes.h and reorder fields
We don't have versioning in plugins' structs, so plugins must be
updated.
Lucas De Marchi [Mon, 5 Aug 2013 14:10:12 +0000 (11:10 -0300)]
audio: use a macro to bind values
When adding new fields it's too easy to mistakenly call a
lms_db_bind_*() function and forget to update the column which were are
binding to.
Lucas De Marchi [Fri, 2 Aug 2013 20:19:19 +0000 (17:19 -0300)]
audio: Allow plugins to update new fields
We don't have versioning in plugins' structs, so plugins must be
updated.
Lucas De Marchi [Mon, 29 Jul 2013 21:29:38 +0000 (18:29 -0300)]
audio: Add new fields in its table
Lucas De Marchi [Thu, 1 Aug 2013 03:58:00 +0000 (00:58 -0300)]
Set update_id when checking files
Lucas De Marchi [Thu, 1 Aug 2013 03:57:14 +0000 (00:57 -0300)]
Set update_id when processing files
Lucas De Marchi [Tue, 30 Jul 2013 23:36:43 +0000 (20:36 -0300)]
Pass the entire pinfo to the slave
The worker process already needs 2 fields that comes from pinfo when the
process is forked. There's no reason lms_create_slave() and
lms_restart_slave() should keep the rest of the information private.
Since the worker process will require the update_id that also comes from
this struct, pass the entire struct.
Lucas De Marchi [Tue, 30 Jul 2013 21:47:46 +0000 (18:47 -0300)]
Add helper method to update the global update_id
update_id is saved in lms_internal, but it's not a table versioning like
other entries.
Lucas De Marchi [Tue, 30 Jul 2013 21:43:39 +0000 (18:43 -0300)]
Allow to set update_id field in files table
Lucas De Marchi [Mon, 29 Jul 2013 22:31:13 +0000 (19:31 -0300)]
Add update_id to files table
Lucas De Marchi [Wed, 31 Jul 2013 21:43:40 +0000 (18:43 -0300)]
Fix treating up-to-date files as processed
If the file didn't change its mtime and size we shouldn't treat it
otherwise. Previously we would:
1) Call the callback with reply==PROCESSED
2) Increment the number of commits to the database. This could
end with situations like: "BEGIN TRANSACTION; COMMIT;", without
any operation if no file changed at all.
Lucas De Marchi [Wed, 31 Jul 2013 07:08:50 +0000 (04:08 -0300)]
Fix using wrong stmt size column
_update_finfo_from_stmt() was using the wrong size column as the
information about file size. This makes lms_check* always considering
the file as changed, since the size will try to match with the wrong
column.
Lucas De Marchi [Wed, 31 Jul 2013 06:09:11 +0000 (03:09 -0300)]
build: Hide plugins symbols by default
Only export the symbols that are meant to be exported with the proper
use of API
Lucas De Marchi [Wed, 31 Jul 2013 05:46:12 +0000 (02:46 -0300)]
build: Avoid building and installing static plugin
There's no need to build and install a static plugin. So, disable it
(only for plugins).
Lucas De Marchi [Wed, 31 Jul 2013 05:34:09 +0000 (02:34 -0300)]
build: modernize build
- Use subdir-objects
- Don't keep INSTALL file on tree. It's a pain that it's updated
everytime we build the source
- ChangeLog is more like a NEWS file. ChangeLog can be retrieved from
git
- Don't dist autogen.sh since it's intended for devs
Gustavo Sverzut Barbieri [Fri, 6 Jul 2012 14:24:40 +0000 (11:24 -0300)]
release 0.4.5 with mp4v2 2.0 api support.
Gustavo Sverzut Barbieri [Thu, 5 Jul 2012 16:37:47 +0000 (13:37 -0300)]
mp4: support 2.0 mp4v2 API changes.
The function signature changed:
* MP4Read(path, flag) -> MP4Read(path)
* MP4Close(handle) -> MP4Close(handle, flags)
Then detect this and add a new define to choose how to use functions.
Gustavo Sverzut Barbieri [Fri, 19 Aug 2011 21:00:48 +0000 (18:00 -0300)]
release 0.4.4 with minor build improvements.
Gustavo Sverzut Barbieri [Fri, 19 Aug 2011 20:57:48 +0000 (17:57 -0300)]
INSTALL: update autofoo provided install instructions file.
Gustavo Sverzut Barbieri [Fri, 19 Aug 2011 20:57:03 +0000 (17:57 -0300)]
Ignore generated files.
Gustavo Sverzut Barbieri [Fri, 19 Aug 2011 20:54:37 +0000 (17:54 -0300)]
improve autofoo handling of m4 and generation.
Use recommended macro in configure.ac and Makefile.am to define "m4/"
as our storage for macro files.
Use autoreconf instead of manually running all the commands on our
own.
Gustavo Sverzut Barbieri [Fri, 19 Aug 2011 20:41:49 +0000 (17:41 -0300)]
ship config.rpath to shut up newer automake.
AM_ICONV requires config.rpath that is provided by gettext stuff, but
we don't use gettext/autopoint so it's not created. However seems
newer automake will complain about this missing file.
I'm not happy to copy this non-sense script into repository, but let's
go the easy route.
Gustavo Sverzut Barbieri [Thu, 18 Aug 2011 19:18:25 +0000 (16:18 -0300)]
use AM_ICONV to allow external libiconv to be used.
Gustavo Sverzut Barbieri [Wed, 17 Aug 2011 17:10:41 +0000 (14:10 -0300)]
Update my copyright and lgpl to 2.1
Gustavo Sverzut Barbieri [Tue, 22 Mar 2011 16:31:20 +0000 (13:31 -0300)]
Fixed AM_CONDITIONAL(USE_TREMOR) if OGG was not in use.
Gustavo Sverzut Barbieri [Thu, 2 Dec 2010 01:13:26 +0000 (23:13 -0200)]
0.4.2 release with RPM spec inside.
Gustavo Sverzut Barbieri [Thu, 2 Dec 2010 01:10:18 +0000 (23:10 -0200)]
ignore generated RPM spec file.
Rui Miguel Silva Seabra [Mon, 29 Nov 2010 21:05:31 +0000 (21:05 +0000)]
Add RPM spec so rpm-build works
Signed-off-by: Rui Miguel Silva Seabra <rms@1407.org>
Gustavo Sverzut Barbieri [Thu, 23 Sep 2010 01:22:42 +0000 (22:22 -0300)]
New release with mp4v2.h fixes.
Gustavo Sverzut Barbieri [Thu, 23 Sep 2010 01:21:58 +0000 (22:21 -0300)]
Support mp4v2.h as well.
mp4v2 does not ship with mp4.h anymore, so let's detect that.
Gustavo Sverzut Barbieri [Thu, 23 Sep 2010 01:21:17 +0000 (22:21 -0300)]
detect color in more $TERM (urxvt and screen)
João Paulo Rechi Vita [Mon, 12 Jul 2010 21:08:15 +0000 (18:08 -0300)]
Release 0.4
João Paulo Rechi Vita [Mon, 12 Jul 2010 19:26:50 +0000 (16:26 -0300)]
Mention rakuco's contributions
João Paulo Rechi Vita [Mon, 12 Jul 2010 19:24:53 +0000 (16:24 -0300)]
Mention jprvita's contributions
João Paulo Rechi Vita [Mon, 12 Jul 2010 19:23:57 +0000 (16:23 -0300)]
Update etrunko's email on authors file
João Paulo Rechi Vita [Mon, 23 Nov 2009 17:33:33 +0000 (15:33 -0200)]
Fix double call of lms_parsers_finish()
If an error ocurred in _db_and_parsers_setup() called from the single
process version of lms_process, lms_parsers_finish() was called twice,
leading to a double free.
Raphael Kubo da Costa [Wed, 7 Oct 2009 21:40:10 +0000 (18:40 -0300)]
Change the dummy plugin not to write a log file.
João Paulo Rechi Vita [Wed, 7 Oct 2009 21:27:17 +0000 (18:27 -0300)]
Fix lms_parser_del().
When memmove'ing the parsers array, the pointer to the array was being
overwritten with the destination of the memmove.
Fix by Rafael Antognolli <antognolli@profusion.mobi>.
João Paulo Rechi Vita [Tue, 29 Sep 2009 16:11:05 +0000 (13:11 -0300)]
Adds insert time (itime) field to table files.
This field represents the time each file was inserted in the database.
It's updated on INSERT statements and also when dtime is set to zero
(representing a re-insertion of a file with the same path).
It does not cover the case where a path is overwritten by a different
file without prior deletion. In this case the itime remains the time
of the insertion of the first file.
João Paulo Rechi Vita [Tue, 29 Sep 2009 16:03:13 +0000 (13:03 -0300)]
Fix binding in lms_db_set_file_dtime().
The id value was being binded to the statement with index one, which
is the index of the dtime field in the statement.
Eduardo Lima (Etrunko) [Mon, 12 Jul 2010 19:24:03 +0000 (16:24 -0300)]
Ogg: Add "ogv" extension
Raphael Kubo da Costa [Fri, 2 Jul 2010 15:38:48 +0000 (12:38 -0300)]
Allow building from a separate directory.
Rafael Antognolli [Thu, 3 Sep 2009 23:38:25 +0000 (20:38 -0300)]
Remove compiler warnings.
João Paulo Rechi Vita [Wed, 26 Aug 2009 21:42:44 +0000 (18:42 -0300)]
Fix small typo on README file.
João Paulo Rechi Vita [Fri, 21 Aug 2009 20:29:32 +0000 (17:29 -0300)]
Add length field to table videos.
João Paulo Rechi Vita [Fri, 21 Aug 2009 15:48:54 +0000 (12:48 -0300)]
Add length field to table audios.
João Paulo Rechi Vita [Mon, 17 Aug 2009 20:52:32 +0000 (17:52 -0300)]
Fix doxygen of dtime field in files DB table.
Luis Felipe Strano Moraes [Mon, 16 Feb 2009 17:16:04 +0000 (14:16 -0300)]
Added m4v extension to the mp4 plugin.
Luis Felipe Strano Moraes [Fri, 13 Feb 2009 15:37:12 +0000 (13:37 -0200)]
LMS was mistakingly treating Composer field as Genre/Content.
Gustavo Sverzut Barbieri [Tue, 3 Feb 2009 20:54:09 +0000 (18:54 -0200)]
Version bump to reflect API changes.
Rafael Antognolli [Thu, 8 Jan 2009 17:02:42 +0000 (15:02 -0200)]
Fix sqlite3 dependencies.
Gustavo Lima Chaves [Thu, 18 Dec 2008 21:48:34 +0000 (19:48 -0200)]
New status code for progress callback (affects lms_process only).
Changed the semantics of the LMS_PROGRESS_STATUS_PROCESSED status code,
which is now triggered only for files which are actually parsed (do a
match). Files which don't get a parser match send the
*new* LMS_PROGRESS_STATUS_SKIPPED status code.
Also updating TODO file.
Luis Felipe Strano Moraes [Thu, 20 Nov 2008 19:52:49 +0000 (17:52 -0200)]
Do not modify or free FLAC library-owned strings.
lms_string_size_strip_and_free() and lms_charset_conv() will modify
string contents and pointers, do not handle it FLAC library strings,
this will screw memory. Instead we duplicate memory, operate on it and
then free.
Gustavo Sverzut Barbieri [Wed, 22 Oct 2008 04:22:08 +0000 (02:22 -0200)]
add path to parser_info.
This way we can use lms_parser_info_find() to retrieve module path as well.
Gustavo Sverzut Barbieri [Tue, 21 Oct 2008 21:03:12 +0000 (19:03 -0200)]
improve test to use getopt.
Test is now much more user friendly using getopt, one can choose to
set or not various parameters that before were forced. See --help.
Gustavo Sverzut Barbieri [Tue, 21 Oct 2008 18:50:22 +0000 (16:50 -0200)]
export parsers and their informations.
It is now possible to list all known parsers and retrieve information
about them, like category and description.
Gustavo Sverzut Barbieri [Sun, 5 Oct 2008 14:44:41 +0000 (11:44 -0300)]
Release 0.2
Gustavo Sverzut Barbieri [Sun, 5 Oct 2008 15:04:31 +0000 (12:04 -0300)]
Remove compiler warnings.
Gustavo Lima Chaves [Wed, 17 Sep 2008 22:15:10 +0000 (19:15 -0300)]
New column on audios table: artist_id.
In the old schema, audio files with no album tags didn't get
their artist tags inserted on the DB, also.
Gustavo Lima Chaves [Fri, 19 Sep 2008 15:17:13 +0000 (12:17 -0300)]
Bugfix: using correct column.
Gustavo Lima Chaves [Tue, 16 Sep 2008 22:24:47 +0000 (19:24 -0300)]
Introducing new API function: lms_check_single_process().
It behaves as lms_check(), but without forking into a child process.
The test program was updated in order to choose which checking API
function to call.
Gustavo Lima Chaves [Tue, 16 Sep 2008 22:06:20 +0000 (19:06 -0300)]
Changes on (lms_check's) functions to facilitate the choice between
single process/original version mode of operation of LMS.
Now a custom _check_row() function may be used. Also preparing for
introduction of a new db struct.
Gustavo Lima Chaves [Tue, 16 Sep 2008 21:17:10 +0000 (18:17 -0300)]
Factoring out code from (lms_check's) lms_check() and some related functions.
Gustavo Lima Chaves [Tue, 16 Sep 2008 13:51:25 +0000 (10:51 -0300)]
Introducing new API function: lms_process_single_process().
It behaves as lms_process(), but without forking into a child process.
The test program was updated in order to choose which processing API
function to call.
Gustavo Lima Chaves [Mon, 15 Sep 2008 22:26:31 +0000 (19:26 -0300)]
Adapting _process_trigger() to call a custom process_file() function.
The modification on struct pinfo was made because a new info struct is to
be introduced for the single-process version of LMS API functions. They
have struct cinfo as common fields.
Gustavo Lima Chaves [Mon, 15 Sep 2008 22:11:47 +0000 (19:11 -0300)]
Factoring out code from (lms_process's) lms_process().
One of the created functions will manage the choice between
single process/original version mode of operation of LMS.
Gustavo Lima Chaves [Mon, 15 Sep 2008 21:52:13 +0000 (18:52 -0300)]
Factoring out code from (lms_process's) _slave_work().
The two created functions are going to be, later, used by
file processing functions for the single version lms API.
Gustavo Sverzut Barbieri [Fri, 8 Aug 2008 04:41:11 +0000 (01:41 -0300)]
Add callback to report progress.
Andre Moreira Magalhaes [Fri, 27 Jun 2008 17:22:10 +0000 (14:22 -0300)]
Get missing data from id3v1 when they are not available on id3v2.
Eduardo Lima (Etrunko) [Thu, 22 May 2008 23:48:39 +0000 (20:48 -0300)]
ASF: Get album artist from extended content description.
Gustavo Sverzut Barbieri [Wed, 30 Apr 2008 22:27:27 +0000 (19:27 -0300)]
Update my mail, add Etrunko.
Gustavo Sverzut Barbieri [Wed, 30 Apr 2008 19:19:52 +0000 (16:19 -0300)]
Proper handling of DT_UNKNOWN directory entry type.
Some file systems like ReiserFS and NFS use DT_UNKNOWN for both
files and directories, so in this case on must stat(2) the path
to get the real type of the file.
Thanks to Etrunko, Aloisio, Lauro and MoRpHeUz for point it.
Eduardo Lima (Etrunko) [Fri, 25 Apr 2008 20:56:50 +0000 (17:56 -0300)]
OGG: Avoid segfault when value returned by vorbis_comment_query is NULL.
Created new function to avoid code duplication.
Eduardo Lima (Etrunko) [Thu, 17 Apr 2008 19:38:38 +0000 (16:38 -0300)]
Added example in test.c.
Eduardo Lima (Etrunko) [Thu, 17 Apr 2008 19:32:23 +0000 (16:32 -0300)]
OGG: Make ogg plugin work with both libvorbisidec (aka Tremor) and libvorbis.
Eduardo Lima (Etrunko) [Thu, 17 Apr 2008 19:21:19 +0000 (16:21 -0300)]
configure.ac: Better check for mp4 libraries.
Eduardo Lima (Etrunko) [Mon, 14 Apr 2008 19:17:49 +0000 (16:17 -0300)]
Fixed FSF address.
Andre Moreira Magalhaes [Tue, 8 Apr 2008 20:14:26 +0000 (17:14 -0300)]
Added flv to video-dummy.
Andre Moreira Magalhaes [Fri, 14 Mar 2008 13:12:58 +0000 (10:12 -0300)]
Removed dead code.
Gustavo Sverzut Barbieri [Thu, 13 Mar 2008 21:03:04 +0000 (18:03 -0300)]
Correct accounting for id3v1 strings.
I was not counting the last character, but until it. Now it correctly
counts the number of letters.
Gustavo Sverzut Barbieri [Wed, 12 Mar 2008 23:22:17 +0000 (20:22 -0300)]
Handle possible realloc() errors.
Gustavo Sverzut Barbieri [Wed, 12 Mar 2008 22:30:19 +0000 (19:30 -0300)]
Better handling of id3v1 fields.
This will do less operations, handle strip, avoid leaks and also reuse
memory.
Andre Moreira Magalhaes [Tue, 11 Mar 2008 18:00:53 +0000 (15:00 -0300)]
Ignore frames that contain just the encoding info.
Andre Moreira Magalhaes [Tue, 11 Mar 2008 18:01:11 +0000 (15:01 -0300)]
Minor bugfixes.
Do not stop parsing frames when a frame with 0 bytes is found.
Try to find id3v1 tag is parsing id3v2 fails.
Gustavo Sverzut Barbieri [Wed, 12 Mar 2008 22:15:06 +0000 (19:15 -0300)]
Fix segmentation faults for zero-sized id3v2 frames.
Gustavo Sverzut Barbieri [Fri, 7 Mar 2008 23:12:04 +0000 (20:12 -0300)]
Add myself as author of id3
Gustavo Sverzut Barbieri [Fri, 7 Mar 2008 21:03:41 +0000 (18:03 -0300)]
Rework _find_id3v2() for simpler and faster code.
Gustavo Sverzut Barbieri [Fri, 7 Mar 2008 20:15:55 +0000 (17:15 -0300)]
id3: minor id3v2 dispatcher speedup.
Reduce number of comparisons and calls to memcmp() for id3v2 frames by
using direct comparsions.
Gustavo Sverzut Barbieri [Fri, 7 Mar 2008 18:14:36 +0000 (15:14 -0300)]
Move logic to get specific frame contents to separate functions.
This will help to minimize _parse_id3v2_frame() binary size, very
useful because it'll avoid loading all the code for all the functions
given that just one is really used at time.
Gustavo Sverzut Barbieri [Fri, 7 Mar 2008 17:57:19 +0000 (14:57 -0300)]
id3: avoid some strips if content is known to be correct.
Gustavo Sverzut Barbieri [Fri, 7 Mar 2008 17:17:17 +0000 (14:17 -0300)]
id3: just change cur_artist_priority if it's actually used.
We should just change cur_artist_priority if the new artist is not empty.
Gustavo Sverzut Barbieri [Fri, 7 Mar 2008 15:38:49 +0000 (12:38 -0300)]
Cosmetic: fit in 80 cols
Gustavo Sverzut Barbieri [Thu, 6 Mar 2008 23:16:24 +0000 (20:16 -0300)]
Speed up id3v1 genre usage.
This uses just one memory block containing all the strings and an
array with the offsets to its base, this also enables one to know the
string size with a simple calc.
By using just one memory block for strings should help with
relocations, by using the offsets we can save strlen() and strdup(),
using malloc() + memcpy() directly.
Gustavo Sverzut Barbieri [Thu, 6 Mar 2008 22:07:25 +0000 (19:07 -0300)]
Share id3v1_genre getter.
Gustavo Sverzut Barbieri [Thu, 6 Mar 2008 21:40:59 +0000 (18:40 -0300)]
Make defines dependent on real data, avoid getting out of sync.
Andre Moreira Magalhaes [Thu, 6 Mar 2008 20:10:55 +0000 (17:10 -0300)]
Use posix_fadvise.
Andre Moreira Magalhaes [Thu, 6 Mar 2008 19:34:06 +0000 (16:34 -0300)]
Improved artist/genre handling.
Check if the new artist is a valid string before replacing the current one,
even if the new one has a higher priority.
Proper handle ID3v2.3 genre enclosed by parentheses.
Andre Moreira Magalhaes [Thu, 6 Mar 2008 19:21:09 +0000 (16:21 -0300)]
Fixed mp4 detection to not modify LIBS.