summaryrefslogtreecommitdiff
path: root/vdr_player.c
diff options
context:
space:
mode:
Diffstat (limited to 'vdr_player.c')
-rw-r--r--vdr_player.c75
1 files changed, 56 insertions, 19 deletions
diff --git a/vdr_player.c b/vdr_player.c
index 6161dd9..32ca216 100644
--- a/vdr_player.c
+++ b/vdr_player.c
@@ -363,22 +363,24 @@ void mgPCMPlayer::Action(void)
m_index = 0;
m_playing = m_current;
- string filename = m_playing->getSourceFile();
- mgDebug( 1, "mgPCMPlayer::Action: music file is %s", filename.c_str() );
+ if( m_playing && m_playing != &(mgContentItem::UNDEFINED) )
+ {
+ string filename = m_playing->getSourceFile();
+ // mgDebug( 1, "mgPCMPlayer::Action: music file is %s", filename.c_str() );
- if( ( m_decoder = mgDecoders::findDecoder( m_playing ) ) && m_decoder->start() )
- {
- levelgood = true;
- haslevel = false;
-
- scale.Init();
- level.Init();
-
- m_state = msDecode;
+ if( ( m_decoder = mgDecoders::findDecoder( m_playing ) ) && m_decoder->start() )
+ {
+ levelgood = true;
+ haslevel = false;
- break;
- }
-
+ scale.Init();
+ level.Init();
+
+ m_state = msDecode;
+
+ break;
+ }
+ }
m_state = msEof;
} break;
case msDecode:
@@ -673,17 +675,52 @@ void mgPCMPlayer::StopPlay()
bool mgPCMPlayer::NextFile()
{
+ mgContentItem *newcurr;
+
bool res = false;
-
- m_playlist->skipFwd();
- mgContentItem *newcurr = m_playlist->getCurrent();
+ bool m_partymode = false;
+ bool m_shufflemode = false;
+ if( m_partymode )
+ {
+ /*
+ - Party mode (see iTunes)
+ - initialization
+ - find 15 titles according to the scheme below
+ - playing
+ - before entering next title perform track selection
+ - track selection
+ - generate a random uid
+ - if file exists:
+ - determine maximum playcount of all tracks
+ - generate a random number n
+ - if n < playcount / max. playcount
+ - add the file to the end of the list
+ */
+ }
+ else if( m_shufflemode )
+ {
+ /*
+ - Handle shuffle mode in mgPlaylist
+ - for next file:
+ - generate a random number 0..n-1
+ - move corresponding playlist item to front
+ - continue
+ */
+
+ }
+ else
+ {
+ m_playlist->skipFwd();
+ newcurr = m_playlist->getCurrent();
+ }
+
if( newcurr && newcurr != &(mgContentItem::UNDEFINED) )
{
m_current = newcurr;
res = true;
}
-
+
return res;
}
@@ -735,7 +772,7 @@ void mgPCMPlayer::Play(void)
Lock();
- if( m_playmode != pmPlay && m_current )
+ if( m_playmode != pmPlay && m_current && m_current != &(mgContentItem::UNDEFINED) )
{
if( m_playmode == pmStopped )
{