PraghaMusicobject * pragha_musicobject_new_from_mtp_track (LIBMTP_track_t *track) { PraghaMusicEnum *enum_map = NULL; PraghaMusicobject *mobj = NULL; gchar *mime_type = NULL, *uri = NULL; /* First chech mime_type */ if (track->filetype == LIBMTP_FILETYPE_FLAC) mime_type = g_strdup ("audio/x-flac"); else if (track->filetype == LIBMTP_FILETYPE_MP3) mime_type = g_strdup ("audio/mpeg"); else if (track->filetype == LIBMTP_FILETYPE_OGG) mime_type = g_strdup ("audio/ogg"); else if (track->filetype == LIBMTP_FILETYPE_WAV) mime_type = g_strdup ("audio/x-wav"); else if (track->filetype == LIBMTP_FILETYPE_WMA) mime_type = g_strdup ("audio/x-ms-wma"); else if (track->filetype == LIBMTP_FILETYPE_MP4) mime_type = g_strdup ("audio/x-m4a"); else return NULL; uri = g_strdup_printf ("mtp://%i-%s", track->item_id, track->filename); CDEBUG(DBG_MOBJ, "Creating new musicobject to MTP: %s", uri); enum_map = pragha_music_enum_get(); mobj = g_object_new (PRAGHA_TYPE_MUSICOBJECT, "file", uri, "mime-type", mime_type, "source", pragha_music_enum_map_get(enum_map, "MTP"), NULL); g_object_unref (enum_map); if (track->title) pragha_musicobject_set_title (mobj, track->title); if (track->artist) pragha_musicobject_set_artist (mobj, track->artist); if (track->album) pragha_musicobject_set_album (mobj, track->album); if (track->genre) pragha_musicobject_set_genre (mobj, track->genre); if (track->duration) pragha_musicobject_set_length (mobj, track->duration/1000); if (track->tracknumber) pragha_musicobject_set_track_no (mobj, track->tracknumber); if (track->samplerate) pragha_musicobject_set_samplerate (mobj, track->samplerate); if (track->nochannels) pragha_musicobject_set_channels (mobj, track->nochannels); g_free (uri); g_free (mime_type); return mobj; }
void pragha_toolbar_update_playback_progress(PraghaBackend *backend, gpointer user_data) { gint length = 0, newsec = 0; PraghaMusicobject *mobj = NULL; PraghaToolbar *toolbar = user_data; newsec = GST_TIME_AS_SECONDS(pragha_backend_get_current_position(backend)); if (newsec > 0) { mobj = pragha_backend_get_musicobject (backend); length = pragha_musicobject_get_length (mobj); if (length > 0) { pragha_toolbar_update_progress (toolbar, length, newsec); } else { gint nlength = GST_TIME_AS_SECONDS(pragha_backend_get_current_length(backend)); pragha_musicobject_set_length (mobj, nlength); } } }