Exemplo n.º 1
0
static void on_end_of_track(sp_session *session)
{
    debug("callback: on end of track");
    audio_fifo_flush(&g_audiofifo);
    sp_session_player_play(session, 0);
    notify_main_thread(g_session);
    queue_go_next(g_session);
}
Exemplo n.º 2
0
/**
 * Notification that some other connection has started playing on this account.
 * Playback has been stopped.
 *
 * @sa sp_session_callbacks#play_token_lost
 */
static void play_token_lost(sp_session *sess)
{
	audio_fifo_flush(&g_audiofifo);

	if (g_currenttrack != NULL) {
		sp_session_player_unload(g_sess);
		g_currenttrack = NULL;
	}
}
Exemplo n.º 3
0
Arquivo: main.c Projeto: delrtye/Spot
static void on_end_of_track(sp_session *session)
{
	debug("callback: on_end_of_track");
	audio_fifo_flush(&g_audiofifo);
	sp_session_player_play(session, 0);
	sp_session_player_unload(session);
	printf("Done.\n\n");
	g_playing = 0;
}
Exemplo n.º 4
0
/**
 * A track has ended. Remove it from the playlist.
 *
 * Called from the main loop when the music_delivery() callback has set g_playback_done.
 */
static void track_ended(bool startNext) {
	printf("track_ended startNext=%d\n", startNext);
	int tracks = 0;
	if (g_currenttrack) {
		printf("track_ended: stopping current track.\n");
		g_currenttrack = NULL;
		sp_session_player_unload(g_sess);
		g_is_playing = 0;
	}
	audio_fifo_flush(&g_musicfifo);
	notify_main_thread(g_sess);
	audio_fifo_flush(&g_musicfifo);
	usleep(50000);
	if (startNext) {
		printf("track_ended: play next track.\n");
		try_jukebox_start();
		usleep(50000);
		notify_main_thread(g_sess);
				banner_track();
	}
}
Exemplo n.º 5
0
Spotify::Error Spotify::Session::play( Spotify::Track* track )
{
    m_playing = false;
    m_currentTrack = track;
    Spotify::Error error;

    // Clean up
    audio_fifo_flush(&m_audiofifo);
    sp_session_player_unload( m_session );

    // Disregard tracks that are not available:
    if( !track->isAvailable() )
    {
        qDebug() << "ERROR: Asked to play back a unavailable track..";
        return Spotify::Error( SP_ERROR_TRACK_NOT_PLAYABLE );
    }

    // Load track:
    error = load( track );
    if( error.isError() )
    {
        qDebug() << "ERROR: Could not load track: " << error.toString();
        return error;
    }

    // Disregard unloaded og unavailable tracks:
    if( !track->isLoaded() )
    {
        qDebug() << "ERROR: Asked to play back a unloaded track..";
        return Spotify::Error( SP_ERROR_RESOURCE_NOT_LOADED );
    }

    // Play track:
    error = sp_session_player_play( m_session, true );
    if( !error.isError() )
    {
        m_trackPos = 0;
        m_playing = true;
    }
    else
    {
        qDebug() << "ERROR: Could not play track: " << error.toString();
        return error;
    }
    return Spotify::Error( SP_ERROR_OK );
}
Exemplo n.º 6
0
void end_of_track( sp_session *session )
{
    TRACE_2( PLAYERMANAGER , "end_of_track().");

    TRACE_3( PLAYERMANAGER , "End of track...");

//    LOCK_MUTEX( PLAYERMANAGER , &mutexSession );

    TRACE_3( PLAYERMANAGER , "Removing the track which have been played.");

    sp_track_release( currentTrack );

//    UNLOCK_MUTEX( PLAYERMANAGER , &mutexSession );

//    if( hasNextTrack() == TRUE )
//    {
//        TRACE_1( PLAYERMANAGER , "Load next music !");

//        playMusic( session , "" , currentStreamName );
//    }
    if( nextTrackInStream( currentStreamName ) == PC_SUCCESS )
    {
        TRACE_1( PLAYERMANAGER , "Load next music !");

    }
    else
    {
        TRACE_WARNING( PLAYERMANAGER , "No more music in the mainplaylist");

        audio_fifo_flush( &g_audiofifo );

        LOCK_MUTEX( PLAYERMANAGER , &mutexSession );

        sp_session_player_play( session , 0 );
        sp_session_player_unload( session );

        UNLOCK_MUTEX( PLAYERMANAGER , &mutexSession );

        playing = FALSE;
    }



}
Exemplo n.º 7
0
/**
 * Called on various events to start playback if it hasn't been started already.
 *
 * The function simply starts playing the first track of the playlist.
 */
