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 */