audio: Allow plugins to update new fields
authorLucas De Marchi <lucas.demarchi@intel.com>
Fri, 2 Aug 2013 20:19:19 +0000 (17:19 -0300)
committerLucas De Marchi <lucas.demarchi@intel.com>
Mon, 5 Aug 2013 14:15:21 +0000 (11:15 -0300)
We don't have versioning in plugins' structs, so plugins must be
updated.

src/lib/lightmediascanner_db.h
src/lib/lightmediascanner_db_audio.c

index 7e71071..df094d7 100644 (file)
@@ -89,10 +89,16 @@ extern "C" {
         struct lms_string_size artist;
         struct lms_string_size album;
         struct lms_string_size genre;
+        struct lms_string_size container;
+        struct lms_string_size codec;
+        struct lms_string_size dlna_profile;
         unsigned int playcnt;
         unsigned char trackno;
         unsigned char rating;
         unsigned int length;
+        unsigned char channels;
+        unsigned int sampling_rate;
+        unsigned int bitrate;
     };
 
     typedef struct lms_db_audio lms_db_audio_t;
index ae0c488..eabb93c 100644 (file)
@@ -380,11 +380,13 @@ lms_db_audio_start(lms_db_audio_t *lda)
     if (lda->_is_started)
         return 0;
 
-    lda->insert_audio = lms_db_compile_stmt(lda->db,
-        "INSERT OR REPLACE INTO audios "
+    lda->insert_audio = lms_db_compile_stmt(
+        lda->db, "INSERT OR REPLACE INTO audios "
         "(id, title, album_id, artist_id, genre_id, "
-        "trackno, rating, playcnt, length) "
-        "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
+        "trackno, rating, playcnt, length, "
+        "container, codec, channels, sampling_rate, bitrate, dlna_profile) "
+        "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, "
+        "?, ?, ?, ?, ?, ?)");
     if (!lda->insert_audio)
         return -2;
 
@@ -703,6 +705,32 @@ _db_insert_audio(lms_db_audio_t *lda, const struct lms_audio_info *info, int64_t
     if (ret != 0)
         goto done;
 
+    ret = lms_db_bind_text(stmt, 10, info->container.str, info->container.len);
+    if (ret != 0)
+        goto done;
+
+    ret = lms_db_bind_text(stmt, 11, info->codec.str, info->codec.len);
+    if (ret != 0)
+        goto done;
+
+    ret = lms_db_bind_int(stmt, 12, info->channels);
+    if (ret != 0)
+        goto done;
+
+    ret = lms_db_bind_int(stmt, 13, info->sampling_rate);
+    if (ret != 0)
+        goto done;
+
+    ret = lms_db_bind_int(stmt, 14, info->bitrate);
+    if (ret != 0)
+        goto done;
+
+    /* TODO: Calculate dlna_profile ourselves */
+    ret = lms_db_bind_text(stmt, 15, info->dlna_profile.str,
+                           info->dlna_profile.len);
+    if (ret != 0)
+        goto done;
+
     r = sqlite3_step(stmt);
     if (r != SQLITE_DONE) {
         fprintf(stderr, "ERROR: could not insert audio info: %s\n",