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 #define GAVL_META_NUM_CHILDREN "NumChildren" // Number of children for container items
340 #define GAVL_META_NUM_ITEM_CHILDREN "NumItemChildren" // Number of children for container items
341 #define GAVL_META_NUM_CONTAINER_CHILDREN "NumContainerChildren" // Number of children for container items
342 
343 #define GAVL_META_CHILDREN "children" // Generic name for children of an element, which must be an array
344 
345 #define GAVL_META_IDX "idx" // Index in parent container
346 #define GAVL_META_TOTAL "total" // Total number (maximum idx + 1)
347 #define GAVL_META_SHOW "Show" // TV Show, this item belongs to
348 #define GAVL_META_SEASON "Season" // Season, this episode belongs to (integer but can be non-continuos
349 #define GAVL_META_EPISODENUMBER "EPNum" // Number of the Episode (starting with 1)
350 #define GAVL_META_RATING "Rating" // Rating (float, 0.0..1.0)
351 #define GAVL_META_PARENTAL_CONTROL "ParentalControl" // mpaa or FSK (or whatever) rating
352 #define GAVL_META_TAG "Tag" // Arbitrary tag
353 
354 #define GAVL_META_NFO_FILE "NFOFILE" //
355 
356 #define GAVL_META_STREAM_DURATION "duration"
357 #define GAVL_META_STREAM_FORMAT "fmt"
358 #define GAVL_META_STREAM_PACKET_TIMESCALE "pscale"
359 #define GAVL_META_STREAM_SAMPLE_TIMESCALE "sscale"
360 
361 /* Set to the absolute stream index offset by one by default
362  but can be changed to anything */
363 
364 #define GAVL_META_STREAM_ID "streamid"
365 
366 #define GAVL_META_STREAM_ID_MSG_DEMUXER -1
367 #define GAVL_META_STREAM_ID_MSG_PROGRAM -2
368 #define GAVL_META_STREAM_ID_MSG_CONTROL -3
369 
370 #define GAVL_META_STREAM_ID_MEDIA_START 1
371 
372 #define GAVL_META_STREAM_STATS "stats"
373 
374 #define GAVL_META_STREAM_STATS_NUM_BYTES GAVL_META_TOTAL_BYTES
375 #define GAVL_META_STREAM_STATS_NUM_PACKETS "TotalPackets"
376 #define GAVL_META_STREAM_STATS_PTS_START "PTSStart"
377 #define GAVL_META_STREAM_STATS_PTS_END "PTSEnd"
378 #define GAVL_META_STREAM_STATS_PACKET_SIZE_MIN "minsize"
379 #define GAVL_META_STREAM_STATS_PACKET_SIZE_MAX "maxsize"
380 #define GAVL_META_STREAM_STATS_PACKET_DURATION_MIN "mindur"
381 #define GAVL_META_STREAM_STATS_PACKET_DURATION_MAX "maxdur"
382 
383 #define GAVL_META_STREAMS "streams"
384 #define GAVL_META_STREAM_TYPE "streamtype"
385 
386 #define GAVL_META_METADATA "metadata"
387 #define GAVL_META_EDL "edl"
388 #define GAVL_META_TRACKS GAVL_META_CHILDREN // Array containing single tracks
389 
390 #define GAVL_META_CURIDX "curidx" // Index of "current" child
391 
392 #define GAVL_META_PARTS "parts" // Parts of a multipart movie
393 
394 // #define GAVL_META_DATA_FORMAT_MSG "msg"
395 // #define GAVL_META_DATA_ROLE_EVENTS "evt"
396 
397 #define GAVL_META_MSG_TIMESTAMP "timestamp" // Timestamp of messages embedded into A/V streams
398 
399 // Address of a (typically) Unix-domain socket to be used as back channel for messages
400 #define GAVL_META_MSG_BACK_CHANNEL_ADDRESS "backaddr"
401 
402 
408 #define GAVL_META_MEDIA_CLASS "MediaClass"
409 #define GAVL_META_CHILD_CLASS "ChildClass"
410 
411 /* Value for class */
412 #define GAVL_META_MEDIA_CLASS_ITEM "item"
413 
414 #define GAVL_META_MEDIA_CLASS_AUDIO_FILE "item.audio"
415 #define GAVL_META_MEDIA_CLASS_VIDEO_FILE "item.video"
416 #define GAVL_META_MEDIA_CLASS_AUDIO_DISK_TRACK "item.audio.disktrack"
417 #define GAVL_META_MEDIA_CLASS_VIDEO_DISK_TRACK "item.video.disktrack"
418 #define GAVL_META_MEDIA_CLASS_SONG "item.audio.song"
419 #define GAVL_META_MEDIA_CLASS_MOVIE "item.video.movie"
420 #define GAVL_META_MEDIA_CLASS_MOVIE_PART "item.video.movie.part"
421 #define GAVL_META_MEDIA_CLASS_MOVIE_MULTIPART "item.video.movie.multipart"
422 
423 #define GAVL_META_MEDIA_CLASS_AUDIO_PODCAST_EPISODE "item.audio.podcastepisode"
424 #define GAVL_META_MEDIA_CLASS_VIDEO_PODCAST_EPISODE "item.video.podcastepisode"
425 
426 #define GAVL_META_MEDIA_CLASS_TV_EPISODE "item.video.episode"
427 #define GAVL_META_MEDIA_CLASS_AUDIO_BROADCAST "item.audio.broadcast"
428 #define GAVL_META_MEDIA_CLASS_VIDEO_BROADCAST "item.video.broadcast"
429 #define GAVL_META_MEDIA_CLASS_IMAGE "item.image"
430 
431 // non-media file: This is given to filesystem objects, which contain no media
432 #define GAVL_META_MEDIA_CLASS_FILE "item.file"
433 
434 // Location, which needs to be specified further: This is given to urls in redirector (e.g. m3u) files.
435 // Loading can be delayed
436 
437 #define GAVL_META_MEDIA_CLASS_LOCATION "item.location"
438 
439 /* Container values */
440 #define GAVL_META_MEDIA_CLASS_CONTAINER "container" // Generic
441 #define GAVL_META_MEDIA_CLASS_MUSICALBUM "container.musicalbum"
442 #define GAVL_META_MEDIA_CLASS_PLAYLIST "container.playlist"
443 #define GAVL_META_MEDIA_CLASS_PODCAST "container.podcast"
444 #define GAVL_META_MEDIA_CLASS_CONTAINER_ACTOR "container.category.actor"
445 #define GAVL_META_MEDIA_CLASS_CONTAINER_DIRECTOR "container.category.director"
446 #define GAVL_META_MEDIA_CLASS_CONTAINER_ARTIST "container.category.artist"
447 #define GAVL_META_MEDIA_CLASS_CONTAINER_COUNTRY "container.category.country"
448 #define GAVL_META_MEDIA_CLASS_CONTAINER_GENRE "container.category.genre"
449 #define GAVL_META_MEDIA_CLASS_CONTAINER_LANGUAGE "container.category.language"
450 #define GAVL_META_MEDIA_CLASS_CONTAINER_TAG "container.category.tag"
451 #define GAVL_META_MEDIA_CLASS_CONTAINER_YEAR "container.category.year"
452 #define GAVL_META_MEDIA_CLASS_TV_SEASON "container.season"
453 #define GAVL_META_MEDIA_CLASS_TV_SHOW "container.tvshow"
454 #define GAVL_META_MEDIA_CLASS_DIRECTORY "container.directory" // On filesystem
455 
456 #define GAVL_META_MEDIA_CLASS_MULTITRACK_FILE "container.multitrackfile"
457 
458 /* Root Containers */
459 #define GAVL_META_MEDIA_CLASS_ROOT "container.root"
460 
461 // Mapped locally, not part of database
462 #define GAVL_META_MEDIA_CLASS_ROOT_PLAYQUEUE "container.root.playqueue"
463 
464 #define GAVL_META_MEDIA_CLASS_ROOT_MUSICALBUMS "container.root.musicalbums"
465 #define GAVL_META_MEDIA_CLASS_ROOT_SONGS "container.root.songs"
466 #define GAVL_META_MEDIA_CLASS_ROOT_PLAYLISTS "container.root.playlists"
467 #define GAVL_META_MEDIA_CLASS_ROOT_MOVIES "container.root.movies"
468 #define GAVL_META_MEDIA_CLASS_ROOT_TV_SHOWS "container.root.tvshows"
469 #define GAVL_META_MEDIA_CLASS_ROOT_WEBRADIO "container.root.webradio"
470 #define GAVL_META_MEDIA_CLASS_ROOT_DIRECTORIES "container.root.directories"
471 #define GAVL_META_MEDIA_CLASS_ROOT_PHOTOS "container.root.photos"
472 #define GAVL_META_MEDIA_CLASS_ROOT_PODCASTS "container.root.podcasts"
473 
474 #define GAVL_META_MEDIA_CLASS_ROOT_INCOMING "container.root.incoming"
475 #define GAVL_META_MEDIA_CLASS_ROOT_FAVORITES "container.root.favorites"
476 #define GAVL_META_MEDIA_CLASS_ROOT_BOOKMARKS "container.root.bookmarks"
477 #define GAVL_META_MEDIA_CLASS_ROOT_LIBRARY "container.root.library"
478 #define GAVL_META_MEDIA_CLASS_ROOT_NETWORK "container.root.network"
479 
480 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE "container.root.removable"
481 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_AUDIOCD "container.root.removable.cd.audio"
482 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_VCD "container.root.removable.cd.vcd"
483 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_SVCD "container.root.removable.cd.svcd"
484 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_VIDEODVD "container.root.removable.dvd.video"
485 
486 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM "container.root.removable.filesystem"
487 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_HDD "container.root.removable.filesystem.hdd"
488 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_PENDRIVE "container.root.removable.filesystem.pendrive"
489 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_MEMORYCARD "container.root.removable.filesystem.memorycard"
490 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_MOBILE "container.root.removable.filesystem.mobile"
491 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_CD "container.root.removable.filesystem.cdrom"
492 #define GAVL_META_MEDIA_CLASS_ROOT_REMOVABLE_FILESYSTEM_DVD "container.root.removable.filesystem.dvd"
493 
494 /* Remote media server */
495 #define GAVL_META_MEDIA_CLASS_ROOT_SERVER "container.root.server"
496 
497 /* GUI States */
498 
499 // Indicate, that an error occurrent during loading of a track
500 #define GAVL_META_GUI_ERROR "GUIError"
501 
502 // Track is selected in a GUI
503 #define GAVL_META_GUI_SELECTED "GUISelected"
504 
505 // Track is current in a GUI
506 #define GAVL_META_GUI_CURRENT "GUICurrent"
507 
512 #endif // GAVL_METATAGS_H_INCLUDED