From b520d9da41a63bd9118e109869e7aadf4eb0fdbf Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Wed, 12 Feb 2014 12:40:08 -0200 Subject: [PATCH] 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. --- src/lib/lightmediascanner_plugin.h | 1 + src/lib/lightmediascanner_process.c | 3 +++ src/plugins/generic/generic.c | 3 +++ 3 files changed, 7 insertions(+) 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; -- 2.7.4