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#define GAVL_META_HASH "Hash"
50
51/* Object is locked for access */
52#define GAVL_META_LOCKED "Locked"
53
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
83#define GAVL_META_CATEGORY "Category"
84
85
91#define GAVL_META_TRACKNUMBER "Track"
92
98#define GAVL_META_DATE "Date"
99
105#define GAVL_META_DATE_CREATE "CreationDate" // YYYY-MM-DD [HH:MM:SS]
106
112#define GAVL_META_DATE_MODIFY "ModificationDate" // YYYY-MM-DD [HH:MM:SS]
113
114#define GAVL_META_MTIME "mtime" // time_t (from stat()) as long
115
116/* Size of the oject in bytes */
117#define GAVL_META_TOTAL_BYTES "totalbytes"
118
122#define GAVL_META_YEAR "Year" // YYYY
123
129#define GAVL_META_LANGUAGE "Language" // ISO 639-2/B 3 letter code
130
134#define GAVL_META_COMMENT "Comment"
135
139#define GAVL_META_RELURL "RelURL"
140
144// #define GAVL_META_REFURL "RefURL"
145
152#define GAVL_META_SOFTWARE "Software"
153
157#define GAVL_META_CREATOR "Creator"
158
164#define GAVL_META_FORMAT "Format"
165
166/* Some defined formats */
167
168#define GAVL_META_FORMAT_MP3 "MP3"
169#define GAVL_META_FORMAT_FLAC "Flac"
170
180#define GAVL_META_LABEL "Label"
181
188#define GAVL_META_BITRATE "Bitrate"
189
190/* Framerate (float, exact value is in the video format) */
191
192#define GAVL_META_FRAMERATE "Framerate"
193
197#define GAVL_META_AUDIO_BITS "BitsPerSample"
198
202#define GAVL_META_VIDEO_BPP "BitsPerPixel"
203
207#define GAVL_META_VENDOR "Vendor"
208
209#define GAVL_META_DISK_NAME GAVL_META_LABEL
210
214#define GAVL_META_DEVICE "Device"
215
219#define GAVL_META_STATION "Station"
220#define GAVL_META_STATION_URL "StationURL"
221#define GAVL_META_LOGO_URL "LogoURL"
222
226#define GAVL_META_APPROX_DURATION "ApproxDuration"
227
230#define GAVL_META_MIMETYPE "MimeType"
231
234#define GAVL_META_URI "URI"
235
238#define GAVL_META_REAL_URI "RealURI"
239
244#define GAVL_META_SRC "src"
245
246
247/* Total tracks of the logical parent */
248#define GAVL_META_TOTAL_TRACKS "TotalTracks"
249
253#define GAVL_META_BIG_ENDIAN "BigEndian"
254
257#define GAVL_META_ACTOR "Actor"
258
262#define GAVL_META_DIRECTOR "Director"
263
267#define GAVL_META_COUNTRY "Country"
268
269
273// ISO 3166-1 alpha-3
274#define GAVL_META_COUNTRY_CODE_3 "CountryCode3"
275
276// ISO 3166-1 alpha-2
277#define GAVL_META_COUNTRY_CODE_2 "CountryCode2"
278
279#define GAVL_META_GROUP "Group"
280
281
282#define GAVL_META_DESCRIPTION "Description"
283
287#define GAVL_META_PLOT GAVL_META_DESCRIPTION
288
294#define GAVL_META_AUDIO_LANGUAGES "AudioLanguages"
295
301#define GAVL_META_SUBTITLE_LANGUAGES "SubtitleLanguages"
302
303/* Images associated with media content */
304
310#define GAVL_META_COVER_URL "CoverURL"
311
312
313/* For embedded covers: Location is NULL and offset and size are given */
314#define GAVL_META_COVER_EMBEDDED "CoverEmbedded"
315#define GAVL_META_COVER_OFFSET "CoverOffset"
316#define GAVL_META_COVER_SIZE "CoverSize"
317
318#define GAVL_META_WALLPAPER_URL "WallpaperURL"
319#define GAVL_META_POSTER_URL "PosterURL"
320#define GAVL_META_ICON_URL "IconURL"
321#define GAVL_META_ICON_NAME "IconName"
322
323#define GAVL_META_CAN_SEEK "CanSeek"
324
325#define GAVL_META_CAN_PAUSE "CanPause"
326#define GAVL_META_SAMPLE_ACCURATE "SampleAccurate"
327
328#define GAVL_META_TIME_PTS "PTS"
329#define GAVL_META_TIME_CLOCK "Clock"
330#define GAVL_META_TIME_START "Start"
331
332#define GAVL_META_TIME_PTS_TO_CLOCK "PTSToClock"
333#define GAVL_META_TIME_PTS_TO_START "PTSToStart"
334
335#if 0
336#define GAVL_META_CLOCK_TIME_MAP "ClockTimeMap"
337#define GAVL_META_CLOCK_TIME "ClockTime"
338#define GAVL_META_CLOCK_TIME_PTS "PTS"
339#define GAVL_META_CLOCK_TIME_PTS_SCALE "scale"
340#endif
341
342/*
343 * Several commands are expected in asynchronous mode.
344 * Details are specified in libgmerlin
345 */
346
347#define GAVL_META_ASYNC "Async"
348
349#define GAVL_META_AVG_BITRATE "AVGBitrate" // Float, kbps
350#define GAVL_META_AVG_FRAMERATE "AVGFramerate" // Float
351
352/* Purely informational entries for the global metadata or per Location */
353#define GAVL_META_AUDIO_CHANNELS "Channels"
354#define GAVL_META_AUDIO_SAMPLERATE "Samplerate"
355#define GAVL_META_AUDIO_BITRATE "AudioBitrate"
356#define GAVL_META_VIDEO_BITRATE "VideoBitrate"
357#define GAVL_META_AUDIO_CODEC "AudioCodec"
358#define GAVL_META_VIDEO_CODEC "VideoCodec"
359
360#define GAVL_META_VIDEO_ASPECT_RATIO "VideoAspectRatio" // Human readable e.g. (16:9)
361
362#define GAVL_META_WIDTH "w"
363#define GAVL_META_HEIGHT "h"
364#define GAVL_META_X "x"
365#define GAVL_META_Y "y"
366
367/* Specify that a file got transcoded, i.e. has not the original format */
368#define GAVL_META_TRANSCODED "transcoded"
369
370
371#define GAVL_META_NUM_CHILDREN "NumChildren" // Number of children for container items
372#define GAVL_META_NUM_ITEM_CHILDREN "NumItemChildren" // Number of children for container items
373#define GAVL_META_NUM_CONTAINER_CHILDREN "NumContainerChildren" // Number of children for container items
374
375#define GAVL_META_CHILDREN "children" // Generic name for children of an element, which must be an array
376
377#define GAVL_META_IDX "idx" // Index in parent container
378#define GAVL_META_TOTAL "total" // Total number (maximum idx + 1)
379#define GAVL_META_SHOW "Show" // TV Show, this item belongs to
380#define GAVL_META_SEASON "Season" // Season, this episode belongs to (integer but can be non-continuos
381#define GAVL_META_PODCAST "Podcast" // Name of the pocast this item belongs to
382
383#define GAVL_META_EPISODENUMBER "EPNum" // Number of the Episode (starting with 1)
384#define GAVL_META_RATING "Rating" // Rating (float, 0.0..1.0)
385#define GAVL_META_PARENTAL_CONTROL "ParentalControl" // mpaa or FSK (or whatever) rating
386#define GAVL_META_TAG "Tag" // Arbitrary tag
387
388#define GAVL_META_NFO_FILE "NFOFILE" //
389#define GAVL_META_TOOLTIP "tooltip" // Tooltip to be shown in GUIs
390
391#define GAVL_META_STREAM_DURATION "duration"
392#define GAVL_META_STREAM_FORMAT "fmt"
393#define GAVL_META_STREAM_PACKET_TIMESCALE "pscale"
394#define GAVL_META_STREAM_SAMPLE_TIMESCALE "sscale"
395#define GAVL_META_STREAM_ENABLED "enabled"
396
397/* Set to the absolute stream index offset by one by default
398 but can be changed to anything */
399
400#define GAVL_META_STREAM_ID "streamid"
401
402/* Handled inside of gavl */
403#define GAVL_META_STREAM_ID_MSG_GAVF -2
404#define GAVL_META_STREAM_ID_MSG_PROGRAM -1
405
406#define GAVL_META_STREAM_ID_MEDIA_START 1
407
408#define GAVL_META_STREAM_COMPRESSION_INFO "cmp"
409
410
411#define GAVL_META_STREAM_STATS "stats"
412
413#define GAVL_META_STREAM_STATS_NUM_BYTES GAVL_META_TOTAL_BYTES
414#define GAVL_META_STREAM_STATS_NUM_PACKETS "TotalPackets"
415#define GAVL_META_STREAM_STATS_PTS_START "PTSStart"
416#define GAVL_META_STREAM_STATS_PTS_END "PTSEnd"
417#define GAVL_META_STREAM_STATS_PACKET_SIZE_MIN "minsize"
418#define GAVL_META_STREAM_STATS_PACKET_SIZE_MAX "maxsize"
419#define GAVL_META_STREAM_STATS_PACKET_DURATION_MIN "mindur"
420#define GAVL_META_STREAM_STATS_PACKET_DURATION_MAX "maxdur"
421
422#define GAVL_META_STREAMS "streams"
423#define GAVL_META_STREAMS_EXT "streams-ext" // External streams with separate URIs (e.g. subtitles)
424#define GAVL_META_STREAM_TYPE "streamtype"
425
426#define GAVL_META_METADATA "metadata"
427#define GAVL_META_EDL "edl"
428#define GAVL_META_TRACKS GAVL_META_CHILDREN // Array containing single tracks
429
430// Additional url variables passed to the open() function
431#define GAVL_META_URLVARS "urlvars"
432
433#define GAVL_META_CURIDX "curidx" // Index of "current" child
434
435#define GAVL_META_PARTS "parts" // Parts of a multipart movie
436
437#define GAVL_META_VARIANTS "variants" // Multiple variants of the same content (typically with different bitrates)
438
439// #define GAVL_META_DATA_FORMAT_MSG "msg"
440// #define GAVL_META_DATA_ROLE_EVENTS "evt"
441
442#define GAVL_META_MSG_TIMESTAMP "timestamp" // Timestamp of messages embedded into A/V streams
443
444
450#define GAVL_META_MEDIA_CLASS "MediaClass"
451#define GAVL_META_CHILD_CLASS "ChildClass"
452
453/* Value for class */
454#define GAVL_META_MEDIA_CLASS_ITEM "item"
455
456#define GAVL_META_MEDIA_CLASS_AUDIO_FILE "item.audio"
457#define GAVL_META_MEDIA_CLASS_VIDEO_FILE "item.video"
458#define GAVL_META_MEDIA_CLASS_AUDIO_DISK_TRACK "item.audio.disktrack"
459#define GAVL_META_MEDIA_CLASS_VIDEO_DISK_TRACK "item.video.disktrack"
460#define GAVL_META_MEDIA_CLASS_SONG "item.audio.song"
461#define GAVL_META_MEDIA_CLASS_MOVIE "item.video.movie"
462#define GAVL_META_MEDIA_CLASS_MOVIE_PART "item.video.movie.part"
463
464#define GAVL_META_MEDIA_CLASS_AUDIO_PODCAST_EPISODE "item.audio.podcastepisode"
465#define GAVL_META_MEDIA_CLASS_VIDEO_PODCAST_EPISODE "item.video.podcastepisode"
466
467#define GAVL_META_MEDIA_CLASS_TV_EPISODE "item.video.episode"
468
469/* Streams get this this type when it's not clear if they are audio or video broadcasts */
470#define GAVL_META_MEDIA_CLASS_BROADCAST "item.broadcast"
471#define GAVL_META_MEDIA_CLASS_AUDIO_BROADCAST "item.audio.broadcast"
472#define GAVL_META_MEDIA_CLASS_VIDEO_BROADCAST "item.video.broadcast"
473#define GAVL_META_MEDIA_CLASS_IMAGE "item.image"
474
475// non-media file: This is given to filesystem objects, which contain no media
476#define GAVL_META_MEDIA_CLASS_FILE "item.file"
477
478// Location, which needs to be specified further: This is given to urls in redirector (e.g. m3u) files.
479// Loading can be delayed
480
481#define GAVL_META_MEDIA_CLASS_LOCATION "item.location"
482
483// External subtitle file
484#define GAVL_META_MEDIA_CLASS_SUBTITLE_FILE "item.subtitles"
485
486// Stream comes from recording device
487#define GAVL_META_MEDIA_CLASS_AUDIO_RECORDER "item.recorder.audio"
488#define GAVL_META_MEDIA_CLASS_VIDEO_RECORDER "item.recorder.video"
489
490/* Container values */
491#define GAVL_META_MEDIA_CLASS_CONTAINER "container" // Generic
492#define GAVL_META_MEDIA_CLASS_MUSICALBUM "container.musicalbum"
493#define GAVL_META_MEDIA_CLASS_PHOTOALBUM "container.photoalbum"
494#define GAVL_META_MEDIA_CLASS_PLAYLIST "container.playlist"
495#define GAVL_META_MEDIA_CLASS_PODCAST "container.podcast"
496#define GAVL_META_MEDIA_CLASS_CONTAINER_CATEGORY "container.category"
497#define GAVL_META_MEDIA_CLASS_CONTAINER_ACTOR "container.category.actor"
498#define GAVL_META_MEDIA_CLASS_CONTAINER_DIRECTOR "container.category.director"
499#define GAVL_META_MEDIA_CLASS_CONTAINER_ARTIST "container.category.artist"
500#define GAVL_META_MEDIA_CLASS_CONTAINER_COUNTRY "container.category.country"
501#define GAVL_META_MEDIA_CLASS_CONTAINER_GENRE "container.category.genre"
502#define GAVL_META_MEDIA_CLASS_CONTAINER_LANGUAGE "container.category.language"
503#define GAVL_META_MEDIA_CLASS_CONTAINER_TAG "container.category.tag"
504#define GAVL_META_MEDIA_CLASS_CONTAINER_YEAR "container.category.year"
505#define GAVL_META_MEDIA_CLASS_CONTAINER_TV "container.tv"
506#define GAVL_META_MEDIA_CLASS_CONTAINER_RADIO "container.radio"
507#define GAVL_META_MEDIA_CLASS_TV_SEASON "container.season"
508#define GAVL_META_MEDIA_CLASS_TV_SHOW "container.tvshow"
509#define GAVL_META_MEDIA_CLASS_DIRECTORY "container.directory" // On filesystem
510
511#define GAVL_META_MEDIA_CLASS_MULTITRACK_FILE "container.multitrackfile"
512
513/* Root Containers */
514#define GAVL_META_MEDIA_CLASS_ROOT "container.root"
515
516// Mapped locally, not part of database
517#define GAVL_META_MEDIA_CLASS_ROOT_PLAYQUEUE "container.root.playqueue"
518
519#define GAVL_META_MEDIA_CLASS_ROOT_MUSICALBUMS "container.root.musicalbums"
520#define GAVL_META_MEDIA_CLASS_ROOT_SONGS "container.root.songs"
521#define GAVL_META_MEDIA_CLASS_ROOT_MOVIES "container.root.movies"
522#define GAVL_META_MEDIA_CLASS_ROOT_TV_SHOWS "container.root.tvshows"
523#define GAVL_META_MEDIA_CLASS_ROOT_STREAMS "container.root.streams"
524#define GAVL_META_MEDIA_CLASS_ROOT_DIRECTORIES "container.root.directories"
525#define GAVL_META_MEDIA_CLASS_ROOT_PHOTOS "container.root.photos"
526#define GAVL_META_MEDIA_CLASS_ROOT_PODCASTS "container.root.podcasts"
527#define GAVL_META_MEDIA_CLASS_ROOT_RECORDERS "container.root.recorders"
528
529#define GAVL_META_MEDIA_CLASS_ROOT_FAVORITES "container.root.favorites"
530#define GAVL_META_MEDIA_CLASS_ROOT_BOOKMARKS "container.root.bookmarks"
531#define GAVL_META_MEDIA_CLASS_ROOT_LIBRARY "container.root.library"
532
533#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE "container.root.removable"
534#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_AUDIOCD "container.root.removable.cd.audio"
535#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_VCD "container.root.removable.cd.vcd"
536#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_SVCD "container.root.removable.cd.svcd"
537#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_VIDEODVD "container.root.removable.dvd.video"
538
539#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM "container.root.removable.filesystem"
540#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_HDD "container.root.removable.filesystem.hdd"
541#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_PENDRIVE "container.root.removable.filesystem.pendrive"
542#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_MEMORYCARD "container.root.removable.filesystem.memorycard"
543#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_MOBILE "container.root.removable.filesystem.mobile"
544#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_CD "container.root.removable.filesystem.cdrom"
545#define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_DVD "container.root.removable.filesystem.dvd"
546
547/* Remote media server */
548#define GAVL_META_MEDIA_CLASS_ROOT_SERVER "container.root.server"
549
550/* Non-media source related media classes */
551
552#define GAVL_META_MEDIA_CLASS_BACKEND_RENDERER "backend.renderer"
553#define GAVL_META_MEDIA_CLASS_BACKEND_SERVER "backend.server"
554#define GAVL_META_MEDIA_CLASS_BACKEND_CONTROLPANEL "backend.controlpanel"
555
556#define GAVL_META_MEDIA_CLASS_SINK_AUDIO "sink.audio"
557#define GAVL_META_MEDIA_CLASS_SINK_VIDEO "sink.video"
558
559#define GAVL_META_MEDIA_CLASS_WEBPAGE "item.webpage"
560
561/* GUI States */
562
563// Indicate, that an error occurred during loading of a track
564#define GAVL_META_GUI_ERROR "GUIError"
565
566// Track is selected in a GUI
567#define GAVL_META_GUI_SELECTED "GUISelected"
568
569// Track is current in a GUI
570#define GAVL_META_GUI_CURRENT "GUICurrent"
571
576#endif // GAVL_METATAGS_H_INCLUDED