1 /* 2 $VER: metadata.h 52.23 (27.09.2015) 3 */ 4 5 #ifndef CLASSES_MULTIMEDIA_METADATA_H 6 #define CLASSES_MULTIMEDIA_METADATA_H 7 8 #include <exec/types.h> 9 10 /* Definitions of metadata interface in Reggae. */ 11 12 /* MetaItem structure is for a single metadata tag. A pointer to table of */ 13 /* such structures is returned on query of MMA_MetaData attribute. */ 14 15 struct MetaItem 16 { 17 ULONG mi_Id; /* one of MMETA_xxx, defines kind of metadata */ 18 ULONG mi_Type; /* one of MTYYPE_xxx, defines data structure */ 19 ULONG mi_Length; /* length of data in bytes (does include Unicode string termination) */ 20 LONG mi_Importance; /* 5 levels of importance (4 is the most important, 0 is least important */ 21 APTR mi_Data; /* points to data */ 22 }; 23 24 25 /* This structure is used for indirect pointing to [large] metadata */ 26 /* available at some Reggae port. Used with MTYPE_PORTNUM. */ 27 28 struct MetaPort 29 { 30 Boopsiobject* mtp_Object; 31 ULONG mtp_Port; 32 }; 33 34 35 /* Data types. */ 36 37 #define MTYPE_NO_TYPE 0 38 #define MTYPE_INTEGER 1 /* 32-bit signed integer */ 39 #define MTYPE_STRING 2 /* NULL-terminated string, encoded in UTF-32BE */ 40 #define MTYPE_CLOCKDATA 3 /* ClockData structure as defined in <utility/date.h> */ 41 #define MTYPE_PORTNUM 4 /* Object and port number (struct MetaPort above). */ 42 #define MTYPE_DOUBLE 5 /* Double precision 64-bit IEEE 754 floating point number. */ 43 44 /* Importance levels. */ 45 46 #define MIMP_MAIN 4 /* main identification data (title, author, album etc.) */ 47 #define MIMP_IMPORTANT 3 /* publication date, composers, actors, director etc. */ 48 #define MIMP_SECONDARY 2 /* type of original media, processing, equalization... */ 49 #define MIMP_DETAILED 1 /* URL-s to sites, comments */ 50 #define MIMP_SPAM 0 /* spam, advertisements */ 51 52 /* Data identifiers. */ 53 54 #define MMETA_BASE (TAG_USER + 0x000045A2) 55 56 #define MMETA_Title (MMETA_BASE + 0) /* [STRING] General. Title of the work. */ 57 #define MMETA_Performer (MMETA_BASE + 1) /* [STRING] Music. Performer of the work. */ 58 #define MMETA_Comment (MMETA_BASE + 2) /* [STRING] General. Just comment. */ 59 #define MMETA_TrackNum (MMETA_BASE + 3) /* [INTEGER] Music. Number of track in album. */ 60 #define MMETA_Album (MMETA_BASE + 4) /* [STRING] Music. Name of the album. */ 61 #define MMETA_PubDate (MMETA_BASE + 5) /* [CLOCKDATA] General. Date of publication. */ 62 #define MMETA_Author (MMETA_BASE + 6) /* [STRING] General. Author of the work. */ 63 #define MMETA_Copyright (MMETA_BASE + 7) /* [STRING] General. Copyright string of the work. */ 64 #define MMETA_Bitrate (MMETA_BASE + 8) /* [INTEGER] General. Stream bitrate in bits per seconds. */ 65 #define MMETA_VideoDpiX (MMETA_BASE + 9) /* [DOUBLE] Video horizontal pixels per inch. */ 66 #define MMETA_VideoDpiY (MMETA_BASE + 10) /* [DOUBLE] Video vertical pixels per inch. */ 67 #define MMETA_VideoAspectX (MMETA_BASE + 11) /* [DOUBLE] Video horizontal aspect ratio. */ 68 #define MMETA_VideoAspectY (MMETA_BASE + 12) /* [DOUBLE] Video vertical aspect ratio. */ 69 #define MMETA_FlashUsed (MMETA_BASE + 13) /* [INTEGER] EXIF Flash options, bitset */ 70 #define MMETA_CameraModel (MMETA_BASE + 14) /* [STRING] EXIF Name of camera creator */ 71 #define MMETA_CameraVendor (MMETA_BASE + 15) /* [STRING] EXIF Name of camera model */ 72 #define MMETA_ExposureTime (MMETA_BASE + 16) /* [DOUBLE] EXIF Exposure time */ 73 #define MMETA_Orientation (MMETA_BASE + 17) /* [INTEGER] EXIF Rotation, values: 1 - 8 */ 74 #define MMETA_GPSLatitude (MMETA_BASE + 18) /* [DOUBLE] Geographic coordinates, latitude (degrees) */ 75 #define MMETA_GPSAltitude (MMETA_BASE + 19) /* [DOUBLE] Geographic coordinates, altitude (meters) */ 76 #define MMETA_GPSLongitude (MMETA_BASE + 20) /* [DOUBLE] Geographic coordinates, longitude (degrees) */ 77 #define MMETA_ColorProfile (MMETA_BASE + 21) /* [PORTNUM] ICC color profile data */ 78 #define MMETA_PerformanceDate (MMETA_BASE + 22) /* [CLOCKDATA] General. Date of performance. */ 79 80 #define MMETA_COUNT 23 81 82 83 /* Metadata query control tags. */ 84 85 #define MMDQ_Base (TAG_USER + 0x0736221A) 86 #define MMDQ_Importance (MMDQ_Base + 0) 87 #define MMDQ_Encoding (MMDQ_Base + 1) 88 89 90 /* Metadata descriptor tags. */ 91 92 #define MMDI_Base (TAG_USER + 0x27A93E06) 93 #define MMDI_Data (MMDI_Base + 0) 94 #define MMDI_Size (MMDI_Base + 1) 95 #define MMDI_CharCount (MMDI_Base + 2) 96 #define MMDI_Type (MMDI_Base + 3) 97 #define MMDI_Importance (MMDI_Base + 4) 98 99 100 #endif /* CLASSES_MULTIMEDIA_METADATA_H */