00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef GAVL_METADATA_H_INCLUDED
00023 #define GAVL_METADATA_H_INCLUDED
00024
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028
00029 #include <inttypes.h>
00030
00031 #include <gavl/gavldefs.h>
00032
00056 #define GAVL_METADATA_DATE_STRING_LEN 11
00057
00061 #define GAVL_METADATA_DATE_TIME_STRING_LEN 20
00062
00066 typedef struct
00067 {
00068 char * key;
00069 char * val;
00070 } gavl_metadata_tag_t;
00071
00076 typedef struct
00077 {
00078 gavl_metadata_tag_t * tags;
00079 int tags_alloc;
00080 int num_tags;
00081 } gavl_metadata_t;
00082
00087 GAVL_PUBLIC void
00088 gavl_metadata_free(gavl_metadata_t * m);
00089
00098 GAVL_PUBLIC void
00099 gavl_metadata_init(gavl_metadata_t * m);
00100
00109 GAVL_PUBLIC void
00110 gavl_metadata_set(gavl_metadata_t * m,
00111 const char * key,
00112 const char * val);
00113
00123 GAVL_PUBLIC void
00124 gavl_metadata_set_nocpy(gavl_metadata_t * m,
00125 const char * key,
00126 char * val);
00127
00134 GAVL_PUBLIC
00135 const char * gavl_metadata_get(const gavl_metadata_t * m,
00136 const char * key);
00137
00144 GAVL_PUBLIC
00145 const char * gavl_metadata_get_i(const gavl_metadata_t * m,
00146 const char * key);
00147
00154 GAVL_PUBLIC void
00155 gavl_metadata_set_int(gavl_metadata_t * m,
00156 const char * key,
00157 int val);
00158
00165 GAVL_PUBLIC void
00166 gavl_metadata_set_long(gavl_metadata_t * m,
00167 const char * key,
00168 int64_t val);
00169
00177 GAVL_PUBLIC
00178 int gavl_metadata_get_int(const gavl_metadata_t * m,
00179 const char * key, int * ret);
00180
00188 GAVL_PUBLIC
00189 int gavl_metadata_get_long(const gavl_metadata_t * m,
00190 const char * key, int64_t * ret);
00191
00199 GAVL_PUBLIC
00200 int gavl_metadata_get_int_i(const gavl_metadata_t * m,
00201 const char * key, int * ret);
00202
00210 GAVL_PUBLIC
00211 int gavl_metadata_get_long_i(const gavl_metadata_t * m,
00212 const char * key, int64_t * ret);
00213
00214
00215
00224 GAVL_PUBLIC void
00225 gavl_metadata_set_date(gavl_metadata_t * m,
00226 const char * key,
00227 int year,
00228 int month,
00229 int day);
00230
00240 GAVL_PUBLIC int
00241 gavl_metadata_get_date(gavl_metadata_t * m,
00242 const char * key,
00243 int * year,
00244 int * month,
00245 int * day);
00246
00258 GAVL_PUBLIC void
00259 gavl_metadata_set_date_time(gavl_metadata_t * m,
00260 const char * key,
00261 int year,
00262 int month,
00263 int day,
00264 int hour,
00265 int minute,
00266 int second);
00267
00280 GAVL_PUBLIC int
00281 gavl_metadata_get_date_time(gavl_metadata_t * m,
00282 const char * key,
00283 int * year,
00284 int * month,
00285 int * day,
00286 int * hour,
00287 int * minute,
00288 int * second);
00289
00300 GAVL_PUBLIC void
00301 gavl_metadata_date_to_string(int year,
00302 int month,
00303 int day, char * ret);
00304
00318 GAVL_PUBLIC void
00319 gavl_metadata_date_time_to_string(int year,
00320 int month,
00321 int day,
00322 int hour,
00323 int minute,
00324 int second,
00325 char * ret);
00326
00337 GAVL_PUBLIC
00338 void gavl_metadata_merge(gavl_metadata_t * dst,
00339 const gavl_metadata_t * src1,
00340 const gavl_metadata_t * src2);
00341
00350 GAVL_PUBLIC
00351 void gavl_metadata_merge2(gavl_metadata_t * dst,
00352 const gavl_metadata_t * src);
00353
00361 GAVL_PUBLIC void
00362 gavl_metadata_copy(gavl_metadata_t * dst,
00363 const gavl_metadata_t * src);
00364
00370 GAVL_PUBLIC void
00371 gavl_metadata_dump(const gavl_metadata_t * m, int indent);
00372
00379 GAVL_PUBLIC int
00380 gavl_metadata_equal(const gavl_metadata_t * m1,
00381 const gavl_metadata_t * m2);
00382
00392 GAVL_PUBLIC void
00393 gavl_metadata_delete_compression_fields(gavl_metadata_t * m);
00394
00401 GAVL_PUBLIC void
00402 gavl_metadata_delete_implicit_fields(gavl_metadata_t * m);
00403
00411 GAVL_PUBLIC void
00412 gavl_metadata_set_endian(gavl_metadata_t * m);
00413
00419 GAVL_PUBLIC int
00420 gavl_metadata_do_swap_endian(const gavl_metadata_t * m);
00421
00422
00423
00428 #ifdef __cplusplus
00429 }
00430 #endif
00431
00432 #endif // GAVL_METADATA_H_INCLUDED