]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Use the term metadata hub now -- for any stored metadata, such as might be used by...
authorMike Brady <mikebrady@eircom.net>
Sun, 31 Dec 2017 17:01:01 +0000 (17:01 +0000)
committerMike Brady <mikebrady@eircom.net>
Sun, 31 Dec 2017 17:01:01 +0000 (17:01 +0000)
Makefile.am
dacp.c
metadata_hub.c [moved from metadata.c with 81% similarity]
metadata_hub.h [moved from metadata.h with 95% similarity]
rtsp.c
shairport.c

index 0d89417acbaef5405cea68f807eac6aa9371e9f1..9c445486ed35e57c6660e7159a779b60fe1a2a49 100644 (file)
@@ -88,7 +88,7 @@ dbus-interface.c:  org.gnome.ShairportSync.xml
 endif
 
 if USE_DBUS_CORE_AND_DACP
-shairport_sync_SOURCES += dacp.c metadata.c tinyhttp/chunk.c tinyhttp/header.c tinyhttp/http.c 
+shairport_sync_SOURCES += dacp.c metadata_hub.c tinyhttp/chunk.c tinyhttp/header.c tinyhttp/http.c 
 endif
 
 if USE_MPRIS
diff --git a/dacp.c b/dacp.c
index 61a94f511f97de237a713a615885102a2edab266..8865bd49bf76714c9dd1a1c09e31104a1941a347 100644 (file)
--- a/dacp.c
+++ b/dacp.c
@@ -41,7 +41,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#include "metadata.h"
+#include "metadata_hub.h"
 #include "tinyhttp/http.h"
 
 typedef struct {
@@ -300,7 +300,7 @@ void *dacp_monitor_thread_code(void *na) {
       char *sp = response;
       if (le >= 8) {
         // here, we know that we are receiving playerstatusupdates, so set a flag
-        metadata.playerstatusupdates_are_received = 1;
+        metadata_store.playerstatusupdates_are_received = 1;
         // here start looking for the contents of the status update
         if (dacp_tlv_crawl(&sp, &item_size) == 'cmst') { // status
           sp -= item_size; // drop down into the array -- don't skip over it
@@ -333,27 +333,27 @@ void *dacp_monitor_thread_code(void *na) {
               r = *(unsigned char *)(t);
               switch (r) {
               case 2:
-                if (metadata.play_status != PS_STOPPED) {
-                  metadata.play_status = PS_STOPPED;
-                  metadata.play_status_changed = 1;
+                if (metadata_store.play_status != PS_STOPPED) {
+                  metadata_store.play_status = PS_STOPPED;
+                  metadata_store.play_status_changed = 1;
                   debug(1, "Play status set to \"stopped\".");
-                  metadata.changed = 1;
+                  metadata_store.changed = 1;
                 }
                 break;
               case 3:
-                if (metadata.play_status != PS_PAUSED) {
-                  metadata.play_status = PS_PAUSED;
-                  metadata.play_status_changed = 1;
+                if (metadata_store.play_status != PS_PAUSED) {
+                  metadata_store.play_status = PS_PAUSED;
+                  metadata_store.play_status_changed = 1;
                   debug(1, "Play status set to \"paused\".");
-                  metadata.changed = 1;
+                  metadata_store.changed = 1;
                 }
                 break;
               case 4:
-                if (metadata.play_status != PS_PLAYING) {
-                  metadata.play_status = PS_PLAYING;
-                  metadata.play_status_changed = 1;
+                if (metadata_store.play_status != PS_PLAYING) {
+                  metadata_store.play_status = PS_PLAYING;
+                  metadata_store.play_status_changed = 1;
                   debug(1, "Play status set to \"playing\".");
-                  metadata.changed = 1;
+                  metadata_store.changed = 1;
                 }
                 break;
               default:
@@ -366,19 +366,19 @@ void *dacp_monitor_thread_code(void *na) {
               r = *(unsigned char *)(t);
               switch (r) {
               case 0:
-                if (metadata.shuffle_status != SS_OFF) {
-                  metadata.shuffle_status = SS_OFF;
-                  metadata.shuffle_status_changed = 1;
+                if (metadata_store.shuffle_status != SS_OFF) {
+                  metadata_store.shuffle_status = SS_OFF;
+                  metadata_store.shuffle_status_changed = 1;
                   debug(1, "Shuffle status set to \"off\".");
-                  metadata.changed = 1;
+                  metadata_store.changed = 1;
                 }
                 break;
               case 1:
-                if (metadata.shuffle_status != SS_ON) {
-                  metadata.shuffle_status = SS_ON;
-                  metadata.shuffle_status_changed = 1;
+                if (metadata_store.shuffle_status != SS_ON) {
+                  metadata_store.shuffle_status = SS_ON;
+                  metadata_store.shuffle_status_changed = 1;
                   debug(1, "Shuffle status set to \"on\".");
-                  metadata.changed = 1;
+                  metadata_store.changed = 1;
                 }
                 break;
               default:
@@ -391,27 +391,27 @@ void *dacp_monitor_thread_code(void *na) {
               r = *(unsigned char *)(t);
               switch (r) {
               case 0:
-                if (metadata.repeat_status != RS_NONE) {
-                  metadata.repeat_status = RS_NONE;
-                  metadata.repeat_status_changed = 1;
+                if (metadata_store.repeat_status != RS_NONE) {
+                  metadata_store.repeat_status = RS_NONE;
+                  metadata_store.repeat_status_changed = 1;
                   debug(1, "Repeat status set to \"none\".");
-                  metadata.changed = 1;
+                  metadata_store.changed = 1;
                 }
                 break;
               case 1:
-                if (metadata.repeat_status != RS_SINGLE) {
-                  metadata.repeat_status = RS_SINGLE;
-                  metadata.repeat_status_changed = 1;
+                if (metadata_store.repeat_status != RS_SINGLE) {
+                  metadata_store.repeat_status = RS_SINGLE;
+                  metadata_store.repeat_status_changed = 1;
                   debug(1, "Repeat status set to \"single\".");
-                  metadata.changed = 1;
+                  metadata_store.changed = 1;
                 }
                 break;
               case 2:
-                if (metadata.repeat_status != RS_ALL) {
-                  metadata.repeat_status = RS_ALL;
-                  metadata.repeat_status_changed = 1;
+                if (metadata_store.repeat_status != RS_ALL) {
+                  metadata_store.repeat_status = RS_ALL;
+                  metadata_store.repeat_status_changed = 1;
                   debug(1, "Repeat status set to \"all\".");
-                  metadata.changed = 1;
+                  metadata_store.changed = 1;
                 }
                 break;
               default:
@@ -421,68 +421,68 @@ void *dacp_monitor_thread_code(void *na) {
               break;
             case 'cann': // track name
               t = sp - item_size;
-              if ((metadata.track_name == NULL) ||
-                  (strncmp(metadata.track_name, t, item_size) != 0)) {
-                if (metadata.track_name)
-                  free(metadata.track_name);
-                metadata.track_name = strndup(t, item_size);
-                debug(1, "Track name set to: \"%s\"", metadata.track_name);
-                metadata.track_name_changed = 1;
-                metadata.changed = 1;
+              if ((metadata_store.track_name == NULL) ||
+                  (strncmp(metadata_store.track_name, t, item_size) != 0)) {
+                if (metadata_store.track_name)
+                  free(metadata_store.track_name);
+                metadata_store.track_name = strndup(t, item_size);
+                debug(1, "Track name set to: \"%s\"", metadata_store.track_name);
+                metadata_store.track_name_changed = 1;
+                metadata_store.changed = 1;
               }
               break;
             case 'cana': // artist name
               t = sp - item_size;
-              if ((metadata.artist_name == NULL) ||
-                  (strncmp(metadata.artist_name, t, item_size) != 0)) {
-                if (metadata.artist_name)
-                  free(metadata.artist_name);
-                metadata.artist_name = strndup(t, item_size);
-                debug(1, "Artist name set to: \"%s\"", metadata.artist_name);
-                metadata.artist_name_changed = 1;
-                metadata.changed = 1;
+              if ((metadata_store.artist_name == NULL) ||
+                  (strncmp(metadata_store.artist_name, t, item_size) != 0)) {
+                if (metadata_store.artist_name)
+                  free(metadata_store.artist_name);
+                metadata_store.artist_name = strndup(t, item_size);
+                debug(1, "Artist name set to: \"%s\"", metadata_store.artist_name);
+                metadata_store.artist_name_changed = 1;
+                metadata_store.changed = 1;
               }
               break;
             case 'canl': // album name
               t = sp - item_size;
-              if ((metadata.album_name == NULL) ||
-                  (strncmp(metadata.album_name, t, item_size) != 0)) {
-                if (metadata.album_name)
-                  free(metadata.album_name);
-                metadata.album_name = strndup(t, item_size);
-                debug(1, "Album name set to: \"%s\"", metadata.album_name);
-                metadata.album_name_changed = 1;
-                metadata.changed = 1;
+              if ((metadata_store.album_name == NULL) ||
+                  (strncmp(metadata_store.album_name, t, item_size) != 0)) {
+                if (metadata_store.album_name)
+                  free(metadata_store.album_name);
+                metadata_store.album_name = strndup(t, item_size);
+                debug(1, "Album name set to: \"%s\"", metadata_store.album_name);
+                metadata_store.album_name_changed = 1;
+                metadata_store.changed = 1;
               }
               break;
             case 'cang': // genre
               t = sp - item_size;
-              if ((metadata.genre == NULL) || (strncmp(metadata.genre, t, item_size) != 0)) {
-                if (metadata.genre)
-                  free(metadata.genre);
-                metadata.genre = strndup(t, item_size);
-                debug(1, "Genre set to: \"%s\"", metadata.genre);
-                metadata.genre_changed = 1;
-                metadata.changed = 1;
+              if ((metadata_store.genre == NULL) || (strncmp(metadata_store.genre, t, item_size) != 0)) {
+                if (metadata_store.genre)
+                  free(metadata_store.genre);
+                metadata_store.genre = strndup(t, item_size);
+                debug(1, "Genre set to: \"%s\"", metadata_store.genre);
+                metadata_store.genre_changed = 1;
+                metadata_store.changed = 1;
               }
               break;
             case 'canp': // nowplaying 4 ids: dbid, plid, playlistItem, itemid (from mellowware --
                          // see reference above)
               t = sp - item_size;
-              if (memcmp(metadata.item_composite_id, t, sizeof(metadata.item_composite_id)) != 0) {
-                memcpy(metadata.item_composite_id, t, sizeof(metadata.item_composite_id));
+              if (memcmp(metadata_store.item_composite_id, t, sizeof(metadata_store.item_composite_id)) != 0) {
+                memcpy(metadata_store.item_composite_id, t, sizeof(metadata_store.item_composite_id));
 
                 char st[33];
                 char *pt = st;
                 int it;
                 for (it = 0; it < 16; it++) {
-                  sprintf(pt, "%02X", metadata.item_composite_id[it]);
+                  sprintf(pt, "%02X", metadata_store.item_composite_id[it]);
                   pt += 2;
                 }
                 *pt = 0;
                 debug(1, "Item composite ID set to 0x%s.", st);
-                metadata.item_id_changed = 1;
-                metadata.changed = 1;
+                metadata_store.item_id_changed = 1;
+                metadata_store.changed = 1;
               }
               break;
             /*
@@ -551,26 +551,26 @@ void *dacp_monitor_thread_code(void *na) {
       free(response);
       response = NULL;
     };
+    /*
     strcpy(command,"nowplayingartwork?mw=320&mh=320");
     debug(1,"Command: \"%s\", result is %d",command, dacp_send_command(command, &response, &le));
     if (response) {
       free(response);
       response = NULL;
     }
-    /*
     strcpy(command,"getproperty?properties=dmcp.volume");
     debug(1,"Command: \"%s\", result is %d",command, dacp_send_command(command, &response, &le));
     if (response) {
       free(response);
       response = NULL;
     }
-    */
     strcpy(command,"setproperty?dmcp.volume=100.000000");
     debug(1,"Command: \"%s\", result is %d",command, dacp_send_command(command, &response, &le));
     if (response) {
       free(response);
       response = NULL;
     }
+    */
      sleep(2);
   }
   debug(1, "DACP monitor thread exiting.");
similarity index 81%
rename from metadata.c
rename to metadata_hub.c
index 7faed2011f06218abfc7f57b4840e601c68effcf..3dd1ed81cd925e8562eee073060d05e659574ccf 100644 (file)
@@ -1,5 +1,9 @@
 /*
- * Metadata store and access methods.
+ * Metadata hub and access methods.
+ * Basically, if you need to store metadata
+ * (e.g. for use with the dbus interfaces),
+ * then you need a metadata hub,
+ * where everything is stored 
  * This file is part of Shairport Sync.
  * Copyright (c) Mike Brady 2017
  * All rights reserved.
@@ -28,9 +32,9 @@
 #include <string.h>
 
 #include "dacp.h"
-#include "metadata.h"
+#include "metadata_hub.h"
 
-void metadata_bundle_init(void) {
+void metadata_hub_init(void) {
   debug(1, "Metadata bundle initialisation.");
-  memset(&metadata, 0, sizeof(metadata));
+  memset(&metadata_store, 0, sizeof(metadata_store));
 }
similarity index 95%
rename from metadata.h
rename to metadata_hub.h
index 13e7e261fc2b99b4a29412230d56fa2264a65fae..0d4e49985e5d7899fb1392e38dcf1476acef68a2 100644 (file)
@@ -53,6 +53,6 @@ typedef struct metadata_bundle {
 
 } metadata_bundle;
 
-struct metadata_bundle metadata;
+struct metadata_bundle metadata_store;
 
-void metadata_bundle_init(void);
+void metadata_hub_init(void);
diff --git a/rtsp.c b/rtsp.c
index 7e816726712abd2d0f8d23cbae888ab6e10316cd..26eea6556eb0f940f692f443eed502e201e92db4 100644 (file)
--- a/rtsp.c
+++ b/rtsp.c
@@ -1257,6 +1257,7 @@ void *metadata_thread_function(void *ignore) {
     pc_queue_get_item(&metadata_queue, &pack);
     if (config.metadata_enabled)
       metadata_process(pack.type, pack.code, pack.data, pack.length);
+    
     if (pack.carrier)
       msg_free(pack.carrier); // release the message
     else if (pack.data)
index 0687a2b439c501225f0364317903957ec38476ec..ed3623c9d2b7b9bfe22488c9e2f356f2e5a61330 100644 (file)
@@ -60,7 +60,7 @@
 
 #if defined(HAVE_DBUS) || defined(HAVE_MPRIS)
 #include "dacp.h"
-#include "metadata.h"
+#include "metadata_hub.h"
 #endif
 
 #ifdef HAVE_DBUS
@@ -1542,8 +1542,8 @@ int main(int argc, char **argv) {
 #endif
 
 #if defined(HAVE_DBUS) || defined(HAVE_MPRIS)
-  debug(1, "Initialising metadata bundle");
-  metadata_bundle_init();
+  debug(1, "Initialising metadata hub");
+  metadata_hub_init();
 #endif
 
 #if defined(HAVE_DBUS) || defined(HAVE_MPRIS)