gavl
Metadata

Metadata support. More...

Topics

 Defined metadata keys

Data Structures

 Single metadata tag. More...
 Single metadata structure. More...

Macros

#define GAVL_METADATA_DATE_STRING_LEN   11
#define GAVL_METADATA_DATE_TIME_STRING_LEN   20

Functions

GAVL_PUBLIC void gavl_metadata_free (gavl_metadata_t *m)
 Free all metadata tags.
GAVL_PUBLIC void gavl_metadata_init (gavl_metadata_t *m)
 Initialize structre.
GAVL_PUBLIC void gavl_metadata_set (gavl_metadata_t *m, const char *key, const char *val)
 Set a tag.
GAVL_PUBLIC void gavl_metadata_set_nocpy (gavl_metadata_t *m, const char *key, char *val)
 Set a tag.
GAVL_PUBLIC const char * gavl_metadata_get (const gavl_metadata_t *m, const char *key)
 Get the value of a tag.
GAVL_PUBLIC const char * gavl_metadata_get_i (const gavl_metadata_t *m, const char *key)
 Get the value of a tag ignrong case.
GAVL_PUBLIC void gavl_metadata_set_int (gavl_metadata_t *m, const char *key, int val)
 Set an integer tag.
GAVL_PUBLIC void gavl_metadata_set_long (gavl_metadata_t *m, const char *key, int64_t val)
 Set a long tag.
GAVL_PUBLIC int gavl_metadata_get_int (const gavl_metadata_t *m, const char *key, int *ret)
 Get an integer tag.
GAVL_PUBLIC int gavl_metadata_get_long (const gavl_metadata_t *m, const char *key, int64_t *ret)
 Get a long tag.
GAVL_PUBLIC int gavl_metadata_get_int_i (const gavl_metadata_t *m, const char *key, int *ret)
 Get an integer tag ignoring case.
GAVL_PUBLIC int gavl_metadata_get_long_i (const gavl_metadata_t *m, const char *key, int64_t *ret)
 Get a long tag ignoring case.
GAVL_PUBLIC void gavl_metadata_set_date (gavl_metadata_t *m, const char *key, int year, int month, int day)
 Set a date tag.
GAVL_PUBLIC int gavl_metadata_get_date (gavl_metadata_t *m, const char *key, int *year, int *month, int *day)
 Get a date tag.
GAVL_PUBLIC void gavl_metadata_set_date_time (gavl_metadata_t *m, const char *key, int year, int month, int day, int hour, int minute, int second)
 Set a date/time tag.
GAVL_PUBLIC int gavl_metadata_get_date_time (gavl_metadata_t *m, const char *key, int *year, int *month, int *day, int *hour, int *minute, int *second)
 Get a date/time tag.
GAVL_PUBLIC void gavl_metadata_date_to_string (int year, int month, int day, char *ret)
 Format a date string.
GAVL_PUBLIC void gavl_metadata_date_time_to_string (int year, int month, int day, int hour, int minute, int second, char *ret)
 Format a date string.
GAVL_PUBLIC void gavl_metadata_merge (gavl_metadata_t *dst, const gavl_metadata_t *src1, const gavl_metadata_t *src2)
 Merge two metadata structures.
GAVL_PUBLIC void gavl_metadata_merge2 (gavl_metadata_t *dst, const gavl_metadata_t *src)
 Merge two metadata structures.
GAVL_PUBLIC void gavl_metadata_copy (gavl_metadata_t *dst, const gavl_metadata_t *src)
 Copy metadata structure.
GAVL_PUBLIC void gavl_metadata_dump (const gavl_metadata_t *m, int indent)
 Dump metadata structure to stderr.
GAVL_PUBLIC int gavl_metadata_equal (const gavl_metadata_t *m1, const gavl_metadata_t *m2)
 Check if 2 metadata structures are equal.
GAVL_PUBLIC void gavl_metadata_delete_compression_fields (gavl_metadata_t *m)
 Clear fields, which are related to the compression.
