gavl

metadata.h

00001 /*****************************************************************
00002  * gavl - a general purpose audio/video processing library
00003  *
00004  * Copyright (c) 2001 - 2012 Members of the Gmerlin project
00005  * gmerlin-general@lists.sourceforge.net
00006  * http://gmerlin.sourceforge.net
00007  *
00008  * This program is free software: you can redistribute it and/or modify
00009  * it under the terms of the GNU General Public License as published by
00010  * the Free Software Foundation, either version 2 of the License, or
00011  * (at your option) any later version.
00012  *
00013  * This program is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  * GNU General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU General Public License
00019  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
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