summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo Sverzut Barbieri <gustavo.barbieri@intel.com>2014-02-12 12:40:08 -0200
committerGustavo Sverzut Barbieri <gustavo.barbieri@intel.com>2014-02-12 12:40:08 -0200
commitb520d9da41a63bd9118e109869e7aadf4eb0fdbf (patch)
tree23ae8f73fb731b421e4b981e8e47b7f073b227f6
parent0d7677025e945c967db429b7bcf5b160c1fcc0d3 (diff)
downloadlightmediascanner-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.h1
-rw-r--r--src/lib/lightmediascanner_process.c3
-rw-r--r--src/plugins/generic/generic.c3
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;