diff options
-rw-r--r-- | libhb/dvd.c | 30 | ||||
-rw-r--r-- | libhb/dvd.h | 5 | ||||
-rw-r--r-- | libhb/dvdnav.c | 30 |
3 files changed, 55 insertions, 10 deletions
diff --git a/libhb/dvd.c b/libhb/dvd.c index 724716551..1cca5b98f 100644 --- a/libhb/dvd.c +++ b/libhb/dvd.c @@ -175,7 +175,7 @@ static int hb_dvdread_title_count( hb_dvd_t * e ) static void add_subtitle( hb_list_t * list_subtitle, int position, iso639_lang_t * lang, int lang_extension, - uint32_t * palette ) + uint32_t * palette, int style ) { hb_subtitle_t * subtitle; int ii, count; @@ -242,6 +242,22 @@ static void add_subtitle( hb_list_t * list_subtitle, int position, break; } + switch (style) + { + case HB_VOBSUB_STYLE_4_3: + strcat( subtitle->lang, " (4:3)" ); + break; + case HB_VOBSUB_STYLE_WIDE: + strcat( subtitle->lang, " (Wide Screen)" ); + break; + case HB_VOBSUB_STYLE_LETTERBOX: + strcat( subtitle->lang, " (Letterbox)" ); + break; + case HB_VOBSUB_STYLE_PANSCAN: + strcat( subtitle->lang, " (Pan & Scan)" ); + break; + } + hb_log( "scan: id=0x%x, lang=%s, 3cc=%s ext=%i", subtitle->id, subtitle->lang, subtitle->iso639_2, lang_extension ); @@ -558,7 +574,8 @@ static hb_title_t * hb_dvdread_title_scan( hb_dvd_t * e, int t, uint64_t min_dur // Add Wide Screen subtitle. pos = (spu_control >> 16) & 0x1F; add_subtitle(title->list_subtitle, pos, lang, lang_ext, - vts->vts_pgcit->pgci_srp[pgc_id-1].pgc->palette); + vts->vts_pgcit->pgci_srp[pgc_id-1].pgc->palette, + HB_VOBSUB_STYLE_WIDE); // permitted_df // 1 - Letterbox not permitted @@ -569,21 +586,24 @@ static hb_title_t * hb_dvdread_title_scan( hb_dvd_t * e, int t, uint64_t min_dur // Letterbox permitted. Add Letterbox subtitle. pos = (spu_control >> 8) & 0x1F; add_subtitle(title->list_subtitle, pos, lang, lang_ext, - vts->vts_pgcit->pgci_srp[pgc_id-1].pgc->palette); + vts->vts_pgcit->pgci_srp[pgc_id-1].pgc->palette, + HB_VOBSUB_STYLE_LETTERBOX); } if (!(vts->vtsi_mat->vts_video_attr.permitted_df & 2)) { // Pan&Scan permitted. Add Pan&Scan subtitle. pos = spu_control & 0x1F; add_subtitle(title->list_subtitle, pos, lang, lang_ext, - vts->vts_pgcit->pgci_srp[pgc_id-1].pgc->palette); + vts->vts_pgcit->pgci_srp[pgc_id-1].pgc->palette, + HB_VOBSUB_STYLE_PANSCAN); } } else { pos = (spu_control >> 24) & 0x1F; add_subtitle(title->list_subtitle, pos, lang, lang_ext, - vts->vts_pgcit->pgci_srp[pgc_id-1].pgc->palette); + vts->vts_pgcit->pgci_srp[pgc_id-1].pgc->palette, + HB_VOBSUB_STYLE_4_3); } } diff --git a/libhb/dvd.h b/libhb/dvd.h index 8a8e4b89d..4ecbf2420 100644 --- a/libhb/dvd.h +++ b/libhb/dvd.h @@ -14,6 +14,11 @@ #include "dvdread/ifo_read.h" #include "dvdread/nav_read.h" +#define HB_VOBSUB_STYLE_4_3 0 +#define HB_VOBSUB_STYLE_WIDE 1 +#define HB_VOBSUB_STYLE_LETTERBOX 2 +#define HB_VOBSUB_STYLE_PANSCAN 3 + struct hb_dvdread_s { char * path; diff --git a/libhb/dvdnav.c b/libhb/dvdnav.c index 671806c54..ed7dd26c7 100644 --- a/libhb/dvdnav.c +++ b/libhb/dvdnav.c @@ -319,7 +319,7 @@ PttDuration(ifo_handle_t *ifo, int ttn, int pttn, int *blocks, int *last_pgcn) static void add_subtitle( hb_list_t * list_subtitle, int position, iso639_lang_t * lang, int lang_extension, - uint32_t * palette ) + uint32_t * palette, int style ) { hb_subtitle_t * subtitle; int ii, count; @@ -386,6 +386,22 @@ static void add_subtitle( hb_list_t * list_subtitle, int position, break; } + switch (style) + { + case HB_VOBSUB_STYLE_4_3: + strcat( subtitle->lang, " (4:3)" ); + break; + case HB_VOBSUB_STYLE_WIDE: + strcat( subtitle->lang, " (Wide Screen)" ); + break; + case HB_VOBSUB_STYLE_LETTERBOX: + strcat( subtitle->lang, " (Letterbox)" ); + break; + case HB_VOBSUB_STYLE_PANSCAN: + strcat( subtitle->lang, " (Pan & Scan)" ); + break; + } + hb_log( "scan: id=0x%x, lang=%s, 3cc=%s ext=%i", subtitle->id, subtitle->lang, subtitle->iso639_2, lang_extension ); @@ -738,7 +754,8 @@ static hb_title_t * hb_dvdnav_title_scan( hb_dvd_t * e, int t, uint64_t min_dura // Add Wide Screen subtitle. pos = (spu_control >> 16) & 0x1F; add_subtitle(title->list_subtitle, pos, lang, lang_ext, - ifo->vts_pgcit->pgci_srp[title_pgcn-1].pgc->palette); + ifo->vts_pgcit->pgci_srp[title_pgcn-1].pgc->palette, + HB_VOBSUB_STYLE_WIDE); // permitted_df // 1 - Letterbox not permitted @@ -749,21 +766,24 @@ static hb_title_t * hb_dvdnav_title_scan( hb_dvd_t * e, int t, uint64_t min_dura // Letterbox permitted. Add Letterbox subtitle. pos = (spu_control >> 8) & 0x1F; add_subtitle(title->list_subtitle, pos, lang, lang_ext, - ifo->vts_pgcit->pgci_srp[title_pgcn-1].pgc->palette); + ifo->vts_pgcit->pgci_srp[title_pgcn-1].pgc->palette, + HB_VOBSUB_STYLE_LETTERBOX); } if (!(ifo->vtsi_mat->vts_video_attr.permitted_df & 2)) { // Pan&Scan permitted. Add Pan&Scan subtitle. pos = spu_control & 0x1F; add_subtitle(title->list_subtitle, pos, lang, lang_ext, - ifo->vts_pgcit->pgci_srp[title_pgcn-1].pgc->palette); + ifo->vts_pgcit->pgci_srp[title_pgcn-1].pgc->palette, + HB_VOBSUB_STYLE_PANSCAN); } } else { pos = (spu_control >> 24) & 0x1F; add_subtitle(title->list_subtitle, pos, lang, lang_ext, - ifo->vts_pgcit->pgci_srp[title_pgcn-1].pgc->palette); + ifo->vts_pgcit->pgci_srp[title_pgcn-1].pgc->palette, + HB_VOBSUB_STYLE_4_3); } } |