summaryrefslogtreecommitdiffstats
path: root/libhb
diff options
context:
space:
mode:
Diffstat (limited to 'libhb')
-rw-r--r--libhb/dvd.c30
-rw-r--r--libhb/dvd.h5
-rw-r--r--libhb/dvdnav.c30
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);
}
}