bool input_item_IsPreparsed( input_item_t *p_item ) { vlc_mutex_lock( &p_item->lock ); bool b_preparsed = p_item->p_meta ? ( vlc_meta_GetStatus(p_item->p_meta) & ITEM_PREPARSED ) != 0 : false; vlc_mutex_unlock( &p_item->lock ); return b_preparsed; }
bool input_item_IsArtFetched( input_item_t *p_item ) { vlc_mutex_lock( &p_item->lock ); bool b_fetched = p_item->p_meta ? ( vlc_meta_GetStatus(p_item->p_meta) & ITEM_ART_FETCHED ) != 0 : false; vlc_mutex_unlock( &p_item->lock ); return b_fetched; }
int GetInputMeta( input_item_t* p_input, DBusMessageIter *args ) { DBusMessageIter dict, dict_entry, variant; /** The duration of the track can be expressed in second, milli-seconds and µ-seconds */ dbus_int64_t i_mtime = input_item_GetDuration( p_input ); dbus_uint32_t i_time = i_mtime / 1000000; dbus_int64_t i_length = i_mtime / 1000; const char* ppsz_meta_items[] = { /* Official MPRIS metas */ "location", "title", "artist", "album", "tracknumber", "time", "mtime", "genre", "rating", "date", "arturl", "audio-bitrate", "audio-samplerate", "video-bitrate", /* VLC specifics metas */ "audio-codec", "copyright", "description", "encodedby", "language", "length", "nowplaying", "publisher", "setting", "status", "trackid", "url", "video-codec" }; dbus_message_iter_open_container( args, DBUS_TYPE_ARRAY, "{sv}", &dict ); ADD_VLC_META_STRING( 0, URI ); ADD_VLC_META_STRING( 1, Title ); ADD_VLC_META_STRING( 2, Artist ); ADD_VLC_META_STRING( 3, Album ); ADD_VLC_META_STRING( 4, TrackNum ); ADD_META( 5, DBUS_TYPE_UINT32, i_time ); ADD_META( 6, DBUS_TYPE_UINT32, i_mtime ); ADD_VLC_META_STRING( 7, Genre ); ADD_VLC_META_STRING( 8, Rating ); ADD_VLC_META_STRING( 9, Date ); ADD_VLC_META_STRING( 10, ArtURL ); ADD_VLC_META_STRING( 15, Copyright ); ADD_VLC_META_STRING( 16, Description ); ADD_VLC_META_STRING( 17, EncodedBy ); ADD_VLC_META_STRING( 18, Language ); ADD_META( 19, DBUS_TYPE_INT64, i_length ); ADD_VLC_META_STRING( 20, NowPlaying ); ADD_VLC_META_STRING( 21, Publisher ); ADD_VLC_META_STRING( 22, Setting ); ADD_VLC_META_STRING( 24, TrackID ); ADD_VLC_META_STRING( 25, URL ); vlc_mutex_lock( &p_input->lock ); if( p_input->p_meta ) { int i_status = vlc_meta_GetStatus( p_input->p_meta ); ADD_META( 23, DBUS_TYPE_INT32, i_status ); } vlc_mutex_unlock( &p_input->lock ); dbus_message_iter_close_container( args, &dict ); return VLC_SUCCESS; }
void input_item_SetArtNotFound( input_item_t *p_i, bool b_not_found ) { vlc_mutex_lock( &p_i->lock ); if( !p_i->p_meta ) p_i->p_meta = vlc_meta_New(); int status = vlc_meta_GetStatus(p_i->p_meta); if( b_not_found ) status |= ITEM_ART_NOTFOUND; else status &= ~ITEM_ART_NOTFOUND; vlc_meta_SetStatus(p_i->p_meta, status); vlc_mutex_unlock( &p_i->lock ); }
void input_item_SetArtFetched( input_item_t *p_i, bool b_art_fetched ) { vlc_mutex_lock( &p_i->lock ); if( !p_i->p_meta ) p_i->p_meta = vlc_meta_New(); int status = vlc_meta_GetStatus(p_i->p_meta); if( b_art_fetched ) status |= ITEM_ART_FETCHED; else status &= ~ITEM_ART_FETCHED; vlc_meta_SetStatus(p_i->p_meta, status); vlc_mutex_unlock( &p_i->lock ); }
int GetInputMeta( input_item_t* p_input, DBusMessageIter *args ) { DBusMessageIter dict, dict_entry, variant; /** The duration of the track can be expressed in second, milli-seconds and µ-seconds */ dbus_int64_t i_mtime = input_item_GetDuration( p_input ); dbus_uint32_t i_time = i_mtime / 1000000; dbus_int64_t i_length = i_mtime / 1000; char *psz_trackid; if( -1 == asprintf( &psz_trackid, MPRIS_TRACKID_FORMAT, p_input->i_id ) ) return VLC_ENOMEM; const char* ppsz_meta_items[] = { "mpris:trackid", "xesam:url", "xesam:title", "xesam:artist", "xesam:album", "xesam:tracknumber", "vlc:time", "mpris:length", "xesam:genre", "xesam:userRating", "xesam:contentCreated", "mpris:artUrl", "mb:trackId", "vlc:audio-bitrate", "vlc:audio-samplerate", "vlc:video-bitrate", "vlc:audio-codec", "vlc:copyright", "xesam:comment", "vlc:encodedby", "language", "vlc:length", "vlc:nowplaying", "vlc:publisher", "vlc:setting", "status", "vlc:url", "vlc:video-codec" }; dbus_message_iter_open_container( args, DBUS_TYPE_ARRAY, "{sv}", &dict ); ADD_META( 0, DBUS_TYPE_OBJECT_PATH, psz_trackid ); ADD_VLC_META_STRING( 1, URI ); ADD_VLC_META_STRING( 2, Title ); ADD_VLC_META_STRING( 3, Artist ); ADD_VLC_META_STRING( 4, Album ); ADD_VLC_META_STRING( 5, TrackNum ); ADD_META( 6, DBUS_TYPE_UINT32, i_time ); ADD_META( 7, DBUS_TYPE_INT64, i_mtime ); ADD_VLC_META_STRING( 8, Genre ); ADD_VLC_META_STRING( 9, Rating ); ADD_VLC_META_STRING( 10, Date ); ADD_VLC_META_STRING( 11, ArtURL ); ADD_VLC_META_STRING( 12, TrackID ); ADD_VLC_META_STRING( 17, Copyright ); ADD_VLC_META_STRING( 18, Description ); ADD_VLC_META_STRING( 19, EncodedBy ); ADD_VLC_META_STRING( 20, Language ); ADD_META( 21, DBUS_TYPE_INT64, i_length ); ADD_VLC_META_STRING( 22, NowPlaying ); ADD_VLC_META_STRING( 23, Publisher ); ADD_VLC_META_STRING( 24, Setting ); ADD_VLC_META_STRING( 25, URL ); free( psz_trackid ); vlc_mutex_lock( &p_input->lock ); if( p_input->p_meta ) { int i_status = vlc_meta_GetStatus( p_input->p_meta ); ADD_META( 23, DBUS_TYPE_INT32, i_status ); } vlc_mutex_unlock( &p_input->lock ); dbus_message_iter_close_container( args, &dict ); return VLC_SUCCESS; }