Commit 4fc0ccfa authored by Rocky Bernstein's avatar Rocky Bernstein

Put track information in Media Info. If we have SVD information, show

audio tracks and add that to the audio-selection window.
parent 481fb380
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
* using libcdio, libvcd and libvcdinfo. vlc-specific things tend * using libcdio, libvcd and libvcdinfo. vlc-specific things tend
* to go here. * to go here.
***************************************************************************** *****************************************************************************
* Copyright (C) 2000, 2003 VideoLAN * Copyright (C) 2000, 2003, 2004 VideoLAN
* $Id: access.c,v 1.13 2003/12/22 14:32:55 sam Exp $ * $Id: access.c,v 1.14 2004/01/03 20:43:24 rocky Exp $
* *
* Authors: Rocky Bernstein <rocky@panix.com> * Authors: Rocky Bernstein <rocky@panix.com>
* Johan Bilien <jobi@via.ecp.fr> * Johan Bilien <jobi@via.ecp.fr>
...@@ -330,6 +330,7 @@ VCDSetArea( input_thread_t * p_input, input_area_t * p_area ) ...@@ -330,6 +330,7 @@ VCDSetArea( input_thread_t * p_input, input_area_t * p_area )
p_input->stream.p_selected_area = p_area; p_input->stream.p_selected_area = p_area;
/* Update the navigation variables without triggering a callback */ /* Update the navigation variables without triggering a callback */
VCDUpdateVar( p_input, i_track, VLC_VAR_SETVALUE, "title", VCDUpdateVar( p_input, i_track, VLC_VAR_SETVALUE, "title",
"Setting track"); "Setting track");
...@@ -339,6 +340,23 @@ VCDSetArea( input_thread_t * p_input, input_area_t * p_area ) ...@@ -339,6 +340,23 @@ VCDSetArea( input_thread_t * p_input, input_area_t * p_area )
VCDUpdateVar( p_input, i , VLC_VAR_ADDCHOICE, VCDUpdateVar( p_input, i , VLC_VAR_ADDCHOICE,
"chapter", "Adding entry choice"); "chapter", "Adding entry choice");
} }
if (p_vcd->b_svd) {
unsigned int audio_type =
vcdinfo_get_track_audio_type(p_vcd->vcd, i_track);
unsigned int i_channels =
vcdinfo_audio_type_num_channels(p_vcd->vcd, audio_type);
var_Change( p_input, "audio_channels", VLC_VAR_CLEARCHOICES, NULL,
NULL );
for( i = 0; i < i_channels; i++ )
{
VCDUpdateVar( p_input, i , VLC_VAR_ADDCHOICE,
"audio_channels", "Adding audio choice");
}
}
} }
if (i_track == 0) if (i_track == 0)
...@@ -971,51 +989,90 @@ VCDUpdateVar( input_thread_t *p_input, int i_num, int i_action, ...@@ -971,51 +989,90 @@ VCDUpdateVar( input_thread_t *p_input, int i_num, int i_action,
static void InformationCreate( input_thread_t *p_input ) static void InformationCreate( input_thread_t *p_input )
{ {
thread_vcd_data_t *p_vcd = (thread_vcd_data_t *) p_input->p_access_data; thread_vcd_data_t *p_vcd = (thread_vcd_data_t *) p_input->p_access_data;
unsigned int i_nb = vcdinfo_get_num_entries(p_vcd->vcd);
unsigned int last_entry = 0;
input_info_category_t *p_cat; input_info_category_t *p_cat;
track_t i_track;
p_cat = input_InfoCategory( p_input, "General" ); p_cat = input_InfoCategory( p_input, "General" );
meta_info_add_str( "VCD Format", vcdinfo_get_format_version_str(p_vcd->vcd)); meta_info_add_str( _("VCD Format"),
meta_info_add_str( "Album", vcdinfo_get_album_id(p_vcd->vcd)); vcdinfo_get_format_version_str(p_vcd->vcd));
meta_info_add_str( "Application",vcdinfo_get_application_id(p_vcd->vcd)); meta_info_add_str( _("Album"),
meta_info_add_str( "Preparer", vcdinfo_get_preparer_id(p_vcd->vcd)); vcdinfo_get_album_id(p_vcd->vcd));
meta_info_add_num( "Vol #", vcdinfo_get_volume_num(p_vcd->vcd)); meta_info_add_str( _("Application"),
meta_info_add_num( "Vol max #", vcdinfo_get_volume_count(p_vcd->vcd)); vcdinfo_get_application_id(p_vcd->vcd));
meta_info_add_str( "Volume Set", vcdinfo_get_volumeset_id(p_vcd->vcd)); meta_info_add_str( _("Preparer"),
meta_info_add_str( "Volume", vcdinfo_get_volume_id(p_vcd->vcd)); vcdinfo_get_preparer_id(p_vcd->vcd));
meta_info_add_str( "Publisher", vcdinfo_get_publisher_id(p_vcd->vcd)); meta_info_add_num( _("Vol #"),
meta_info_add_str( "System Id", vcdinfo_get_system_id(p_vcd->vcd)); vcdinfo_get_volume_num(p_vcd->vcd));
meta_info_add_num( _("Vol max #"),
vcdinfo_get_volume_count(p_vcd->vcd));
meta_info_add_str( _("Volume Set"),
vcdinfo_get_volumeset_id(p_vcd->vcd));
meta_info_add_str( _("Volume"),
vcdinfo_get_volume_id(p_vcd->vcd));
meta_info_add_str( _("Publisher"),
vcdinfo_get_publisher_id(p_vcd->vcd));
meta_info_add_str( _("System Id"),
vcdinfo_get_system_id(p_vcd->vcd));
meta_info_add_num( "LIDs", vcdinfo_get_num_LIDs(p_vcd->vcd)); meta_info_add_num( "LIDs", vcdinfo_get_num_LIDs(p_vcd->vcd));
meta_info_add_num( "Entries", vcdinfo_get_num_entries(p_vcd->vcd)); meta_info_add_num( _("Entries"),
meta_info_add_num( "Segments", vcdinfo_get_num_segments(p_vcd->vcd)); vcdinfo_get_num_entries(p_vcd->vcd));
meta_info_add_num( "Tracks", vcdinfo_get_num_tracks(p_vcd->vcd)); meta_info_add_num( _("Segments"),
vcdinfo_get_num_segments(p_vcd->vcd));
meta_info_add_num( _("Tracks"),
vcdinfo_get_num_tracks(p_vcd->vcd));
/* Spit out track information. Could also include MSF info.
*/
#define TITLE_MAX 30
for( i_track = 1 ; i_track < p_vcd->num_tracks ; i_track++ ) {
char track_str[TITLE_MAX];
unsigned int audio_type = vcdinfo_get_track_audio_type(p_vcd->vcd,
i_track);
snprintf(track_str, TITLE_MAX, "%s%02d", _("Track"), i_track);
p_cat = input_InfoCategory( p_input, track_str );
if (p_vcd->b_svd) {
meta_info_add_num( _("Audio Channels"),
vcdinfo_audio_type_num_channels(p_vcd->vcd,
audio_type) );
}
meta_info_add_num( _("First Entry Point"), last_entry );
for ( ; last_entry < i_nb
&& vcdinfo_get_track(p_vcd->vcd, last_entry) == i_track;
last_entry++ ) ;
meta_info_add_num( _("Last Entry Point"), last_entry-1 );
}
} }
#define add_format_str_info(val) \ #define add_format_str_info(val) \
{ \ { \
const char *str = val; \ const char *str = val; \
unsigned int len; \ unsigned int len; \
if (val != NULL) { \ if (val != NULL) { \
len=strlen(str); \ len=strlen(str); \
if (len != 0) { \ if (len != 0) { \
strncat(tp, str, TEMP_STR_LEN-(tp-temp_str)); \ strncat(tp, str, TEMP_STR_LEN-(tp-temp_str)); \
tp += len; \ tp += len; \
} \ } \
saw_control_prefix = false; \ saw_control_prefix = false; \
} \ } \
} }
#define add_format_num_info(val, fmt) \ #define add_format_num_info(val, fmt) \
{ \ { \
char num_str[10]; \ char num_str[10]; \
unsigned int len; \ unsigned int len; \
sprintf(num_str, fmt, val); \ sprintf(num_str, fmt, val); \
len=strlen(num_str); \ len=strlen(num_str); \
if (len != 0) { \ if (len != 0) { \
strncat(tp, num_str, TEMP_STR_LEN-(tp-temp_str)); \ strncat(tp, num_str, TEMP_STR_LEN-(tp-temp_str)); \
tp += len; \ tp += len; \
} \ } \
saw_control_prefix = false; \ saw_control_prefix = false; \
} }
...@@ -1389,6 +1446,8 @@ E_(Open) ( vlc_object_t *p_this ) ...@@ -1389,6 +1446,8 @@ E_(Open) ( vlc_object_t *p_this )
goto err_exit; goto err_exit;
} }
p_vcd->b_svd= vcdinfo_get_tracksSVD(p_vcd->vcd);;
/* Get track information. */ /* Get track information. */
p_vcd->num_tracks = ioctl_GetTracksMap( VLC_OBJECT(p_input), p_vcd->num_tracks = ioctl_GetTracksMap( VLC_OBJECT(p_input),
vcdinfo_get_cd_image(p_vcd->vcd), vcdinfo_get_cd_image(p_vcd->vcd),
......
/***************************************************************************** /*****************************************************************************
* Copyright (C) 2003 Rocky Bernstein (for VideoLAN) * Copyright (C) 2003 Rocky Bernstein (for VideoLAN)
* $Id: vcdplayer.h,v 1.4 2003/12/05 05:01:17 rocky Exp $ * $Id: vcdplayer.h,v 1.5 2004/01/03 20:43:24 rocky Exp $
* *
* Authors: Rocky Bernstein <rocky@panix.com> * Authors: Rocky Bernstein <rocky@panix.com>
* *
...@@ -66,6 +66,7 @@ typedef struct thread_vcd_data_s ...@@ -66,6 +66,7 @@ typedef struct thread_vcd_data_s
{ {
vcdinfo_obj_t *vcd; /* CD device descriptor */ vcdinfo_obj_t *vcd; /* CD device descriptor */
bool in_still; /* true if in still */ bool in_still; /* true if in still */
bool b_svd; /* true if we have SVD info */
unsigned int num_tracks; /* Nb of tracks (titles) */ unsigned int num_tracks; /* Nb of tracks (titles) */
unsigned int num_segments; /* Nb of segments */ unsigned int num_segments; /* Nb of segments */
unsigned int num_entries; /* Nb of entries */ unsigned int num_entries; /* Nb of entries */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment