gavl
metadata.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_METADATA_H_INCLUDED
23#define GAVL_METADATA_H_INCLUDED
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29#include <inttypes.h>
30
31#include <gavl/gavldefs.h>
32
56#define GAVL_METADATA_DATE_STRING_LEN 11
57
61#define GAVL_METADATA_DATE_TIME_STRING_LEN 20
62
66typedef struct
67 {
68 char * key;
69 char * val;
71
82
87GAVL_PUBLIC void
89
98GAVL_PUBLIC void
100
109GAVL_PUBLIC void
111 const char * key,
112 const char * val);
113
123GAVL_PUBLIC void
125 const char * key,
126 char * val);
127
134GAVL_PUBLIC
135const char * gavl_metadata_get(const gavl_metadata_t * m,
136 const char * key);
137
144GAVL_PUBLIC
146 const char * key);
147
154GAVL_PUBLIC void
156 const char * key,
157 int val);
158
165GAVL_PUBLIC void
167 const char * key,
168 int64_t val);
169
177GAVL_PUBLIC
179 const char * key, int * ret);
180
188GAVL_PUBLIC
190 const char * key, int64_t * ret);
191
199GAVL_PUBLIC
201 const char * key, int * ret);
202
210GAVL_PUBLIC
212 const char * key, int64_t * ret);
213
214
215
224GAVL_PUBLIC void
226 const char * key,
227 int year,
228 int month,
229 int day);
230
240GAVL_PUBLIC int
242 const char * key,
243 int * year,
244 int * month,
245 int * day);
246
258GAVL_PUBLIC void
260 const char * key,
261 int year,
262 int month,
263 int day,
264 int hour,
265 int minute,
266 int second);
267
280GAVL_PUBLIC int
282 const char * key,
283 int * year,
284 int * month,
285 int * day,
286 int * hour,
287 int * minute,
288 int * second);
289
300GAVL_PUBLIC void
302 int month,
303 int day, char * ret);
304
318GAVL_PUBLIC void
320 int month,
321 int day,
322 int hour,
323 int minute,
324 int second,
325 char * ret);
326
337GAVL_PUBLIC
339 const gavl_metadata_t * src1,
340 const gavl_metadata_t * src2);
341
350GAVL_PUBLIC
352 const gavl_metadata_t * src);
353
361GAVL_PUBLIC void
363 const gavl_metadata_t * src);
364
370GAVL_PUBLIC void
371gavl_metadata_dump(const gavl_metadata_t * m, int indent);
372
379GAVL_PUBLIC int
381 const gavl_metadata_t * m2);
382
392GAVL_PUBLIC void
394
401GAVL_PUBLIC void
403
411GAVL_PUBLIC void
413
419GAVL_PUBLIC int
421
422
423
428#ifdef __cplusplus
429}
430#endif
431
432#endif // GAVL_METADATA_H_INCLUDED
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 int gavl_metadata_do_swap_endian(const gavl_metadata_t *m)
Check if endianess needs to be swapped.
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 void gavl_metadata_set_int(gavl_metadata_t *m, const char *key, int val)
Set an integer tag.
GAVL_PUBLIC void gavl_metadata_dump(const gavl_metadata_t *m, int indent)
Dump metadata structure to stderr.
GAVL_PUBLIC const char * gavl_metadata_get(const gavl_metadata_t *m, const char *key)
Get the value of a tag.
GAVL_PUBLIC void gavl_metadata_set_nocpy(gavl_metadata_t *m, const char *key, char *val)
Set a tag.
GAVL_PUBLIC void gavl_metadata_merge2(gavl_metadata_t *dst, const gavl_metadata_t *src)
Merge two metadata structures.
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_init(gavl_metadata_t *m)
Initialize structre.
GAVL_PUBLIC int gavl_metadata_get_long(const gavl_metadata_t *m, const char *key, int64_t *ret)
Get a long tag.
GAVL_PUBLIC void gavl_metadata_copy(gavl_metadata_t *dst, const gavl_metadata_t *src)
Copy metadata structure.
GAVL_PUBLIC int gavl_metadata_get_int(const gavl_metadata_t *m, const char *key, int *ret)
Get an integer tag.
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_endian(gavl_metadata_t *m)
Set the enddian tag.
GAVL_PUBLIC void gavl_metadata_set(gavl_metadata_t *m, const char *key, const char *val)
Set a tag.
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_set_long(gavl_metadata_t *m, const char *key, int64_t val)
Set a long tag.
GAVL_PUBLIC void gavl_metadata_free(gavl_metadata_t *m)
Free all metadata tags.
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_merge(gavl_metadata_t *dst, const gavl_metadata_t *src1, const gavl_metadata_t *src2)
Merge two metadata structures.
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_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 void gavl_metadata_date_to_string(int year, int month, int day, char *ret)
Format a date string.
GAVL_PUBLIC void gavl_metadata_delete_implicit_fields(gavl_metadata_t *m)
Clear fields, which are obtained implicitly.
GAVL_PUBLIC const char * gavl_metadata_get_i(const gavl_metadata_t *m, const char *key)
Get the value of a tag ignrong case.
Single metadata structure.
Definition metadata.h:77
int tags_alloc
Number of allocated tags (never touch this)
Definition metadata.h:79
gavl_metadata_tag_t * tags
Array of tags.
Definition metadata.h:78
int num_tags
Number of valid tags.
Definition metadata.h:80
Single metadata tag.
Definition metadata.h:67
char * val
Value.
Definition metadata.h:69
char * key
Key.
Definition metadata.h:68