diff options
-rw-r--r-- | device.h | 4 | ||||
-rw-r--r-- | frontend.c | 4 | ||||
-rw-r--r-- | media_player.c | 11 | ||||
-rw-r--r-- | tools/playlist.c | 11 | ||||
-rw-r--r-- | tools/playlist.h | 3 | ||||
-rw-r--r-- | xine_input_vdr.c | 19 |
6 files changed, 35 insertions, 17 deletions
@@ -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, @@ -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); |