|
|
@@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
Copyright (C) 2011 David Robillard |
|
|
|
Copyright (C) 2011-2014 David Robillard |
|
|
|
Copyright (C) 2013 Paul Davis |
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify it |
|
|
@@ -40,6 +40,15 @@ extern "C" { |
|
|
|
|
|
|
|
/** |
|
|
|
* A single property (key:value pair). |
|
|
|
* |
|
|
|
* Although there is no semantics imposed on metadata keys and values, it is |
|
|
|
* much less useful to use it to associate highly structured data with a port |
|
|
|
* (or client), since this then implies the need for some (presumably |
|
|
|
* library-based) code to parse the structure and be able to use it. |
|
|
|
* |
|
|
|
* The real goal of the metadata API is to be able to tag ports (and clients) |
|
|
|
* with small amounts of data that is outside of the core JACK API but |
|
|
|
* nevertheless useful. |
|
|
|
*/ |
|
|
|
typedef struct { |
|
|
|
/** The key of this property (URI string). */ |
|
|
@@ -185,6 +194,18 @@ typedef enum { |
|
|
|
PropertyDeleted |
|
|
|
} jack_property_change_t; |
|
|
|
|
|
|
|
/** |
|
|
|
* Prototype for the client supplied function that is called by the |
|
|
|
* engine anytime a property or properties have been modified. |
|
|
|
* |
|
|
|
* Note that when the key is empty, it means all properties have been |
|
|
|
* modified. This is often used to indicate that the removal of all keys. |
|
|
|
* |
|
|
|
* @param subject The subject the change relates to, this can be either a client or port |
|
|
|
* @param key The key of the modified property (URI string) |
|
|
|
* @param change Wherever the key has been created, changed or deleted |
|
|
|
* @param arg pointer to a client supplied structure |
|
|
|
*/ |
|
|
|
typedef void (*JackPropertyChangeCallback)(jack_uuid_t subject, |
|
|
|
const char* key, |
|
|
|
jack_property_change_t change, |
|
|
@@ -204,19 +225,98 @@ int jack_set_property_change_callback (jack_client_t* client, |
|
|
|
JackPropertyChangeCallback callback, |
|
|
|
void* arg); |
|
|
|
|
|
|
|
#ifdef __cplusplus |
|
|
|
} /* namespace */ |
|
|
|
#endif |
|
|
|
/** |
|
|
|
* A value that identifies what the hardware port is connected to (an external |
|
|
|
* device of some kind). Possible values might be "E-Piano" or "Master 2 Track". |
|
|
|
*/ |
|
|
|
extern const char* JACK_METADATA_CONNECTED; |
|
|
|
|
|
|
|
/** |
|
|
|
* @} |
|
|
|
* The supported event types of an event port. |
|
|
|
* |
|
|
|
* This is a kludge around Jack only supporting MIDI, particularly for OSC. |
|
|
|
* This property is a comma-separated list of event types, currently "MIDI" or |
|
|
|
* "OSC". If this contains "OSC", the port may carry OSC bundles (first byte |
|
|
|
* '#') or OSC messages (first byte '/'). Note that the "status byte" of both |
|
|
|
* OSC events is not a valid MIDI status byte, so MIDI clients that check the |
|
|
|
* status byte will gracefully ignore OSC messages if the user makes an |
|
|
|
* inappropriate connection. |
|
|
|
*/ |
|
|
|
extern const char* JACK_METADATA_EVENT_TYPES; |
|
|
|
|
|
|
|
extern const char* JACK_METADATA_PRETTY_NAME; |
|
|
|
/** |
|
|
|
* A value that should be shown when attempting to identify the |
|
|
|
* specific hardware outputs of a client. Typical values might be |
|
|
|
* "ADAT1", "S/PDIF L" or "MADI 43". |
|
|
|
*/ |
|
|
|
extern const char* JACK_METADATA_HARDWARE; |
|
|
|
extern const char* JACK_METADATA_CONNECTED; |
|
|
|
extern const char* JACK_METADATA_PORT_GROUP; |
|
|
|
extern const char* JACK_METADATA_ICON_SMALL; |
|
|
|
|
|
|
|
/** |
|
|
|
* A value with a MIME type of "image/png;base64" that is an encoding of an |
|
|
|
* NxN (with 32 < N <= 128) image to be used when displaying a visual |
|
|
|
* representation of that client or port. |
|
|
|
*/ |
|
|
|
extern const char* JACK_METADATA_ICON_LARGE; |
|
|
|
|
|
|
|
/** |
|
|
|
* The name of the icon for the subject (typically client). |
|
|
|
* |
|
|
|
* This is used for looking up icons on the system, possibly with many sizes or |
|
|
|
* themes. Icons should be searched for according to the freedesktop Icon |
|
|
|
* |
|
|
|
* Theme Specification: |
|
|
|
* http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html |
|
|
|
*/ |
|
|
|
extern const char* JACK_METADATA_ICON_NAME; |
|
|
|
|
|
|
|
/** |
|
|
|
* A value with a MIME type of "image/png;base64" that is an encoding of an |
|
|
|
* NxN (with N <=32) image to be used when displaying a visual representation |
|
|
|
* of that client or port. |
|
|
|
*/ |
|
|
|
extern const char* JACK_METADATA_ICON_SMALL; |
|
|
|
|
|
|
|
/** |
|
|
|
* Order for a port. |
|
|
|
* |
|
|
|
* This is used to specify the best order to show ports in user interfaces. |
|
|
|
* The value MUST be an integer. There are no other requirements, so there may |
|
|
|
* be gaps in the orders for several ports. Applications should compare the |
|
|
|
* orders of ports to determine their relative order, but must not assign any |
|
|
|
* other relevance to order values. |
|
|
|
* |
|
|
|
* It is encouraged to use http://www.w3.org/2001/XMLSchema#int as the type. |
|
|
|
*/ |
|
|
|
extern const char* JACK_METADATA_ORDER; |
|
|
|
|
|
|
|
/** |
|
|
|
* A value that should be shown to the user when displaying a port to the user, |
|
|
|
* unless the user has explicitly overridden that a request to show the port |
|
|
|
* name, or some other key value. |
|
|
|
*/ |
|
|
|
extern const char* JACK_METADATA_PRETTY_NAME; |
|
|
|
|
|
|
|
/** |
|
|
|
*/ |
|
|
|
extern const char* JACK_METADATA_PORT_GROUP; |
|
|
|
|
|
|
|
/** |
|
|
|
* The type of an audio signal. |
|
|
|
* |
|
|
|
* This property allows audio ports to be tagged with a "meaning". The value |
|
|
|
* is a simple string. Currently, the only type is "CV", for "control voltage" |
|
|
|
* ports. Hosts SHOULD be take care to not treat CV ports as audibile and send |
|
|
|
* their output directly to speakers. In particular, CV ports are not |
|
|
|
* necessarily periodic at all and may have very high DC. |
|
|
|
*/ |
|
|
|
extern const char* JACK_METADATA_SIGNAL_TYPE; |
|
|
|
|
|
|
|
/** |
|
|
|
* @} |
|
|
|
*/ |
|
|
|
|
|
|
|
#ifdef __cplusplus |
|
|
|
} /* namespace */ |
|
|
|
#endif |
|
|
|
|
|
|
|
#endif /* __jack_metadata_h__ */ |