diff options
author | Gustavo Sverzut Barbieri <gustavo.barbieri@intel.com> | 2014-02-12 12:40:08 -0200 |
---|---|---|
committer | Gustavo Sverzut Barbieri <gustavo.barbieri@intel.com> | 2014-02-12 12:40:08 -0200 |
commit | b520d9da41a63bd9118e109869e7aadf4eb0fdbf (patch) | |
tree | 23ae8f73fb731b421e4b981e8e47b7f073b227f6 | |
parent | 0d7677025e945c967db429b7bcf5b160c1fcc0d3 (diff) | |
download | lightmediascanner-b520d9da41a63bd9118e109869e7aadf4eb0fdbf.tar.gz lightmediascanner-b520d9da41a63bd9118e109869e7aadf4eb0fdbf.tar.bz2 lightmediascanner-b520d9da41a63bd9118e109869e7aadf4eb0fdbf.zip |
Record if the file was already parsed, ignore them in the generic.
Generic parser is more like a fallback, then if the file was already
parsed by some other parser it should ignore that entry.
-rw-r--r-- | src/lib/lightmediascanner_plugin.h | 1 | ||||
-rw-r--r-- | src/lib/lightmediascanner_process.c | 3 | ||||
-rw-r--r-- | src/plugins/generic/generic.c | 3 |
3 files changed, 7 insertions, 0 deletions
diff --git a/src/lib/lightmediascanner_plugin.h b/src/lib/lightmediascanner_plugin.h index 4eece6a..41abd62 100644 --- a/src/lib/lightmediascanner_plugin.h +++ b/src/lib/lightmediascanner_plugin.h @@ -151,6 +151,7 @@ extern "C" { time_t dtime; /**< deletion time */ time_t itime; /**< insert time */ size_t size; /**< file size in bytes */ + unsigned char parsed : 1; /**< if file was already successfully parsed before */ }; struct lms_context { diff --git a/src/lib/lightmediascanner_process.c b/src/lib/lightmediascanner_process.c index 2302303..65a6f84 100644 --- a/src/lib/lightmediascanner_process.c +++ b/src/lib/lightmediascanner_process.c @@ -395,6 +395,7 @@ lms_parsers_run(lms_t *lms, sqlite3 *db, void **parser_match, struct lms_file_in _ctxt_init(&ctxt, lms, db); + finfo->parsed = 0; failed = 0; available = 0; for (i = 0; i < lms->n_parsers; i++) { @@ -408,6 +409,8 @@ lms_parsers_run(lms_t *lms, sqlite3 *db, void **parser_match, struct lms_file_in r = plugin->parse(plugin, &ctxt, finfo, parser_match[i]); if (r != 0) failed++; + else + finfo->parsed = 1; } } diff --git a/src/plugins/generic/generic.c b/src/plugins/generic/generic.c index e453b67..4be6d60 100644 --- a/src/plugins/generic/generic.c +++ b/src/plugins/generic/generic.c @@ -439,6 +439,9 @@ _parse(struct plugin *plugin, struct lms_context *ctxt, const struct lms_file_in struct lms_string_size container = { }; bool video = false; + if (finfo->parsed) + return 0; + if ((ret = avformat_open_input(&fmt_ctx, finfo->path, NULL, NULL))) return ret; |