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;
}
Exemplo n.º 2
0
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);
		}
	}
}