Browse Source

meta: add getter for meta value priority

* Add two getter function on the meta API, `vlc_meta_GetWithPriority`
   and `vlc_meta_GetExtraWithPriority`.
update/opus-1.6.1
Gabriel Lafond-Thenaille 2 years ago
committed by Steve Lhomme
parent
commit
979ebef029
  1. 7
      include/vlc_meta.h
  2. 24
      src/input/meta.c
  3. 4
      src/libvlccore.sym

7
include/vlc_meta.h

@ -81,7 +81,7 @@ struct vlc_meta_t;
VLC_API vlc_meta_t * vlc_meta_New( void ) VLC_USED;
VLC_API void vlc_meta_Delete( vlc_meta_t *m );
VLC_API void vlc_meta_SetWithPriority( vlc_meta_t *p_meta, vlc_meta_type_t meta_type, const char *psz_val, vlc_meta_priority_t priority );
VLC_API const char * vlc_meta_Get( const vlc_meta_t *p_meta, vlc_meta_type_t meta_type );
VLC_API const char *vlc_meta_GetWithPriority(const vlc_meta_t *p_meta, vlc_meta_type_t meta_type, vlc_meta_priority_t *restrict priority);
/**
* set the meta extra
@ -93,7 +93,7 @@ VLC_API const char * vlc_meta_Get( const vlc_meta_t *p_meta, vlc_meta_type_t met
* \param priority metadata priority (in terms of vlc_meta_priority_t)
*/
VLC_API void vlc_meta_SetExtraWithPriority( vlc_meta_t *m, const char *psz_name, const char *psz_value, vlc_meta_priority_t priority );
VLC_API const char * vlc_meta_GetExtra( const vlc_meta_t *m, const char *psz_name );
VLC_API const char *vlc_meta_GetExtraWithPriority(const vlc_meta_t *m, const char *name, vlc_meta_priority_t *priority);
VLC_API unsigned vlc_meta_GetExtraCount( const vlc_meta_t *m );
/**
@ -126,6 +126,9 @@ VLC_API int input_item_WriteMeta(vlc_object_t *, input_item_t *);
#define vlc_meta_Set( meta, meta_type, b ) vlc_meta_SetWithPriority( meta, meta_type, b, VLC_META_PRIORITY_BASIC )
#define vlc_meta_SetExtra( meta, psz_name, psz_value ) vlc_meta_SetExtraWithPriority( meta, psz_name, psz_value, VLC_META_PRIORITY_BASIC )
#define vlc_meta_Get(meta, meta_type) vlc_meta_GetWithPriority(meta, meta_type, NULL)
#define vlc_meta_GetExtra(meta, psz_name) vlc_meta_GetExtraWithPriority(meta, psz_name, NULL)
/* Setters for meta.
* Warning: Make sure to use the input_item meta setters (defined in vlc_input_item.h)
* instead of those one. */

24
src/input/meta.c

@ -158,9 +158,16 @@ void vlc_meta_SetWithPriority( vlc_meta_t *p_meta, vlc_meta_type_t meta_type, co
p_meta->meta[meta_type].priority = priority;
}
const char *vlc_meta_Get( const vlc_meta_t *p_meta, vlc_meta_type_t meta_type )
const char *vlc_meta_GetWithPriority(const vlc_meta_t *meta, vlc_meta_type_t meta_type, vlc_meta_priority_t *restrict priority)
{
return p_meta->meta[meta_type].value;
assert(meta != NULL);
assert(meta_type >= 0);
assert(meta_type < VLC_META_TYPE_COUNT);
if (priority != NULL) {
*priority = meta->meta[meta_type].priority;
}
return meta->meta[meta_type].value;
}
void vlc_meta_SetExtraWithPriority( vlc_meta_t *m, const char *psz_name, const char *psz_value, vlc_meta_priority_t priority )
@ -174,14 +181,21 @@ void vlc_meta_SetExtraWithPriority( vlc_meta_t *m, const char *psz_name, const c
vlc_meta_InsertExtra( m, psz_name, psz_value, priority );
}
const char * vlc_meta_GetExtra( const vlc_meta_t *m, const char *psz_name )
const char *vlc_meta_GetExtraWithPriority(const vlc_meta_t *m, const char *name, vlc_meta_priority_t *priority)
{
struct vlc_meta_value *meta_value = vlc_dictionary_value_for_key(&m->extra_tags, psz_name);
if( !meta_value )
assert(m != NULL);
assert(name != NULL);
struct vlc_meta_value *meta_value = vlc_dictionary_value_for_key(&m->extra_tags, name);
if(meta_value == NULL)
return NULL;
if (priority != NULL) {
*priority = meta_value->priority;
}
return meta_value->value;
}
unsigned vlc_meta_GetExtraCount( const vlc_meta_t *m )
{
return vlc_dictionary_keys_count(&m->extra_tags);

4
src/libvlccore.sym

@ -680,8 +680,8 @@ vlc_list_children
vlc_meta_SetExtraWithPriority
vlc_meta_CopyExtraNames
vlc_meta_Delete
vlc_meta_Get
vlc_meta_GetExtra
vlc_meta_GetWithPriority
vlc_meta_GetExtraWithPriority
vlc_meta_GetExtraCount
vlc_meta_GetStatus
vlc_meta_Merge

Loading…
Cancel
Save