static void try_jukebox_start(void)
{
	sp_track *t;

	if (!g_jukeboxlist)
		return;

	if (!sp_playlist_num_tracks(g_jukeboxlist)) {
		fprintf(stderr, "jukebox: No tracks in playlist. Waiting\n");
		return;
	}

	if (sp_playlist_num_tracks(g_jukeboxlist) < g_track_index) {
		fprintf(stderr, "jukebox: No more tracks in playlist. Waiting\n");
		return;
	}

	t = sp_playlist_track(g_jukeboxlist, g_track_index);

	if (g_currenttrack && t != g_currenttrack) {
		/* Someone changed the current track */
		audio_fifo_flush(&g_audiofifo);
		sp_session_player_unload(g_sess);
		g_currenttrack = NULL;
	}

	if (!t)
		return;

	if (sp_track_error(t) != SP_ERROR_OK)
		return;

	if (g_currenttrack == t)
		return;

	g_currenttrack = t;

	printf("jukebox: Now playing \"%s\"...\n", sp_track_name(t));
	fflush(stdout);

	sp_session_player_load(g_sess, t);
	sp_session_player_play(g_sess, 1);
}
Exemplo n.º 8
0
static void try_playback_start(void) {
	sp_track *t;
	if(amtSongs() == 0) {
		fprintf(stderr, "Playlist: No tracks in playlist. Waiting\n");
		return;
	}
	t = sp_link_as_track(firstSong->song);
	if(g_currenttrack && t != g_currenttrack) {
		audio_fifo_flush(&g_audiofifo);
		sp_session_player_unload(g_sess);
		g_currenttrack = NULL;
	}
	
	if(!t) {
		printf("Null Song\n");
		fflush(stdout);
		return;
	}
	int next_timeout = 0;
	sp_session_process_events(g_sess, &next_timeout);
	while(sp_track_error(t) != SP_ERROR_OK) {
		sp_session_process_events(g_sess, &next_timeout);
	   	printf("Loading Track...\n");
        usleep(100000);
	}
	if(sp_track_error(t) != SP_ERROR_OK) {
		printf("SP_ERRoR\n");
		printf("%i\n", sp_track_error(t));
		fflush(stdout);
		return;
	}
	if(g_currenttrack == t) {
		printf("Coninuting same track\n");
		fflush(stdout);
		return;
	}
	g_currenttrack = t;
	printf("Partyfy: Now playing \"%s\"...\n", sp_track_name(t));
	fflush(stdout);
	sp_session_player_load(g_sess, t);
	sp_session_player_play(g_sess, 1);
}
static gboolean
rbspotifysrc_start (GstBaseSrc *bsrc)
{
	RBSpotifySrc *src = RBSPOTIFYSRC (bsrc);
//	sp_error err;
	sp_link* link;
	audio_fifo_t *af = &g_audio_fifo;	
//	sp_track* track;
//	int timeout;
	
	fprintf(stderr, "Playing %s\n", src->uri);

	link = sp_link_create_from_string(src->uri);
	if (!link)
	{
		fprintf(stderr, "Couldn't open file");
		return FALSE;
	}
	src->track = sp_link_as_track(link);
	if (!src->track)
	{
		fprintf(stderr, "Couldn't turn link to track %s", src->uri);
		return FALSE;
	}

	sp_track_add_ref(src->track);
	sp_link_release(link);

	src->tloaded = FALSE;
	src->played = 0;

	src->curoffset = 0;

	audio_fifo_flush(af);

	return TRUE;
}