Commit 034ed2f4 authored by Laurent Aimar's avatar Laurent Aimar

* 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 ...
parent 5a1f0564
......@@ -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 <fenrir@via.ecp.fr>
*
......@@ -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 */
};
......
/*****************************************************************************
* 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 <fenrir@via.ecp.fr>
*
* 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment