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