summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--device.h4
-rw-r--r--frontend.c4
-rw-r--r--media_player.c11
-rw-r--r--tools/playlist.c11
-rw-r--r--tools/playlist.h3
-rw-r--r--xine_input_vdr.c19
6 files changed, 35 insertions, 17 deletions
diff --git a/device.h b/device.h
index 54096dce..0156df07 100644
--- a/device.h
+++ b/device.h
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: device.h,v 1.26 2008-01-06 13:01:12 phintuka Exp $
+ * $Id: device.h,v 1.27 2008-01-10 23:32:18 phelin Exp $
*
*/
@@ -22,7 +22,7 @@ class cFunctor;
typedef enum {
miTitle = 0,
- miTrack = 1,
+ miTracknumber = 1,
miArtist = 2,
miAlbum = 3,
miDvdTitleNo = 4,
diff --git a/frontend.c b/frontend.c
index 615eb305..1af6e26f 100644
--- a/frontend.c
+++ b/frontend.c
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: frontend.c,v 1.41 2008-01-10 23:30:37 phelin Exp $
+ * $Id: frontend.c,v 1.42 2008-01-10 23:32:18 phelin Exp $
*
*/
@@ -154,6 +154,8 @@ void cXinelibThread::InfoHandler(const char *info)
if(!strcmp(map, "title"))
cXinelibDevice::Instance().SetMetaInfo(miTitle, next);
+ if(!strcmp(map, "tracknumber"))
+ cXinelibDevice::Instance().SetMetaInfo(miTracknumber, next);
if(!strcmp(map, "album"))
cXinelibDevice::Instance().SetMetaInfo(miAlbum, next);
if(!strcmp(map, "artist"))
diff --git a/media_player.c b/media_player.c
index 4f10ce4d..36d04aa1 100644
--- a/media_player.c
+++ b/media_player.c
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: media_player.c,v 1.40 2008-01-10 23:30:37 phelin Exp $
+ * $Id: media_player.c,v 1.41 2008-01-10 23:32:18 phelin Exp $
*
*/
@@ -225,10 +225,13 @@ void cXinelibPlayer::Activate(bool On)
if(m_Replaying) {
// update playlist metainfo
const char *ti = cXinelibDevice::Instance().GetMetaInfo(miTitle);
+ const char *tr = cXinelibDevice::Instance().GetMetaInfo(miTracknumber);
const char *al = cXinelibDevice::Instance().GetMetaInfo(miAlbum);
const char *ar = cXinelibDevice::Instance().GetMetaInfo(miArtist);
if(ti && ti[0] && (!*m_Playlist.Current()->Title || !strstr(m_Playlist.Current()->Title, ti)))
m_Playlist.Current()->Title = ti;
+ if(tr && tr[0])
+ m_Playlist.Current()->Tracknumber = tr;
if(al && al[0])
m_Playlist.Current()->Album = al;
if(ar && ar[0])
@@ -618,13 +621,17 @@ eOSState cXinelibPlayerControl::ProcessKey(eKeys Key)
const char *ti = cXinelibDevice::Instance().GetMetaInfo(miTitle);
if(ti && ti[0] && (!*m_Player->Playlist().Current()->Title ||
!strstr(m_Player->Playlist().Current()->Title, ti))) {
+ const char *tr = cXinelibDevice::Instance().GetMetaInfo(miTracknumber);
const char *al = cXinelibDevice::Instance().GetMetaInfo(miAlbum);
const char *ar = cXinelibDevice::Instance().GetMetaInfo(miArtist);
- LOGDBG("metainfo changed: %s->%s %s->%s %s->%s",
+ LOGDBG("metainfo changed: %s->%s %s->%s %s->%s %s->%s",
*m_Player->Playlist().Current()->Artist?:"-", ar?:"-",
*m_Player->Playlist().Current()->Album ?:"-", al?:"-",
+ *m_Player->Playlist().Current()->Tracknumber ?:"-", tr?:"-",
*m_Player->Playlist().Current()->Title ?:"-", ti?:"-");
m_Player->Playlist().Current()->Title = ti;
+ if(tr && tr[0])
+ m_Player->Playlist().Current()->Tracknumber = tr;
if(al && al[0])
m_Player->Playlist().Current()->Album = al;
if(ar && ar[0])
diff --git a/tools/playlist.c b/tools/playlist.c
index 3f05e88a..9380b413 100644
--- a/tools/playlist.c
+++ b/tools/playlist.c
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: playlist.c,v 1.8 2008-01-10 23:30:37 phelin Exp $
+ * $Id: playlist.c,v 1.9 2008-01-10 23:32:18 phelin Exp $
*
*/
@@ -162,7 +162,7 @@ class cID3Scanner : public cThread
else if(!strncasecmp(pt, "TITLE=", 6) && strlen(pt) > 7)
Item->Title = (pt+6);
else if(!strncasecmp(pt, "TRACKNUMBER=", 12) && strlen(pt) > 12)
- Item->Position = atoi(pt+12);
+ Item->Tracknumber = (pt+12);
}
}
} else if(xc.IsAudioFile(Item->Filename)) {
@@ -170,6 +170,7 @@ class cID3Scanner : public cThread
"Artist: %%a\\r\\n"
"Album: %%l\\r\\n"
"Title: %%t\\r\\n"
+ "Tracknumber: %%n\\r\\n\""
" \"%s\"",
shell_escape(Item->Filename, '\"'));
cPipe p;
@@ -184,6 +185,8 @@ class cID3Scanner : public cThread
Item->Album = (pt+7);
if(!strncmp(pt, "Title: ", 7) && strlen(pt) > 8)
Item->Title = (pt+7);
+ if(!strncmp(pt, "Tracknumber: ", 12) && strlen(pt) > 13)
+ Item->Tracknumber = (pt+12);
}
}
}
@@ -460,6 +463,8 @@ bool cPlaylist::StoreCache(void)
fprintf(f, "File%d=%s\r\n", entries, *Filename);
if(*i->Title && (*i->Title)[0])
fprintf(f, "Title%d=%s\r\n", entries, *i->Title);
+ if(*i->Tracknumber && (*i->Tracknumber)[0])
+ fprintf(f, "Tracknumber%d=%s\r\n", entries, *i->Tracknumber);
if(*i->Artist && (*i->Artist)[0])
fprintf(f, "Artist%d=%s\r\n", entries, *i->Artist);
if(*i->Album && (*i->Album)[0])
@@ -509,6 +514,8 @@ bool cPlaylist::ReadCache(void)
}
} else if(it && !strncmp(pt, "Title", 5)) {
it->Title = strchrnext(pt, '=');
+ } else if(it && !strncmp(pt, "Tracknumber", 11)) {
+ it->Tracknumber = strchrnext(pt, '=');
} else if(it && !strncmp(pt, "Artist", 6)) {
it->Artist = strchrnext(pt, '=');
} else if(it && !strncmp(pt, "Album", 5)) {
diff --git a/tools/playlist.h b/tools/playlist.h
index 2cfb68ac..f86dbfb1 100644
--- a/tools/playlist.h
+++ b/tools/playlist.h
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: playlist.h,v 1.5 2008-01-10 23:30:37 phelin Exp $
+ * $Id: playlist.h,v 1.6 2008-01-10 23:32:18 phelin Exp $
*
*/
@@ -37,6 +37,7 @@ class cPlaylistItem : public cListObject
// Metainfo (ID3 etc.)
cString Title;
+ cString Tracknumber;
cString Artist;
cString Album;
diff --git a/xine_input_vdr.c b/xine_input_vdr.c
index fb919883..2782ce04 100644
--- a/xine_input_vdr.c
+++ b/xine_input_vdr.c
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: xine_input_vdr.c,v 1.110 2008-01-10 21:37:14 phintuka Exp $
+ * $Id: xine_input_vdr.c,v 1.111 2008-01-10 23:32:18 phelin Exp $
*
*/
@@ -2618,14 +2618,15 @@ static void send_meta_info(vdr_input_plugin_t *this)
if(this->slave_stream) {
/* send stream meta info */
- char *meta = NULL;
- char *title = (char *)xine_get_meta_info(this->slave_stream, XINE_META_INFO_TITLE);
- char *artist = (char *)xine_get_meta_info(this->slave_stream, XINE_META_INFO_ARTIST);
- char *album = (char *)xine_get_meta_info(this->slave_stream, XINE_META_INFO_ALBUM);
-
- asprintf(&meta,
- "INFO METAINFO title=\'%s\' artist=\'%s\' album=\'%s\'\r\n",
- title?:"", artist?:"", album?:"");
+ char *meta = NULL;
+ char *title = (char *)xine_get_meta_info(this->slave_stream, XINE_META_INFO_TITLE);
+ char *artist = (char *)xine_get_meta_info(this->slave_stream, XINE_META_INFO_ARTIST);
+ char *album = (char *)xine_get_meta_info(this->slave_stream, XINE_META_INFO_ALBUM);
+ char *tracknumber = (char *)xine_get_meta_info(this->slave_stream, XINE_META_INFO_TRACK_NUMBER);
+
+ asprintf(&meta,
+ "INFO METAINFO title=\'%s\' artist=\'%s\' album=\'%s\' tracknumber=\'%s\'\r\n",
+ title?:"", artist?:"", album?:"", tracknumber?:"");
if(this->fd_control < 0)
this->funcs.xine_input_event(meta, NULL);