+
+
+
+
+static int GetTracks( access_t *p_access, vlc_bool_t b_separate )
+{
+ p_sys->i_titles = ioctl_GetTracksMap( VLC_OBJECT(p_access),
+ p_sys->vcddev, &p_sys->p_sectors );
+ if( p_sys->i_titles < 0 )
+ {
+ msg_Err( p_access, "unable to count tracks" );
+ return VLC_EGENERIC;;
+ }
+ else if( p_sys->i_titles <= 0 )
+ {
+ msg_Err( p_access, "no audio tracks found" );
+ return VLC_EGENERIC;
+ }
+
+ /* Build title table */
+ for( i = 0; i < p_sys->i_titles; i++ )
+ {
+ if( !b_separate )
+ {
+ input_title_t *t = p_sys->title[i] = vlc_input_title_New();
+
+ msg_Dbg( p_access, "title[%d] start=%d", i, p_sys->p_sectors[i] );
+ msg_Dbg( p_access, "title[%d] end=%d", i, p_sys->p_sectors[i+1] );
+
+ asprintf( &t->psz_name, _("Track %i"), i + 1 );
+ t->i_size = ( p_sys->p_sectors[i+1] - p_sys->p_sectors[i] ) *
+ (int64_t)CDDA_DATA_SIZE;
+
+ t->i_length = I64C(1000000) * t->i_size / 44100 / 4;
+ }
+ else
+ {
+ /* Create playlist items */
+ }
+ }
+
+ p_sys->i_sector = p_sys->p_sectors[0];
+
+ return VLC_SUCCESS;
+}