From 034ed2f401bcb597820d78a7a1cac14368a1c7eb Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Sat, 31 Jan 2004 05:24:55 +0000 Subject: [PATCH] * vlc_meta.h: added a vlc_meta_t struct and some functions (for now, it will only be used by demuxers). * ninput.h: added DEMUX_GET_META, this way demuxer won't have to touch playlist and input_InfoAdd and ... --- include/ninput.h | 5 +- include/vlc_meta.h | 114 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 include/vlc_meta.h diff --git a/include/ninput.h b/include/ninput.h index 6b07c8f53b..3344d99cda 100644 --- a/include/ninput.h +++ b/include/ninput.h @@ -2,7 +2,7 @@ * ninput.h ***************************************************************************** * Copyright (C) 1999-2001 VideoLAN - * $Id: ninput.h,v 1.26 2004/01/26 20:48:09 fenrir Exp $ + * $Id: ninput.h,v 1.27 2004/01/31 05:24:55 fenrir Exp $ * * Authors: Laurent Aimar * @@ -279,7 +279,8 @@ enum demux_query_e DEMUX_GET_LENGTH, /* arg1= int64_t * res=can fail */ - DEMUX_GET_FPS /* arg1= float * res=can fail */ + DEMUX_GET_FPS, /* arg1= float * res=can fail */ + DEMUX_GET_META /* arg1= vlc_meta_t ** res=can fail */ }; diff --git a/include/vlc_meta.h b/include/vlc_meta.h new file mode 100644 index 0000000000..139c39f274 --- /dev/null +++ b/include/vlc_meta.h @@ -0,0 +1,114 @@ +/***************************************************************************** + * vlc_meta.h + ***************************************************************************** + * Copyright (C) 2004 VideoLAN + * $Id: vlc_meta.h,v 1.1 2004/01/31 05:24:55 fenrir Exp $ + * + * Authors: Laurent Aimar + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + *****************************************************************************/ + +#ifndef _VLC_META_H +#define _VLC_META_H 1 + +/* VLC meta name */ +#define VLC_META_TITLE N_("Title") +#define VLC_META_AUTHOR N_("Author") +#define VLC_META_ARTIST N_("Artist") +#define VLC_META_GENRE N_("Genre") +#define VLC_META_COPYRIGHT N_("Copyright") +#define VLC_META_DESCRIPTION N_("Description") +#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_LANGUAGE N_("Language") +#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 */ + int i_meta; + char **name; + char **value; + + /* track meta informations */ + 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 ) ); + + m->i_meta = 0; + m->name = NULL; + m->value = NULL; + + m->i_track= 0; + m->track = NULL; + + return m; +} +static inline void vlc_meta_Delete( vlc_meta_t *m ) +{ + int i; + for( i = 0; i < m->i_meta; i++ ) + { + free( m->name[i] ); + free( m->value[i] ); + } + if( m->name ) free( m->name ); + if( m->value ) free( m->value ); + + for( i = 0; i < m->i_track; i++ ) + { + vlc_meta_Delete( m->track[i] ); + } + if( m->track ) free( m->track ); + free( m ); +} +static inline void vlc_meta_Add( vlc_meta_t *m, char *name, char *value ) +{ + int i_meta = m->i_meta; + + name = strdup( name ); + value = strdup( value ); + + TAB_APPEND( m->i_meta, m->name, name ); + TAB_APPEND( i_meta, m->value,value ); +} + +static inline vlc_meta_t *vlc_meta_Duplicate( vlc_meta_t *src ) +{ + vlc_meta_t *dst = vlc_meta_New(); + int i; + for( i = 0; i < src->i_meta; i++ ) + { + vlc_meta_Add( dst, src->name[i], src->value[i] ); + } + 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 ); + } + return dst; +} + +#endif + -- 2.39.2