GAVL_PUBLIC void gavl_metadata_delete_implicit_fields (gavl_metadata_t *m)
 Clear fields, which are obtained implicitly.
GAVL_PUBLIC void gavl_metadata_set_endian (gavl_metadata_t *m)
 Set the enddian tag.
GAVL_PUBLIC int gavl_metadata_do_swap_endian (const gavl_metadata_t *m)
 Check if endianess needs to be swapped.

Detailed Description

Metadata support.

This is a simple dictionary structure, which is used my gmerlin applications and libraries to associate metadata with a media file or a single media stream.

Metadata are defined as all data, which are not directly related to the decoding process, but might be of interest for the user.

The tag types are completely generic so applications can define their own tags. For compatibility it is, however recommended to use the tags defined in metatags.h

Since 1.4.0

Macro Definition Documentation

◆ GAVL_METADATA_DATE_STRING_LEN

#define GAVL_METADATA_DATE_STRING_LEN   11

Length of a date string of the format YYYY-MM-DD

◆ GAVL_METADATA_DATE_TIME_STRING_LEN

#define GAVL_METADATA_DATE_TIME_STRING_LEN   20

Length of a date/time string of the format YYYY-MM-DD HH:MM:SS

Function Documentation

◆ gavl_metadata_free()

GAVL_PUBLIC void gavl_metadata_free ( gavl_metadata_t * m)

Free all metadata tags.

  • m A metadata structure

References gavl_metadata_free().

Referenced by gavl_metadata_free().

◆ gavl_metadata_init()

GAVL_PUBLIC void gavl_metadata_init ( gavl_metadata_t * m)

Initialize structre.

  • m A metadata structure

Use this if you define a gavl_metadata_t structure in unintialized memory (e.g. on the stack) before using it.

References gavl_metadata_init().

Referenced by gavl_metadata_init().

◆ gavl_metadata_set()

GAVL_PUBLIC void gavl_metadata_set ( gavl_metadata_t * m,
const char * key,
const char * val )

Set a tag.

  • m A metadata structure
  • key Key
  • val Value

Set a metadata tag. The value is copied.

References gavl_metadata_set().

Referenced by gavl_metadata_set().

◆ gavl_metadata_set_nocpy()

GAVL_PUBLIC void gavl_metadata_set_nocpy ( gavl_metadata_t * m,
const char * key,
char * val )

Set a tag.

  • m A metadata structure
  • key Key
  • val Value

Like gavl_metadata_set except that the value is not copied.

References gavl_metadata_set_nocpy().

Referenced by gavl_metadata_set_nocpy().

◆ gavl_metadata_get()

GAVL_PUBLIC const char * gavl_metadata_get ( const gavl_metadata_t * m,
const char * key )

Get the value of a tag.

  • m A metadata structure
  • key Key
    Returns
    Value of the tag or NULL if the tag doesn't exist

References gavl_metadata_get().

Referenced by gavl_metadata_get().

◆ gavl_metadata_get_i()

GAVL_PUBLIC const char * gavl_metadata_get_i ( const gavl_metadata_t * m,
const char * key )

Get the value of a tag ignrong case.

  • m A metadata structure
  • key Key
    Returns
    Value of the tag or NULL if the tag doesn't exist

References gavl_metadata_get_i().

Referenced by gavl_metadata_get_i().

◆ gavl_metadata_set_int()

GAVL_PUBLIC void gavl_metadata_set_int ( gavl_metadata_t * m,
const char * key,
int val )

Set an integer tag.

  • m A metadata structure
  • key Key
  • val Value

References gavl_metadata_set_int().

Referenced by gavl_metadata_set_int().

◆ gavl_metadata_set_long()

GAVL_PUBLIC void gavl_metadata_set_long ( gavl_metadata_t * m,
const char * key,
int64_t val )

Set a long tag.

  • m A metadata structure
  • key Key
  • val Value

References gavl_metadata_set_long().

Referenced by gavl_metadata_set_long().

◆ gavl_metadata_get_int()

GAVL_PUBLIC int gavl_metadata_get_int ( const gavl_metadata_t * m,
const char * key,
int * ret )

