]> git.sesse.net Git - vlc/commitdiff
Give a fine name when playing audio CD
authorClément Stenac <zorglub@videolan.org>
Sat, 23 Apr 2005 12:33:13 +0000 (12:33 +0000)
committerClément Stenac <zorglub@videolan.org>
Sat, 23 Apr 2005 12:33:13 +0000 (12:33 +0000)
modules/access/cdda.c

index 41635dd92c21450e40be01f05eb0d172ebb4e749..69387e6cad6d2e4f1c7a8b5a36a534daf0a315bd 100644 (file)
@@ -189,6 +189,8 @@ static int Open( vlc_object_t *p_this )
     p_sys->waveheader.DataChunkID = VLC_FOURCC('d', 'a', 't', 'a');
     p_sys->waveheader.DataLength = 0;                 /* we just don't know */
 
+    p_access->info.i_update |= INPUT_UPDATE_META;
+
     /* PTS delay */
     var_Create( p_access, "cdda-caching", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
     return VLC_SUCCESS;
@@ -314,6 +316,8 @@ static int Control( access_t *p_access, int i_query, va_list args )
     int64_t      *pi_64;
     input_title_t ***ppp_title;
     int i;
+    char         *psz_title;
+    vlc_meta_t  **pp_meta;
 
     switch( i_query )
     {
@@ -344,7 +348,7 @@ static int Control( access_t *p_access, int i_query, va_list args )
         case ACCESS_GET_TITLE_INFO:
             ppp_title = (input_title_t***)va_arg( args, input_title_t*** );
             pi_int    = (int*)va_arg( args, int* );
-           *((int*)va_arg( args, int* )) = 1; /* Title offset */
+            *((int*)va_arg( args, int* )) = 1; /* Title offset */
 
             /* Duplicate title infos */
             *pi_int = p_sys->i_titles;
@@ -361,7 +365,7 @@ static int Control( access_t *p_access, int i_query, va_list args )
             {
                 /* Update info */
                 p_access->info.i_update |=
-                    INPUT_UPDATE_TITLE|INPUT_UPDATE_SIZE;
+                    INPUT_UPDATE_TITLE|INPUT_UPDATE_SIZE|INPUT_UPDATE_META;
                 p_access->info.i_title = i;
                 p_access->info.i_size = p_sys->title[i]->i_size;
                 p_access->info.i_pos = 0;
@@ -371,6 +375,16 @@ static int Control( access_t *p_access, int i_query, va_list args )
             }
             break;
 
+        case ACCESS_GET_META:
+             psz_title = malloc( strlen( _("Audio CD - Track ") ) + 5 );
+             snprintf( psz_title, 100, _("Audio CD - Track %i" ),
+                                        p_access->info.i_title+1 );
+             pp_meta = (vlc_meta_t**)va_arg( args, vlc_meta_t** );
+             *pp_meta = vlc_meta_New();
+             vlc_meta_Add( *pp_meta, VLC_META_TITLE, psz_title );
+             free( psz_title );
+             break;
+
         case ACCESS_SET_SEEKPOINT:
         case ACCESS_SET_PRIVATE_ID_STATE:
             return VLC_EGENERIC;