char *input_item_GetNowPlayingFb( input_item_t *p_item ) { char *psz_meta = input_item_GetMeta( p_item, vlc_meta_NowPlaying ); if( !psz_meta || strlen( psz_meta ) == 0 ) { free( psz_meta ); return input_item_GetMeta( p_item, vlc_meta_ESNowPlaying ); } return psz_meta; }
char *libvlc_media_get_meta( libvlc_media_t *p_md, libvlc_meta_t e_meta ) { char * psz_meta; assert( p_md ); /* XXX: locking */ preparse_if_needed( p_md ); psz_meta = input_item_GetMeta( p_md->p_input_item, libvlc_to_vlc_meta[e_meta] ); if( e_meta == libvlc_meta_ArtworkURL && !psz_meta && !p_md->has_asked_art ) { p_md->has_asked_art = true; playlist_AskForArtEnqueue( libvlc_priv(p_md->p_libvlc_instance->p_libvlc_int)->p_playlist, p_md->p_input_item ); } /* Should be integrated in core */ if( !psz_meta && e_meta == libvlc_meta_Title && p_md->p_input_item->psz_name ) { free( psz_meta ); return strdup( p_md->p_input_item->psz_name ); } return psz_meta; }
char *libvlc_media_get_meta( libvlc_media_t *p_md, libvlc_meta_t e_meta ) { char *psz_meta = input_item_GetMeta( p_md->p_input_item, libvlc_to_vlc_meta[e_meta] ); /* Should be integrated in core */ if( psz_meta == NULL && e_meta == libvlc_meta_Title && p_md->p_input_item->psz_name != NULL ) psz_meta = strdup( p_md->p_input_item->psz_name ); return psz_meta; }
/** * Compare two intems accoring to the given meta type * @param first: the first item * @param second: the second item * @param meta: the meta type to use to sort the items * @param b_integer: true if the meta are integers * @return -1, 0 or 1 like strcmp */ static inline int meta_sort( const playlist_item_t *first, const playlist_item_t *second, vlc_meta_type_t meta, bool b_integer ) { int i_ret; char *psz_first = input_item_GetMeta( first->p_input, meta ); char *psz_second = input_item_GetMeta( second->p_input, meta ); /* Nodes go first */ if( first->i_children == -1 && second->i_children >= 0 ) i_ret = 1; else if( first->i_children >= 0 && second->i_children == -1 ) i_ret = -1; /* Both are nodes, sort by name */ else if( first->i_children >= 0 && second->i_children >= 0 ) i_ret = meta_strcasecmp_title( first, second ); /* Both are items */ else if( !psz_first && psz_second ) i_ret = 1; else if( psz_first && !psz_second ) i_ret = -1; /* No meta, sort by name */ else if( !psz_first && !psz_second ) i_ret = meta_strcasecmp_title( first, second ); else { if( b_integer ) i_ret = atoi( psz_first ) - atoi( psz_second ); else i_ret = strcasecmp( psz_first, psz_second ); } free( psz_first ); free( psz_second ); return i_ret; }