Get an integer tag.

  • m A metadata structure
  • key Key
  • ret Returns the value
    Returns
    1 if ret contains a valid tag, 0 if the tag doesn't exist or is not numeric

References gavl_metadata_get_int().

Referenced by gavl_metadata_get_int().

◆ gavl_metadata_get_long()

GAVL_PUBLIC int gavl_metadata_get_long ( const gavl_metadata_t * m,
const char * key,
int64_t * ret )

Get a long tag.

  • m A metadata structure
  • key Key
  • ret Returns the value
    Returns
    1 if ret contains a valid tag, 0 if the tag doesn't exist or is not numeric

References gavl_metadata_get_long().

Referenced by gavl_metadata_get_long().

◆ gavl_metadata_get_int_i()

GAVL_PUBLIC int gavl_metadata_get_int_i ( const gavl_metadata_t * m,
const char * key,
int * ret )

Get an integer tag ignoring case.

  • m A metadata structure
  • key Key
  • ret Returns the value
    Returns
    1 if ret contains a valid tag, 0 if the tag doesn't exist or is not numeric

References gavl_metadata_get_int_i().

Referenced by gavl_metadata_get_int_i().

◆ gavl_metadata_get_long_i()

GAVL_PUBLIC int gavl_metadata_get_long_i ( const gavl_metadata_t * m,
const char * key,
int64_t * ret )

Get a long tag ignoring case.

  • m A metadata structure
  • key Key
  • ret Returns the value
    Returns
    1 if ret contains a valid tag, 0 if the tag doesn't exist or is not numeric

References gavl_metadata_get_long_i().

Referenced by gavl_metadata_get_long_i().

◆ gavl_metadata_set_date()

GAVL_PUBLIC void gavl_metadata_set_date ( gavl_metadata_t * m,
const char * key,
int year,
int month,
int day )

Set a date tag.

  • m A metadata structure
  • key Key
  • year Year
  • month Month
  • day Day

References gavl_metadata_set_date().

Referenced by gavl_metadata_set_date().

◆ gavl_metadata_get_date()

GAVL_PUBLIC int gavl_metadata_get_date ( gavl_metadata_t * m,
const char * key,
int * year,
int * month,
int * day )

Get a date tag.

  • m A metadata structure
  • key Key
  • year Returns year
  • month Returns month
  • day Returns day
    Returns
    1 if a valid date was returned, 0 else

References gavl_metadata_get_date().

Referenced by gavl_metadata_get_date().

◆ gavl_metadata_set_date_time()

GAVL_PUBLIC void gavl_metadata_set_date_time ( gavl_metadata_t * m,
const char * key,
int year,
int month,
int day,
int hour,
int minute,
int second )

Set a date/time tag.

  • m A metadata structure
  • key Key
  • year Year
  • month Month
  • day Day
  • hour Hour
  • minute Minute
  • second Second

References gavl_metadata_set_date_time().

Referenced by gavl_metadata_set_date_time().

◆ gavl_metadata_get_date_time()

GAVL_PUBLIC int gavl_metadata_get_date_time ( gavl_metadata_t * m,
const char * key,
int * year,
int * month,
int * day,
int * hour,
int * minute,
int * second )

Get a date/time tag.

  • m A metadata structure
  • key Key
  • year Returns year
  • month Returns month
  • day Returns day
  • hour Returns hour
  • minute Returns minute
  • second Returns second
    Returns
    1 if a valid date/time was returned, 0 else

References gavl_metadata_get_date_time().

Referenced by gavl_metadata_get_date_time().

◆ gavl_metadata_date_to_string()

GAVL_PUBLIC void gavl_metadata_date_to_string ( int year,
int month,
int day,
char * ret )

Format a date string.

  • year Year
  • month Month
  • day Day
  • ret String to be formatted

The string needs to be at least GAVL_METADATA_DATE_STRING_LEN bytes long.

References gavl_metadata_date_to_string().

Referenced by gavl_metadata_date_to_string().

◆ gavl_metadata_date_time_to_string()

