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; }
static int GetInputMeta( input_item_t* p_input, DBusMessageIter *args ) { DBusMessageIter dict, dict_entry, variant; /* We need the track length to be expressed in milli-seconds * instead of µ-seconds */ dbus_int64_t i_length = ( input_item_GetDuration( p_input ) / 1000 ); const char* ppsz_meta_items[] = { "title", "artist", "genre", "copyright", "album", "tracknum", "description", "rating", "date", "setting", "url", "language", "nowplaying", "publisher", "encodedby", "arturl", "trackid", "status", "location", "length", "video-codec", "audio-codec", "video-bitrate", "audio-bitrate", "audio-samplerate" }; dbus_message_iter_open_container( args, DBUS_TYPE_ARRAY, "{sv}", &dict ); ADD_VLC_META_STRING( 0, Title ); ADD_VLC_META_STRING( 1, Artist ); ADD_VLC_META_STRING( 2, Genre ); ADD_VLC_META_STRING( 3, Copyright ); ADD_VLC_META_STRING( 4, Album ); ADD_VLC_META_STRING( 5, TrackNum ); ADD_VLC_META_STRING( 6, Description ); ADD_VLC_META_STRING( 7, Rating ); ADD_VLC_META_STRING( 8, Date ); ADD_VLC_META_STRING( 9, Setting ); ADD_VLC_META_STRING( 10, URL ); ADD_VLC_META_STRING( 11, Language ); ADD_VLC_META_STRING( 12, NowPlaying ); ADD_VLC_META_STRING( 13, Publisher ); ADD_VLC_META_STRING( 14, EncodedBy ); ADD_VLC_META_STRING( 15, ArtURL ); ADD_VLC_META_STRING( 16, TrackID ); vlc_mutex_lock( &p_input->lock ); if( p_input->p_meta ) ADD_META( 17, DBUS_TYPE_INT32, p_input->p_meta->i_status ); vlc_mutex_unlock( &p_input->lock ); ADD_VLC_META_STRING( 18, URI ); ADD_META( 19, DBUS_TYPE_INT64, i_length ); dbus_message_iter_close_container( args, &dict ); return VLC_SUCCESS; }
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; }