diff options
Diffstat (limited to 'libhb/dvd.c')
-rw-r--r-- | libhb/dvd.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/libhb/dvd.c b/libhb/dvd.c index fbac84de4..e51fd95bf 100644 --- a/libhb/dvd.c +++ b/libhb/dvd.c @@ -24,6 +24,7 @@ static int hb_dvdread_read( hb_dvd_t * d, hb_buffer_t * b ); static int hb_dvdread_chapter( hb_dvd_t * d ); static int hb_dvdread_angle_count( hb_dvd_t * d ); static void hb_dvdread_set_angle( hb_dvd_t * d, int angle ); +static int hb_dvdread_main_feature( hb_dvd_t * d, hb_list_t * list_title ); hb_dvd_func_t hb_dvdread_func = { @@ -38,7 +39,8 @@ hb_dvd_func_t hb_dvdread_func = hb_dvdread_read, hb_dvdread_chapter, hb_dvdread_angle_count, - hb_dvdread_set_angle + hb_dvdread_set_angle, + hb_dvdread_main_feature }; static hb_dvd_func_t *dvd_methods = &hb_dvdread_func; @@ -55,6 +57,24 @@ hb_dvd_func_t * hb_dvdread_methods( void ) return &hb_dvdread_func; } +static int hb_dvdread_main_feature( hb_dvd_t * e, hb_list_t * list_title ) +{ + int ii; + uint64_t longest_duration = 0; + int longest = -1; + + for ( ii = 0; ii < hb_list_count( list_title ); ii++ ) + { + hb_title_t * title = hb_list_item( list_title, ii ); + if ( title->duration > longest_duration ) + { + longest_duration = title->duration; + longest = title->index; + } + } + return longest; +} + static char * hb_dvdread_name( char * path ) { static char name[1024]; @@ -1293,6 +1313,11 @@ void hb_dvd_set_angle( hb_dvd_t * d, int angle ) dvd_methods->set_angle(d, angle); } +int hb_dvd_main_feature( hb_dvd_t * d, hb_list_t * list_title ) +{ + return dvd_methods->main_feature(d, list_title); +} + // hb_dvd_set_dvdnav must only be called when no dvd source is open // it rips the rug out from under things so be careful void hb_dvd_set_dvdnav( int enable ) |