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 @@
* using libcdio, libvcd and libvcdinfo. vlc-specific things tend
* to go here.
*****************************************************************************
* Copyright (C) 2000, 2003 VideoLAN
* $Id: access.c,v 1.13 2003/12/22 14:32:55 sam Exp $
* Copyright (C) 2000, 2003, 2004 VideoLAN
* $Id: access.c,v 1.14 2004/01/03 20:43:24 rocky Exp $
*
* Authors: Rocky Bernstein <rocky@panix.com>
* Johan Bilien <jobi@via.ecp.fr>
......@@ -330,6 +330,7 @@ VCDSetArea( input_thread_t * p_input, input_area_t * p_area )
p_input->stream.p_selected_area = p_area;
/* Update the navigation variables without triggering a callback */
VCDUpdateVar( p_input, i_track, VLC_VAR_SETVALUE, "title",
"Setting track");
......@@ -339,6 +340,23 @@ VCDSetArea( input_thread_t * p_input, input_area_t * p_area )
VCDUpdateVar( p_input, i , VLC_VAR_ADDCHOICE,
"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)
......@@ -971,51 +989,90 @@ VCDUpdateVar( input_thread_t *p_input, int i_num, int i_action,
static void InformationCreate( input_thread_t *p_input )
{
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;
track_t i_track;
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( "Album", vcdinfo_get_album_id(p_vcd->vcd));
meta_info_add_str( "Application",vcdinfo_get_application_id(p_vcd->vcd));
meta_info_add_str( "Preparer", vcdinfo_get_preparer_id(p_vcd->vcd));
meta_info_add_num( "Vol #", 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_str( _("VCD Format"),
vcdinfo_get_format_version_str(p_vcd->vcd));
meta_info_add_str( _("Album"),
vcdinfo_get_album_id(p_vcd->vcd));
meta_info_add_str( _("Application"),
vcdinfo_get_application_id(p_vcd->vcd));
meta_info_add_str( _("Preparer"),
vcdinfo_get_preparer_id(p_vcd->vcd));
meta_info_add_num( _("Vol #"),
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( "Entries", vcdinfo_get_num_entries(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));
meta_info_add_num( _("Entries"),
vcdinfo_get_num_entries(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) \
{ \
const char *str = val; \
unsigned int len; \
if (val != NULL) { \
len=strlen(str); \
if (len != 0) { \
strncat(tp, str, TEMP_STR_LEN-(tp-temp_str)); \
tp += len; \
#define add_format_str_info(val) \
{ \
const char *str = val; \
unsigned int len; \
if (val != NULL) { \
len=strlen(str); \
if (len != 0) { \
strncat(tp, str, TEMP_STR_LEN-(tp-temp_str)); \
tp += len; \
} \
saw_control_prefix = false; \
} \
saw_control_prefix = false; \
} \
}
#define add_format_num_info(val, fmt) \
{ \
char num_str[10]; \
unsigned int len; \
#define add_format_num_info(val, fmt) \
{ \
char num_str[10]; \
unsigned int len; \
sprintf(num_str, fmt, val); \
len=strlen(num_str); \
if (len != 0) { \
len=strlen(num_str); \
if (len != 0) { \
strncat(tp, num_str, TEMP_STR_LEN-(tp-temp_str)); \
tp += len; \
} \
tp += len; \
} \
saw_control_prefix = false; \
}
......@@ -1389,6 +1446,8 @@ E_(Open) ( vlc_object_t *p_this )
goto err_exit;
}
p_vcd->b_svd= vcdinfo_get_tracksSVD(p_vcd->vcd);;
/* Get track information. */
p_vcd->num_tracks = ioctl_GetTracksMap( VLC_OBJECT(p_input),
vcdinfo_get_cd_image(p_vcd->vcd),
......
/*****************************************************************************
* 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>
*
......@@ -66,6 +66,7 @@ typedef struct thread_vcd_data_s
{
vcdinfo_obj_t *vcd; /* CD device descriptor */
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_segments; /* Nb of segments */
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