From a94169d9634a6fcb07a24b71738e58eb57fcc22e Mon Sep 17 00:00:00 2001 From: Leandro Dorileo Date: Fri, 17 Jan 2014 10:28:31 -0200 Subject: [PATCH] image/video db: new fields added New fields were introduced, they should go through the lower layers to be used on dlna source code, they are: + image: container: a string carrying the container information, used to determine which dlna set of rules should be applied. + video: packet_size: without the packet_size we can not apply the meg1/2 rules. --- src/lib/lightmediascanner_db.h | 2 ++ src/lib/lightmediascanner_db_image.c | 30 +++++++++++++++++++++++++++--- src/lib/lightmediascanner_db_video.c | 31 +++++++++++++++++++++++++++++-- 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/lib/lightmediascanner_db.h b/src/lib/lightmediascanner_db.h index 0b87b01..e5cb083 100644 --- a/src/lib/lightmediascanner_db.h +++ b/src/lib/lightmediascanner_db.h @@ -81,6 +81,7 @@ extern "C" { unsigned short height; unsigned short orientation; struct lms_gps_info gps; + struct lms_string_size container; }; typedef struct lms_db_image lms_db_image_t; @@ -161,6 +162,7 @@ extern "C" { struct lms_string_size dlna_profile; struct lms_string_size dlna_mime; unsigned int length; + int64_t packet_size; struct lms_stream *streams; }; diff --git a/src/lib/lightmediascanner_db_image.c b/src/lib/lightmediascanner_db_image.c index 737a05f..b9cdf88 100644 --- a/src/lib/lightmediascanner_db_image.c +++ b/src/lib/lightmediascanner_db_image.c @@ -108,9 +108,29 @@ _db_table_updater_images_1(sqlite3 *db, const char *table, unsigned int current_ return ret; } +static int +_db_table_updater_images_2(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) +{ + int ret; + char *err; + + ret = sqlite3_exec( + db, "BEGIN TRANSACTION;" + "ALTER TABLE images ADD COLUMN container TEXT DEFAULT NULL;" + "COMMIT;", + NULL, NULL, &err); + if (ret != SQLITE_OK) { + fprintf(stderr, "ERROR: could add columns to images table: %s\n", err); + sqlite3_free(err); + } + + return ret; +} + static lms_db_table_updater_t _db_table_updater_images[] = { _db_table_updater_images_0, - _db_table_updater_images_1 + _db_table_updater_images_1, + _db_table_updater_images_2 }; @@ -191,8 +211,8 @@ lms_db_image_start(lms_db_image_t *ldi) ldi->insert = lms_db_compile_stmt(ldi->db, "INSERT OR REPLACE INTO images (" "id, title, artist, date, width, height, orientation, " - "gps_lat, gps_long, gps_alt, dlna_profile, dlna_mime) VALUES (" - "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + "gps_lat, gps_long, gps_alt, dlna_profile, dlna_mime, container) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); if (!ldi->insert) return -2; @@ -294,6 +314,10 @@ _db_insert(lms_db_image_t *ldi, const struct lms_image_info *info) if (ret != 0) goto done; + ret = lms_db_bind_text(stmt, 13, info->container.str, info->container.len); + if (ret != 0) + goto done; + r = sqlite3_step(stmt); if (r != SQLITE_DONE) { fprintf(stderr, "ERROR: could not insert image info: %s\n", diff --git a/src/lib/lightmediascanner_db_video.c b/src/lib/lightmediascanner_db_video.c index 8a7f00c..dc9b771 100644 --- a/src/lib/lightmediascanner_db_video.c +++ b/src/lib/lightmediascanner_db_video.c @@ -241,10 +241,33 @@ _db_table_updater_videos_2(sqlite3 *db, const char *table, return 0; } +static int +_db_table_updater_videos_3(sqlite3 *db, const char *table, + unsigned int current_version, int is_last_run) +{ + char *errmsg = NULL; + int r; + + r = sqlite3_exec( + db, "BEGIN TRANSACTION;" + "ALTER TABLE videos ADD COLUMN packet_size INTEGER;" + "COMMIT;", + NULL, NULL, &errmsg); + if (r != SQLITE_OK) { + fprintf(stderr, "ERROR: could add columns to videos table: %s\n", + errmsg); + sqlite3_free(errmsg); + return -1; + } + + return 0; +} + static lms_db_table_updater_t _db_table_updater_videos[] = { _db_table_updater_videos_0, _db_table_updater_videos_1, _db_table_updater_videos_2, + _db_table_updater_videos_3, }; @@ -324,8 +347,8 @@ lms_db_video_start(lms_db_video_t *ldv) ldv->insert = lms_db_compile_stmt(ldv->db, "INSERT OR REPLACE INTO videos (id, title, artist, length, " - "container, dlna_profile, dlna_mime) " - "VALUES (?, ?, ?, ?, ?, ?, ?)"); + "container, dlna_profile, dlna_mime, packet_size) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); if (!ldv->insert) return -2; @@ -546,6 +569,10 @@ _db_insert(lms_db_video_t *ldv, const struct lms_video_info *info) if (ret != 0) goto done; + ret = lms_db_bind_int64(stmt, 8, info->packet_size); + if (ret != 0) + goto done; + r = sqlite3_step(stmt); if (r != SQLITE_DONE) { fprintf(stderr, "ERROR: could not insert video info: %s\n", -- 2.7.4