diff options
Diffstat (limited to 'libhb')
-rw-r--r-- | libhb/bd.c | 12 | ||||
-rw-r--r-- | libhb/common.c | 18 | ||||
-rw-r--r-- | libhb/decavcodec.c | 35 | ||||
-rw-r--r-- | libhb/dvd.c | 33 | ||||
-rw-r--r-- | libhb/dvdnav.c | 33 | ||||
-rw-r--r-- | libhb/stream.c | 23 | ||||
-rw-r--r-- | libhb/work.c | 34 |
7 files changed, 107 insertions, 81 deletions
diff --git a/libhb/bd.c b/libhb/bd.c index 98f49206c..843fd6c53 100644 --- a/libhb/bd.c +++ b/libhb/bd.c @@ -95,11 +95,6 @@ static void add_subtitle(int track, hb_list_t *list_subtitle, BLURAY_STREAM_INFO subtitle->track = track; subtitle->id = bdsub->pid; - lang = lang_for_code2( (char*)bdsub->lang ); - snprintf( subtitle->lang, sizeof( subtitle->lang ), "%s", - strlen(lang->native_name) ? lang->native_name : lang->eng_name); - snprintf( subtitle->iso639_2, sizeof( subtitle->iso639_2 ), "%s", - lang->iso639_2); switch ( bdsub->coding_type ) { @@ -113,6 +108,13 @@ static void add_subtitle(int track, hb_list_t *list_subtitle, BLURAY_STREAM_INFO free( subtitle ); return; } + lang = lang_for_code2( (char*)bdsub->lang ); + snprintf(subtitle->lang, sizeof( subtitle->lang ), "%s [%s]", + strlen(lang->native_name) ? lang->native_name : lang->eng_name, + hb_subsource_name(subtitle->source)); + snprintf(subtitle->iso639_2, sizeof( subtitle->iso639_2 ), "%s", + lang->iso639_2); + subtitle->reg_desc = STR4_TO_UINT32("HDMV"); subtitle->stream_type = bdsub->coding_type; subtitle->codec = codec; diff --git a/libhb/common.c b/libhb/common.c index 986044845..11928e519 100644 --- a/libhb/common.c +++ b/libhb/common.c @@ -4686,10 +4686,10 @@ int hb_subtitle_add(const hb_job_t * job, const hb_subtitle_config_t * subtitlec int hb_srt_add( const hb_job_t * job, const hb_subtitle_config_t * subtitlecfg, - const char *lang ) + const char *lang_code ) { hb_subtitle_t *subtitle; - iso639_lang_t *language = NULL; + iso639_lang_t *lang = NULL; subtitle = calloc( 1, sizeof( *subtitle ) ); if (subtitle == NULL) @@ -4703,14 +4703,16 @@ int hb_srt_add( const hb_job_t * job, subtitle->source = SRTSUB; subtitle->codec = WORK_DECSRTSUB; - language = lang_for_code2(lang); - if (language == NULL) + lang = lang_for_code2(lang_code); + if (lang == NULL) { - hb_log("hb_srt_add: unknown language code (%s)", lang); - language = lang_for_code2("und"); + hb_log("hb_srt_add: unknown language code (%s)", lang_code); + lang = lang_for_code2("und"); } - strcpy(subtitle->lang, language->eng_name); - strcpy(subtitle->iso639_2, language->iso639_2); + snprintf(subtitle->lang, sizeof(subtitle->lang), "%s [%s]", + strlen(lang->native_name) ? lang->native_name : lang->eng_name, + hb_subsource_name(subtitle->source)); + strcpy(subtitle->iso639_2, lang->iso639_2); subtitle->config = *subtitlecfg; hb_list_add(job->list_subtitle, subtitle); diff --git a/libhb/decavcodec.c b/libhb/decavcodec.c index bed5d2cfb..e038efd6d 100644 --- a/libhb/decavcodec.c +++ b/libhb/decavcodec.c @@ -40,6 +40,7 @@ #include "hb.h" #include "hbffmpeg.h" +#include "lang.h" #include "audio_resample.h" #ifdef USE_QSV @@ -1226,29 +1227,37 @@ static int decodeFrame( hb_work_object_t *w, packet_info_t * packet_info ) } if (subtitle == NULL) { - subtitle = calloc(sizeof( hb_subtitle_t ), 1); + iso639_lang_t * lang; + hb_audio_t * audio; + + subtitle = calloc(sizeof( hb_subtitle_t ), 1); subtitle->track = hb_list_count(pv->title->list_subtitle); - subtitle->id = 0; - subtitle->format = TEXTSUB; - subtitle->source = CC608SUB; + subtitle->id = 0; + subtitle->format = TEXTSUB; + subtitle->source = CC608SUB; subtitle->config.dest = PASSTHRUSUB; - subtitle->codec = WORK_DECCC608; - subtitle->type = 5; - snprintf(subtitle->lang, sizeof( subtitle->lang ), - "Closed Captions"); + subtitle->codec = WORK_DECCC608; + subtitle->type = 5; + /* * The language of the subtitles will be the same as the * first audio track, i.e. the same as the video. */ - hb_audio_t *audio = hb_list_item(pv->title->list_audio, 0); + audio = hb_list_item(pv->title->list_audio, 0); if (audio != NULL) { - snprintf(subtitle->iso639_2, sizeof(subtitle->iso639_2), - "%s", audio->config.lang.iso639_2); + lang = lang_for_code2( audio->config.lang.iso639_2 ); } else { - snprintf(subtitle->iso639_2, sizeof(subtitle->iso639_2), - "und"); + lang = lang_for_code2( "und" ); } + snprintf(subtitle->lang, sizeof(subtitle->lang), + "%s, Closed Caption [%s]", + strlen(lang->native_name) ? lang->native_name : + lang->eng_name, + hb_subsource_name(subtitle->source)); + snprintf(subtitle->iso639_2, sizeof(subtitle->iso639_2), + "%s", lang->iso639_2); + hb_list_add(pv->title->list_subtitle, subtitle); } } diff --git a/libhb/dvd.c b/libhb/dvd.c index 1cca5b98f..078806d89 100644 --- a/libhb/dvd.c +++ b/libhb/dvd.c @@ -213,31 +213,31 @@ static void add_subtitle( hb_list_t * list_subtitle, int position, switch (lang_extension) { case 2: - strcat( subtitle->lang, " (Caption with bigger size character)" ); + strcat(subtitle->lang, " Large Type"); break; case 3: - strcat( subtitle->lang, " (Caption for Children)" ); + strcat(subtitle->lang, " Children"); break; case 5: - strcat( subtitle->lang, " (Closed Caption)" ); + strcat(subtitle->lang, " Closed Caption"); break; case 6: - strcat( subtitle->lang, " (Closed Caption with bigger size character)" ); + strcat(subtitle->lang, " Closed Caption, Large Type"); break; case 7: - strcat( subtitle->lang, " (Closed Caption for Children)" ); + strcat(subtitle->lang, " Closed Caption, Children"); break; case 9: - strcat( subtitle->lang, " (Forced Caption)" ); + strcat(subtitle->lang, " Forced"); break; case 13: - strcat( subtitle->lang, " (Director's Commentary)" ); + strcat(subtitle->lang, " Director's Commentary"); break; case 14: - strcat( subtitle->lang, " (Director's Commentary with bigger size character)" ); + strcat(subtitle->lang, " Director's Commentary, Large Type"); break; case 15: - strcat( subtitle->lang, " (Director's Commentary for Children)" ); + strcat(subtitle->lang, " Director's Commentary, Children"); default: break; } @@ -245,21 +245,24 @@ static void add_subtitle( hb_list_t * list_subtitle, int position, switch (style) { case HB_VOBSUB_STYLE_4_3: - strcat( subtitle->lang, " (4:3)" ); + strcat(subtitle->lang, " (4:3)"); break; case HB_VOBSUB_STYLE_WIDE: - strcat( subtitle->lang, " (Wide Screen)" ); + strcat(subtitle->lang, " (Wide Screen)"); break; case HB_VOBSUB_STYLE_LETTERBOX: - strcat( subtitle->lang, " (Letterbox)" ); + strcat(subtitle->lang, " (Letterbox)"); break; case HB_VOBSUB_STYLE_PANSCAN: - strcat( subtitle->lang, " (Pan & Scan)" ); + strcat(subtitle->lang, " (Pan & Scan)"); break; } + strcat(subtitle->lang, " ["); + strcat(subtitle->lang, hb_subsource_name(subtitle->source)); + strcat(subtitle->lang, "]"); - hb_log( "scan: id=0x%x, lang=%s, 3cc=%s ext=%i", subtitle->id, - subtitle->lang, subtitle->iso639_2, lang_extension ); + hb_log("scan: id=0x%x, lang=%s, 3cc=%s ext=%i", subtitle->id, + subtitle->lang, subtitle->iso639_2, lang_extension); hb_list_add(list_subtitle, subtitle); } diff --git a/libhb/dvdnav.c b/libhb/dvdnav.c index ed7dd26c7..4a1cbfb57 100644 --- a/libhb/dvdnav.c +++ b/libhb/dvdnav.c @@ -357,31 +357,31 @@ static void add_subtitle( hb_list_t * list_subtitle, int position, switch (lang_extension) { case 2: - strcat( subtitle->lang, " (Caption with bigger size character)" ); + strcat(subtitle->lang, " Large Type"); break; case 3: - strcat( subtitle->lang, " (Caption for Children)" ); + strcat(subtitle->lang, " Children"); break; case 5: - strcat( subtitle->lang, " (Closed Caption)" ); + strcat(subtitle->lang, " Closed Caption"); break; case 6: - strcat( subtitle->lang, " (Closed Caption with bigger size character)" ); + strcat(subtitle->lang, " Closed Caption, Large Type"); break; case 7: - strcat( subtitle->lang, " (Closed Caption for Children)" ); + strcat(subtitle->lang, " Closed Caption, Children"); break; case 9: - strcat( subtitle->lang, " (Forced Caption)" ); + strcat(subtitle->lang, " Forced"); break; case 13: - strcat( subtitle->lang, " (Director's Commentary)" ); + strcat(subtitle->lang, " Director's Commentary"); break; case 14: - strcat( subtitle->lang, " (Director's Commentary with bigger size character)" ); + strcat(subtitle->lang, " Director's Commentary, Large Type"); break; case 15: - strcat( subtitle->lang, " (Director's Commentary for Children)" ); + strcat(subtitle->lang, " Director's Commentary, Children"); default: break; } @@ -389,21 +389,24 @@ static void add_subtitle( hb_list_t * list_subtitle, int position, switch (style) { case HB_VOBSUB_STYLE_4_3: - strcat( subtitle->lang, " (4:3)" ); + strcat(subtitle->lang, " (4:3)"); break; case HB_VOBSUB_STYLE_WIDE: - strcat( subtitle->lang, " (Wide Screen)" ); + strcat(subtitle->lang, " (Wide Screen)"); break; case HB_VOBSUB_STYLE_LETTERBOX: - strcat( subtitle->lang, " (Letterbox)" ); + strcat(subtitle->lang, " (Letterbox)"); break; case HB_VOBSUB_STYLE_PANSCAN: - strcat( subtitle->lang, " (Pan & Scan)" ); + strcat(subtitle->lang, " (Pan & Scan)"); break; } + strcat(subtitle->lang, " ["); + strcat(subtitle->lang, hb_subsource_name(subtitle->source)); + strcat(subtitle->lang, "]"); - hb_log( "scan: id=0x%x, lang=%s, 3cc=%s ext=%i", subtitle->id, - subtitle->lang, subtitle->iso639_2, lang_extension ); + hb_log("scan: id=0x%x, lang=%s, 3cc=%s ext=%i", subtitle->id, + subtitle->lang, subtitle->iso639_2, lang_extension); hb_list_add(list_subtitle, subtitle); } diff --git a/libhb/stream.c b/libhb/stream.c index 69af167b7..baa53018f 100644 --- a/libhb/stream.c +++ b/libhb/stream.c @@ -1964,11 +1964,6 @@ static void pes_add_subtitle_to_title( subtitle->track = idx; subtitle->id = id; - lang = lang_for_code( pes->lang_code ); - snprintf( subtitle->lang, sizeof( subtitle->lang ), "%s", - strlen(lang->native_name) ? lang->native_name : lang->eng_name); - snprintf( subtitle->iso639_2, sizeof( subtitle->iso639_2 ), "%s", - lang->iso639_2); switch ( pes->codec ) { @@ -1988,6 +1983,12 @@ static void pes_add_subtitle_to_title( free( subtitle ); return; } + lang = lang_for_code( pes->lang_code ); + snprintf(subtitle->lang, sizeof( subtitle->lang ), "%s [%s]", + strlen(lang->native_name) ? lang->native_name : lang->eng_name, + hb_subsource_name(subtitle->source)); + snprintf(subtitle->iso639_2, sizeof( subtitle->iso639_2 ), "%s", + lang->iso639_2); subtitle->reg_desc = stream->reg_desc; subtitle->stream_type = pes->stream_type; subtitle->substream_type = pes->stream_id_ext; @@ -5354,12 +5355,14 @@ static void add_ffmpeg_subtitle( hb_title_t *title, hb_stream_t *stream, int id } AVDictionaryEntry *tag; - iso639_lang_t *language; + iso639_lang_t *lang; tag = av_dict_get( st->metadata, "language", NULL, 0 ); - language = lang_for_code2( tag ? tag->value : "und" ); - strcpy( subtitle->lang, language->eng_name ); - strncpy( subtitle->iso639_2, language->iso639_2, 4 ); + lang = lang_for_code2( tag ? tag->value : "und" ); + snprintf(subtitle->lang, sizeof( subtitle->lang ), "%s [%s]", + strlen(lang->native_name) ? lang->native_name : lang->eng_name, + hb_subsource_name(subtitle->source)); + strncpy(subtitle->iso639_2, lang->iso639_2, 4); // Copy the extradata for the subtitle track if (codecpar->extradata != NULL) @@ -5375,7 +5378,7 @@ static void add_ffmpeg_subtitle( hb_title_t *title, hb_stream_t *stream, int id subtitle->config.default_track = 1; } - subtitle->track = id; + subtitle->track = hb_list_count(title->list_subtitle); hb_list_add(title->list_subtitle, subtitle); } diff --git a/libhb/work.c b/libhb/work.c index 5af53cb5d..1358bc12e 100644 --- a/libhb/work.c +++ b/libhb/work.c @@ -540,29 +540,33 @@ void hb_display_job_info(hb_job_t *job) { if( job->indepth_scan ) { - hb_log( " + subtitle, %s (track %d, id 0x%x) %s [%s]", + hb_log( " + subtitle, %s (track %d, id 0x%x, %s)", subtitle->lang, subtitle->track, subtitle->id, - subtitle->format == PICTURESUB ? "Picture" : "Text", - hb_subsource_name( subtitle->source ) ); + subtitle->format == PICTURESUB ? "Picture" : "Text"); } else if( subtitle->source == SRTSUB ) { /* For SRT, print offset and charset too */ - hb_log( " * subtitle track %d, %s (track %d, id 0x%x) Text [SRT] -> %s%s, offset: %"PRId64", charset: %s", - subtitle->out_track, subtitle->lang, subtitle->track, subtitle->id, - subtitle->config.dest == RENDERSUB ? "Render/Burn-in" : "Passthrough", - subtitle->config.default_track ? ", Default" : "", - subtitle->config.offset, subtitle->config.src_codeset ); + hb_log(" * subtitle track %d, %s (track %d, id 0x%x, Text) -> " + "%s%s, offset: %"PRId64", charset: %s", + subtitle->out_track, subtitle->lang, subtitle->track, + subtitle->id, + subtitle->config.dest == RENDERSUB ? "Render/Burn-in" + : "Passthrough", + subtitle->config.default_track ? ", Default" : "", + subtitle->config.offset, subtitle->config.src_codeset); } else { - hb_log( " * subtitle track %d, %s (track %d, id 0x%x) %s [%s] -> %s%s%s", - subtitle->out_track, subtitle->lang, subtitle->track, subtitle->id, - subtitle->format == PICTURESUB ? "Picture" : "Text", - hb_subsource_name( subtitle->source ), - subtitle->config.dest == RENDERSUB ? "Render/Burn-in" : "Passthrough", - subtitle->config.force ? ", Forced Only" : "", - subtitle->config.default_track ? ", Default" : "" ); + hb_log(" * subtitle track %d, %s (track %d, id 0x%x, %s) -> " + "%s%s%s", + subtitle->out_track, subtitle->lang, subtitle->track, + subtitle->id, + subtitle->format == PICTURESUB ? "Picture" : "Text", + subtitle->config.dest == RENDERSUB ? "Render/Burn-in" + : "Passthrough", + subtitle->config.force ? ", Forced Only" : "", + subtitle->config.default_track ? ", Default" : "" ); } } } |