/*****************************************************************************
* vlc_meta.h
*****************************************************************************
- * Copyright (C) 2004 VideoLAN
- * $Id: vlc_meta.h,v 1.1 2004/01/31 05:24:55 fenrir Exp $
+ * Copyright (C) 2004 the VideoLAN team
+ * $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
#define VLC_META_RATING N_("Rating")
#define VLC_META_DATE N_("Date")
#define VLC_META_SETTING N_("Setting")
-#define VLC_META_URL N_("Url")
+#define VLC_META_URL N_("URL")
#define VLC_META_LANGUAGE N_("Language")
+#define VLC_META_NOW_PLAYING N_("Now Playing")
+
+#define VLC_META_CDDB_ARTIST N_("CDDB Artist")
+#define VLC_META_CDDB_CATEGORY N_("CDDB Category")
+#define VLC_META_CDDB_DISCID N_("CDDB Disc ID")
+#define VLC_META_CDDB_EXT_DATA N_("CDDB Extended Data")
+#define VLC_META_CDDB_GENRE N_("CDDB Genre")
+#define VLC_META_CDDB_YEAR N_("CDDB Year")
+#define VLC_META_CDDB_TITLE N_("CDDB Title")
+
+#define VLC_META_CDTEXT_ARRANGER N_("CD-Text Arranger")
+#define VLC_META_CDTEXT_COMPOSER N_("CD-Text Composer")
+#define VLC_META_CDTEXT_DISCID N_("CD-Text Disc ID")
+#define VLC_META_CDTEXT_GENRE N_("CD-Text Genre")
+#define VLC_META_CDTEXT_MESSAGE N_("CD-Text Message")
+#define VLC_META_CDTEXT_SONGWRITER N_("CD-Text Songwriter")
+#define VLC_META_CDTEXT_PERFORMER N_("CD-Text Performer")
+#define VLC_META_CDTEXT_TITLE N_("CD-Text Title")
+
+#define VLC_META_ISO_APPLICATION_ID N_("ISO-9660 Application ID")
+#define VLC_META_ISO_PREPARER N_("ISO-9660 Preparer")
+#define VLC_META_ISO_PUBLISHER N_("ISO-9660 Publisher")
+#define VLC_META_ISO_VOLUME N_("ISO-9660 Volume")
+#define VLC_META_ISO_VOLUMESET N_("ISO-9660 Volume Set")
+
#define VLC_META_CODEC_NAME N_("Codec Name")
#define VLC_META_CODEC_DESCRIPTION N_("Codec Description")
-typedef struct vlc_meta_t vlc_meta_t;
struct vlc_meta_t
{
/* meta name/value pairs */
char **name;
char **value;
- /* track meta informations */
+ /* track meta information */
int i_track;
vlc_meta_t **track;
};
static inline vlc_meta_t *vlc_meta_New( void )
{
- vlc_meta_t *m = malloc( sizeof( vlc_meta_t ) );
+ vlc_meta_t *m = (vlc_meta_t*)malloc( sizeof( vlc_meta_t ) );
m->i_meta = 0;
m->name = NULL;
return m;
}
+
static inline void vlc_meta_Delete( vlc_meta_t *m )
{
int i;
if( m->track ) free( m->track );
free( m );
}
-static inline void vlc_meta_Add( vlc_meta_t *m, char *name, char *value )
+
+static inline void vlc_meta_Add( vlc_meta_t *m,
+ const char *name, const char *value )
{
- int i_meta = m->i_meta;
+ m->name = (char**)realloc( m->name, sizeof(char*) * ( m->i_meta + 1 ) );
+ m->name[m->i_meta] = strdup( name );
- name = strdup( name );
- value = strdup( value );
+ m->value = (char**)realloc( m->value, sizeof(char*) * ( m->i_meta + 1 ) );
+ m->value[m->i_meta] = strdup( value );
- TAB_APPEND( m->i_meta, m->name, name );
- TAB_APPEND( i_meta, m->value,value );
+ m->i_meta++;
}
static inline vlc_meta_t *vlc_meta_Duplicate( vlc_meta_t *src )
for( i = 0; i < src->i_track; i++ )
{
vlc_meta_t *tk = vlc_meta_Duplicate( src->track[i] );
- TAB_APPEND( dst->i_track, dst->track, tk );
+
+ dst->track = (vlc_meta_t**)realloc( dst->track, sizeof( vlc_meta_t* ) * (dst->i_track+1) );
+ dst->track[dst->i_track++] = tk;
}
return dst;
}
-#endif
+static inline void vlc_meta_Merge( vlc_meta_t *dst, vlc_meta_t *src )
+{
+ int i, j;
+ for( i = 0; i < src->i_meta; i++ )
+ {
+ /* Check if dst contains the entry */
+ for( j = 0; j < dst->i_meta; j++ )
+ {
+ if( !strcmp( src->name[i], dst->name[j] ) ) break;
+ }
+ if( j < dst->i_meta )
+ {
+ if( dst->value[j] ) free( dst->value[j] );
+ dst->value[j] = strdup( src->value[i] );
+ }
+ else vlc_meta_Add( dst, src->name[i], src->value[i] );
+ }
+}
+
+static inline char *vlc_meta_GetValue( vlc_meta_t *m, const char *name )
+{
+ int i;
+ for( i = 0; i < m->i_meta; i++ )
+ {
+ if( !strcmp( m->name[i], name ) )
+ {
+ char *value = NULL;
+ if( m->value[i] ) value = strdup( m->value[i] );
+ return value;
+ }
+ }
+ return NULL;
+}
+
+#endif