GAVL_PUBLIC void gavl_metadata_date_time_to_string ( int year,
int month,
int day,
int hour,
int minute,
int second,
char * ret )

Format a date string.

  • year Year
  • month Month
  • day Day
  • ret String to be formatted
  • hour Hour
  • minute Minute
  • second Second

The string needs to be at least GAVL_METADATA_DATE_TIME_STRING_LEN bytes long.

References gavl_metadata_date_time_to_string().

Referenced by gavl_metadata_date_time_to_string().

◆ gavl_metadata_merge()

GAVL_PUBLIC void gavl_metadata_merge ( gavl_metadata_t * dst,
const gavl_metadata_t * src1,
const gavl_metadata_t * src2 )

Merge two metadata structures.

  • dst Destination
  • src1 First source
  • src2 Second source

Copy all tags from src1 and src2 to dst. If a tag is available in src1 and src2, the one from src1 is taken.

References gavl_metadata_merge().

Referenced by gavl_metadata_merge().

◆ gavl_metadata_merge2()

GAVL_PUBLIC void gavl_metadata_merge2 ( gavl_metadata_t * dst,
const gavl_metadata_t * src )

Merge two metadata structures.

  • dst Destination
  • src Source

Copy tags from src to dst, which are not already contained in dst.

References gavl_metadata_merge2().

Referenced by gavl_metadata_merge2().

◆ gavl_metadata_copy()

GAVL_PUBLIC void gavl_metadata_copy ( gavl_metadata_t * dst,
const gavl_metadata_t * src )

Copy metadata structure.

  • dst Destination
  • src Source

Copy all tags from src to dst

References gavl_metadata_copy().

Referenced by gavl_metadata_copy().

◆ gavl_metadata_dump()

GAVL_PUBLIC void gavl_metadata_dump ( const gavl_metadata_t * m,
int indent )

Dump metadata structure to stderr.

  • m Metadata
  • indent Spaces to append to each line

References gavl_metadata_dump().

Referenced by gavl_metadata_dump().

◆ gavl_metadata_equal()

GAVL_PUBLIC int gavl_metadata_equal ( const gavl_metadata_t * m1,
const gavl_metadata_t * m2 )

Check if 2 metadata structures are equal.

  • m1 Metadata 1
  • m2 Metadata 2
    Returns
    1 if the 2 metadata structures are identical, 0 else

References gavl_metadata_equal().

Referenced by gavl_metadata_equal().

◆ gavl_metadata_delete_compression_fields()

GAVL_PUBLIC void gavl_metadata_delete_compression_fields ( gavl_metadata_t * m)

Clear fields, which are related to the compression.

  • m Metadata

This deletes fields, which are related to the compression of the stream (e.g. bitrate, codec etc.). Use this before transcoding the stream in another format to suppress bogus values in the output stream

References gavl_metadata_delete_compression_fields().

Referenced by gavl_metadata_delete_compression_fields().

◆ gavl_metadata_delete_implicit_fields()

GAVL_PUBLIC void gavl_metadata_delete_implicit_fields ( gavl_metadata_t * m)

Clear fields, which are obtained implicitly.

  • m Metadata

This deletes fields, which can implicitly obtainecd from the file

References gavl_metadata_delete_implicit_fields().

Referenced by gavl_metadata_delete_implicit_fields().

◆ gavl_metadata_set_endian()

GAVL_PUBLIC void gavl_metadata_set_endian ( gavl_metadata_t * m)

Set the enddian tag.

  • m Metadata

This sets the "Endian" field to 1 on big endian architectures 0 else

References gavl_metadata_set_endian().

Referenced by gavl_metadata_set_endian().

◆ gavl_metadata_do_swap_endian()

GAVL_PUBLIC int gavl_metadata_do_swap_endian ( const gavl_metadata_t * m)

Check if endianess needs to be swapped.

  • m Metadata
    Returns
    1 if the stream was generated on a machine with different endianess, 0 else.

References gavl_metadata_do_swap_endian().

Referenced by gavl_metadata_do_swap_endian().