gavl
metatags.h
1/*****************************************************************
2 * gavl - a general purpose audio/video processing library
3 *
4 * Copyright (c) 2001 - 2012 Members of the Gmerlin project
5 * gmerlin-general@lists.sourceforge.net
6 * http://gmerlin.sourceforge.net
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 * *****************************************************************/
21
22#ifndef GAVL_METATAGS_H_INCLUDED
23#define GAVL_METATAGS_H_INCLUDED
24
38#define GAVL_META_TITLE "Title"
39
41#define GAVL_META_SEARCH_TITLE "SearchTitle"
42
43#define GAVL_META_ORIGINAL_TITLE "OriginalTitle"
44
47#define GAVL_META_ID "ID"
48#define GAVL_META_UUID "UUID"
49
50/* Object is locked for access */
51#define GAVL_META_LOCKED "Locked"
52
53#define GAVL_META_PARENT_ID "ParentID" // Obsolete, can obtain from ID
54#define GAVL_META_NEXT_ID "NextID"
55#define GAVL_META_PREVIOUS_ID "PreviousID"
56
59#define GAVL_META_ARTIST "Artist"
60
63#define GAVL_META_ALBUMARTIST "Albumartist"
64
67#define GAVL_META_AUTHOR "Author"
68
71#define GAVL_META_COPYRIGHT "Copyright"
72
75#define GAVL_META_ALBUM "Album"
76
79#define GAVL_META_GENRE "Genre"
80
86#define GAVL_META_TRACKNUMBER "Track"
87
93#define GAVL_META_DATE "Date"
94
100#define GAVL_META_DATE_CREATE "CreationDate" // YYYY-MM-DD [HH:MM:SS]
101
107#define GAVL_META_DATE_MODIFY "ModificationDate" // YYYY-MM-DD [HH:MM:SS]
108
109#define GAVL_META_MTIME "mtime" // time_t (from stat()) as long
110
111/* Size of the oject in bytes */
112#define GAVL_META_TOTAL_BYTES "totalbytes"
113
117#define GAVL_META_YEAR "Year" // YYYY
118
124#define GAVL_META_LANGUAGE "Language" // ISO 639-2/B 3 letter code
125
129#define GAVL_META_COMMENT "Comment"
130
134#define GAVL_META_RELURL "RelURL"
135
139#define GAVL_META_REFURL "RefURL"
140
147#define GAVL_META_SOFTWARE "Software"
148
152#define GAVL_META_CREATOR "Creator"
153
159#define GAVL_META_FORMAT "Format"
160
161/* Some defined formats */
162
163#define GAVL_META_FORMAT_MP3 "MP3"
164#define GAVL_META_FORMAT_FLAC "Flac"
165
175#define GAVL_META_LABEL "Label"
176
183#define GAVL_META_BITRATE "Bitrate"
184
188#define GAVL_META_AUDIO_BITS "BitsPerSample"
189
193#define GAVL_META_VIDEO_BPP "BitsPerPixel"
194
198#define GAVL_META_VENDOR "Vendor"
199
200#define GAVL_META_DISK_NAME GAVL_META_LABEL
201
205#define GAVL_META_DEVICE "Device"
206
210#define GAVL_META_STATION "Station"
211#define GAVL_META_STATION_URL "StationURL"
212#define GAVL_META_LOGO_URL "LogoURL"
213
217#define GAVL_META_APPROX_DURATION "ApproxDuration"
218
221#define GAVL_META_MIMETYPE "MimeType"
222
225#define GAVL_META_URI "URI"
226
231#define GAVL_META_SRC "src"
232
233/* Which index is currently opened */
234#define GAVL_META_SRCIDX "srcidx"
235
236/* Total tracks of the logical parent */
237#define GAVL_META_TOTAL_TRACKS "TotalTracks"
238
242#define GAVL_META_BIG_ENDIAN "BigEndian"
243
246#define GAVL_META_ACTOR "Actor"
247
251#define GAVL_META_DIRECTOR "Director"
252
256#define GAVL_META_COUNTRY "Country"
257
261// ISO 3166-1 alpha-3
262#define GAVL_META_COUNTRY_CODE_3 "CountryCode3"
263
264// ISO 3166-1 alpha-2
265#define GAVL_META_COUNTRY_CODE_2 "CountryCode2"
266
267
268#define GAVL_META_DESCRIPTION "Description"
269
273#define GAVL_META_PLOT GAVL_META_DESCRIPTION
274
280#define GAVL_META_AUDIO_LANGUAGES "AudioLanguages"
281
287#define GAVL_META_SUBTITLE_LANGUAGES "SubtitleLanguages"
288
289/* Images associated with media content */
290
291
297#define GAVL_META_COVER_URL "CoverURL"
298
299
300/* For embedded covers: Location is NULL and offset and size are given */
301#define GAVL_META_COVER_EMBEDDED "CoverEmbedded"
302#define GAVL_META_COVER_OFFSET "CoverOffset"
303#define GAVL_META_COVER_SIZE "CoverSize"
304
305#define GAVL_META_WALLPAPER_URL "WallpaperURL"
306#define GAVL_META_POSTER_URL "PosterURL"
307#define GAVL_META_ICON_URL "IconURL"
308#define GAVL_META_ICON_NAME "IconName"
309
310#define GAVL_META_CAN_SEEK "CanSeek"
311#define GAVL_META_CAN_PAUSE "CanPause"
312#define GAVL_META_SAMPLE_ACCURATE "SampleAccurate"
313
314/*
315 * Several commands are expected in asynchronous mode.
316 * Details are specified in libgmerlin
317 */
318
319#define GAVL_META_ASYNC "Async"
320
321#define GAVL_META_AVG_BITRATE "AVGBitrate" // Float, kbps
322#define GAVL_META_AVG_FRAMERATE "AVGFramerate" // Float
323
324/* Purely informational entries for the global metadata or per Location */
325#define GAVL_META_AUDIO_CHANNELS "Channels"
326#define GAVL_META_AUDIO_SAMPLERATE "Samplerate"
327#define GAVL_META_AUDIO_BITRATE "AudioBitrate"
328#define GAVL_META_VIDEO_BITRATE "VideoBitrate"
329#define GAVL_META_AUDIO_CODEC "AudioCodec"
330#define GAVL_META_VIDEO_CODEC "VideoCodec"
331
332#define GAVL_META_VIDEO_ASPECT_RATIO "VideoAspectRatio" // Human readable e.g. (16:9)
333
334#define GAVL_META_WIDTH "w"
335#define GAVL_META_HEIGHT "h"
336#define GAVL_META_X "x"
337#define GAVL_META_Y "y"
338
339
340#define GAVL_META_IMAGE_ORIENTATION "ImageOrientation" // See GAVL_META_IMAGE_ORIENT_
341
342#define GAVL_META_IMAGE_ORIENT_NORMAL 0
343#define GAVL_META_IMAGE_ORIENT_ROT90_CW 1
344#define GAVL_META_IMAGE_ORIENT_ROT180_CW 2
345#define GAVL_META_IMAGE_ORIENT_ROT270_CW 3
346
347#define GAVL_META_IMAGE_ORIENT_FLIP_H (1<<2)
348
349#define GAVL_META_IMAGE_ORIENT_FH (GAVL_META_IMAGE_ORIENT_FLIP_H | GAVL_META_IMAGE_ORIENT_NORMAL)
350#define GAVL_META_IMAGE_ORIENT_FH_ROT90_CW (GAVL_META_IMAGE_ORIENT_FLIP_H | GAVL_META_IMAGE_ORIENT_ROT90_CW)
351#define GAVL_META_IMAGE_ORIENT_FH_ROT180_CW (GAVL_META_IMAGE_ORIENT_FLIP_H | GAVL_META_IMAGE_ORIENT_ROT180_CW)
352#define GAVL_META_IMAGE_ORIENT_FH_ROT270_CW (GAVL_META_IMAGE_ORIENT_FLIP_H | GAVL_META_IMAGE_ORIENT_ROT270_CW)
353
354#define GAVL_META_NUM_CHILDREN "NumChildren" // Number of children for container items
355#define GAVL_META_NUM_ITEM_CHILDREN "NumItemChildren" // Number of children for container items
356#define GAVL_META_NUM_CONTAINER_CHILDREN "NumContainerChildren" // Number of children for container items
357
358#define GAVL_META_CHILDREN "children" // Generic name for children of an element, which must be an array
359
360#define GAVL_META_IDX "idx" // Index in parent container
361#define GAVL_META_TOTAL "total" // Total number (maximum idx + 1)
362#define GAVL_META_SHOW "Show" // TV Show, this item belongs to
363#define GAVL_META_SEASON "Season" // Season, this episode belongs to (integer but can be non-continuos
364#define GAVL_META_EPISODENUMBER "EPNum" // Number of the Episode (starting with 1)
365#define GAVL_META_RATING "Rating" // Rating (float, 0.0..1.0)
366#define GAVL_META_PARENTAL_CONTROL "ParentalControl" // mpaa or FSK (or whatever) rating
367#define GAVL_META_TAG "Tag" // Arbitrary tag
368
369#define GAVL_META_NFO_FILE "NFOFILE" //
370
371#define GAVL_META_STREAM_DURATION "duration"
372#define GAVL_META_STREAM_FORMAT "fmt"
373#define GAVL_META_STREAM_PACKET_TIMESCALE "pscale"
374#define GAVL_META_STREAM_SAMPLE_TIMESCALE "sscale"
375
376/* Set to the absolute stream index offset by one by default
377 but can be changed to anything */
378
379#define GAVL_META_STREAM_ID "streamid"
380
381#define GAVL_META_STREAM_ID_MSG_DEMUXER -1
382#define GAVL_META_STREAM_ID_MSG_PROGRAM -2
383#define GAVL_META_STREAM_ID_MSG_CONTROL -3
384
385#define GAVL_META_STREAM_ID_MEDIA_START 1
386
387#define GAVL_META_STREAM_STATS "stats"
388
389#define GAVL_META_STREAM_STATS_NUM_BYTES GAVL_META_TOTAL_BYTES
390#define GAVL_META_STREAM_STATS_NUM_PACKETS "TotalPackets"
391#define GAVL_META_STREAM_STATS_PTS_START "PTSStart"
392#define GAVL_META_STREAM_STATS_PTS_END "PTSEnd"
393#define GAVL_META_STREAM_STATS_PACKET_SIZE_MIN "minsize"
394#define GAVL_META_STREAM_STATS_PACKET_SIZE_MAX "maxsize"
395#define GAVL_META_STREAM_STATS_PACKET_DURATION_MIN "mindur"
396#define GAVL_META_STREAM_STATS_PACKET_DURATION_MAX "maxdur"
397
398#define GAVL_META_STREAMS "streams"
399#define GAVL_META_STREAM_TYPE "streamtype"
400
401#define GAVL_META_METADATA "metadata"
402#define GAVL_META_EDL "edl"
403#define GAVL_META_TRACKS GAVL_META_CHILDREN // Array containing single tracks
404
405#define GAVL_META_CURIDX "curidx" // Index of "current" child
406
407#define GAVL_META_PARTS "parts" // Parts of a multipart movie
408
409// #define GAVL_META_DATA_FORMAT_MSG "msg"
410// #define GAVL_META_DATA_ROLE_EVENTS "evt"
411
412#define GAVL_META_MSG_TIMESTAMP "timestamp" // Timestamp of messages embedded into A/V streams
413
414
420#define GAVL_META_MEDIA_CLASS "MediaClass"
421#define GAVL_META_CHILD_CLASS "ChildClass"
422
423/* Value for class */
424#define GAVL_META_MEDIA_CLASS_ITEM "item"
425
426#define GAVL_META_MEDIA_CLASS_AUDIO_FILE "item.audio"
427#define GAVL_META_MEDIA_CLASS_VIDEO_FILE "item.video"
428#define GAVL_META_MEDIA_CLASS_AUDIO_DISK_TRACK "item.audio.disktrack"
429#define GAVL_META_MEDIA_CLASS_VIDEO_DISK_TRACK "item.video.disktrack"
430#define GAVL_META_MEDIA_CLASS_SONG "item.audio.song"
431#define GAVL_META_MEDIA_CLASS_MOVIE "item.video.movie"
432#define GAVL_META_MEDIA_CLASS_MOVIE_PART "item.video.movie.part"
433#define GAVL_META_MEDIA_CLASS_MOVIE_MULTIPART "item.video.movie.multipart"
434
435#define GAVL_META_MEDIA_CLASS_AUDIO_PODCAST_EPISODE "item.audio.podcastepisode"
436#define GAVL_META_MEDIA_CLASS_VIDEO_PODCAST_EPISODE "item.video.podcastepisode"
437
438#define GAVL_META_MEDIA_CLASS_TV_EPISODE "item.video.episode"
439#define GAVL_META_MEDIA_CLASS_AUDIO_BROADCAST "item.audio.broadcast"
440#define GAVL_META_MEDIA_CLASS_VIDEO_BROADCAST "item.video.broadcast"
441#define GAVL_META_MEDIA_CLASS_IMAGE "item.image"
442
443// non-media file: This is given to filesystem objects, which contain no media
444#define GAVL_META_MEDIA_CLASS_FILE "item.file"
445
446// Location, which needs to be specified further: This is given to urls in redirector (e.g. m3u) files.
447// Loading can be delayed
448
449#define GAVL_META_MEDIA_CLASS_LOCATION "item.location"
450
451// Stream comes from recording device
452#define GAVL_META_MEDIA_CLASS_AUDIO_RECORDER "item.recorder.audio"
453#define GAVL_META_MEDIA_CLASS_VIDEO_RECORDER "item.recorder.video"
454
455/* Container values */
456#define GAVL_META_MEDIA_CLASS_CONTAINER "container" // Generic
457#define GAVL_META_MEDIA_CLASS_MUSICALBUM "container.musicalbum"
458#define GAVL_META_MEDIA_CLASS_PHOTOALBUM "container.photoalbum"
459#define GAVL_META_MEDIA_CLASS_PLAYLIST "container.playlist"
460#define GAVL_META_MEDIA_CLASS_PODCAST "container.podcast"
461#define GAVL_META_MEDIA_CLASS_CONTAINER_ACTOR "container.category.actor"
462#define GAVL_META_MEDIA_CLASS_CONTAINER_DIRECTOR "container.category.director"
463#define GAVL_META_MEDIA_CLASS_CONTAINER_ARTIST "container.category.artist"
464#define GAVL_META_MEDIA_CLASS_CONTAINER_COUNTRY "container.category.country"
465#define GAVL_META_MEDIA_CLASS_CONTAINER_GENRE "container.category.genre"
466#define GAVL_META_MEDIA_CLASS_CONTAINER_LANGUAGE "container.category.language"
467#define GAVL_META_MEDIA_CLASS_CONTAINER_TAG "container.category.tag"
468#define GAVL_META_MEDIA_CLASS_CONTAINER_YEAR "container.category.year"
469#define GAVL_META_MEDIA_CLASS_TV_SEASON "container.season"
470#define GAVL_META_MEDIA_CLASS_TV_SHOW "container.tvshow"
471#define GAVL_META_MEDIA_CLASS_DIRECTORY "container.directory" // On filesystem
472
473#define GAVL_META_MEDIA_CLASS_MULTITRACK_FILE "container.multitrackfile"
474
475/* Root Containers */
476#define GAVL_META_MEDIA_CLASS_ROOT "container.root"
477
478// Mapped locally, not part of database
479#define GAVL_META_MEDIA_CLASS_ROOT_PLAYQUEUE "container.root.playqueue"
480
481#define GAVL_META_MEDIA_CLASS_ROOT_MUSICALBUMS "container.root.musicalbums"
482#define GAVL_META_MEDIA_CLASS_ROOT_SONGS "container.root.songs"
483#define GAVL_META_MEDIA_CLASS_ROOT_PLAYLISTS "container.root.playlists"
484#define GAVL_META_MEDIA_CLASS_ROOT_MOVIES "container.root.movies"
485#define GAVL_META_MEDIA_CLASS_ROOT_TV_SHOWS "container.root.tvshows"
486#define GAVL_META_MEDIA_CLASS_ROOT_WEBRADIO "container.root.webradio"
487#define GAVL_META_MEDIA_CLASS_ROOT_DIRECTORIES "container.root.directories"
488#define GAVL_META_MEDIA_CLASS_ROOT_PHOTOS "container.root.photos"
489#define GAVL_META_MEDIA_CLASS_ROOT_PODCASTS "container.root.podcasts"
490#define GAVL_META_MEDIA_CLASS_ROOT_RECORDERS "container.root.recorders"
491
492#define GAVL_META_MEDIA_CLASS_ROOT_INCOMING "container.root.incoming"
493#define GAVL_META_MEDIA_CLASS_ROOT_FAVORITES "container.root.favorites"
494#define GAVL_META_MEDIA_CLASS_ROOT_BOOKMARKS "container.root.bookmarks"
495#define GAVL_META_MEDIA_CLASS_ROOT_LIBRARY "container.root.library"
496#define GAVL_META_MEDIA_CLASS_ROOT_NETWORK "container.root.network"
497
498#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE "container.root.removable"
499#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_AUDIOCD "container.root.removable.cd.audio"
500#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_VCD "container.root.removable.cd.vcd"
501#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_SVCD "container.root.removable.cd.svcd"
502#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_VIDEODVD "container.root.removable.dvd.video"
503
504#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM "container.root.removable.filesystem"
505#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_HDD "container.root.removable.filesystem.hdd"
506#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_PENDRIVE "container.root.removable.filesystem.pendrive"
507#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_MEMORYCARD "container.root.removable.filesystem.memorycard"
508#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_MOBILE "container.root.removable.filesystem.mobile"
509#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_CD "container.root.removable.filesystem.cdrom"
510#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_DVD "container.root.removable.filesystem.dvd"
511
512/* Remote media server */
513#define GAVL_META_MEDIA_CLASS_ROOT_SERVER "container.root.server"
514
515/* GUI States */
516
517// Indicate, that an error occurrent during loading of a track
518#define GAVL_META_GUI_ERROR "GUIError"
519
520// Track is selected in a GUI
521#define GAVL_META_GUI_SELECTED "GUISelected"
522
523// Track is current in a GUI
524#define GAVL_META_GUI_CURRENT "GUICurrent"
525
530#endif // GAVL_METATAGS_H_INCLUDED