X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=gtk%2Fsrc%2Fhb-backend.c;h=8f1ac95fb76b06a0c77e8ec3f621b61b1ac854ec;hb=9155051f96ff6f923fe2137e0730a300e8ce1404;hp=abe02b8e77114dcc43ad4543ed847327b992d354;hpb=dd87c833743e8067372b810a97799ababbc9bcfc;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c index abe02b8e..8f1ac95f 100644 --- a/gtk/src/hb-backend.c +++ b/gtk/src/hb-backend.c @@ -1149,6 +1149,37 @@ ghb_subtitle_track_source(signal_user_data_t *ud, gint track) } const char* +ghb_subtitle_source_name(gint source) +{ + const gchar * name = "Unknown"; + switch (source) + { + case VOBSUB: + name = "VOBSUB"; + break; + case TX3GSUB: + name = "TX3G"; + break; + case UTF8SUB: + name = "UTF8"; + break; + case CC708SUB: + case CC608SUB: + name = "CC"; + break; + case SRTSUB: + name = "SRT"; + break; + case SSASUB: + name = "SSA"; + break; + default: + break; + } + return name; +} + +const char* ghb_subtitle_track_source_name(signal_user_data_t *ud, gint track) { gint titleindex; @@ -1186,21 +1217,7 @@ ghb_subtitle_track_source_name(signal_user_data_t *ud, gint track) sub = hb_list_item( title->list_subtitle, track); if (sub != NULL) { - switch (sub->source) - { - case VOBSUB: - name = "Bitmap"; - break; - case CC708SUB: - case CC608SUB: - name = "Text"; - break; - case SRTSUB: - name = "SRT"; - break; - default: - break; - } + name = ghb_subtitle_source_name(sub->source); } done: @@ -1393,7 +1410,7 @@ ghb_grey_combo_options(GtkBuilder *builder) gboolean allow_dolby = TRUE; gboolean allow_dpl2 = TRUE; gboolean allow_6ch = TRUE; - allow_mono = acodec & ~HB_ACODEC_LAME; + allow_mono = TRUE; allow_6ch = acodec & ~HB_ACODEC_LAME; if (audio) { @@ -1451,7 +1468,7 @@ ghb_get_best_mix(gint titleindex, gint track, gint acodec, gint mix) audio = get_hb_audio(titleindex, track); if (audio) { - allow_mono = (acodec & ~HB_ACODEC_LAME); + allow_mono = TRUE; gint layout = audio->in.channel_layout & HB_INPUT_CH_LAYOUT_DISCRETE_NO_LFE_MASK; allow_stereo = ((layout == HB_INPUT_CH_LAYOUT_MONO && !allow_mono) || layout >= HB_INPUT_CH_LAYOUT_STEREO); @@ -1966,7 +1983,18 @@ subtitle_track_opts_set(GtkBuilder *builder, const gchar *name, gint titleindex) subtitle = (hb_subtitle_t *)hb_list_item(title->list_subtitle, ii); // Skip subtitles that must be burned if there is already // a burned subtitle in the list - options[ii] = g_strdup_printf("%d - %s", ii+1, subtitle->lang); +#if 0 + if (subtitle->source == VOBSUB) + { + options[ii] = g_strdup_printf("%d - %s", ii+1, subtitle->lang); + } + else +#endif + { + options[ii] = g_strdup_printf("%d - %s (%s)", ii+1, + subtitle->lang, + ghb_subtitle_source_name(subtitle->source)); + } subtitle_opts.map[ii+1].option = options[ii]; subtitle_opts.map[ii+1].shortOpt = index_str[ii]; subtitle_opts.map[ii+1].ivalue = ii; @@ -2017,21 +2045,23 @@ ghb_longest_title() hb_title_t * title; gint ii; gint count = 0; - guint64 longest = 0; gint titleindex = 0; + gint feature; g_debug("ghb_longest_title ()\n"); if (h_scan == NULL) return 0; list = hb_get_titles( h_scan ); count = hb_list_count( list ); if (count > 100) count = 100; + if (count < 1) return 0; + title = (hb_title_t*)hb_list_item(list, 0); + feature = title->job->feature; for (ii = 0; ii < count; ii++) { title = (hb_title_t*)hb_list_item(list, ii); - if (title->duration > longest) + if (title->index == feature) { - titleindex = ii; - longest = title->duration; + return ii; } } return titleindex; @@ -2380,7 +2410,7 @@ ghb_find_subtitle_track( continue; subtitle = (hb_subtitle_t*)hb_list_item( title->list_subtitle, ii ); - if (((burn || force) && (subtitle->source == VOBSUB)) && + if ((!(burn || force) || (subtitle->source == VOBSUB)) && ((strcmp(lang, subtitle->iso639_2) == 0) || (strcmp(lang, "und") == 0))) { @@ -2424,7 +2454,7 @@ small_opts_set(GtkBuilder *builder, const gchar *name, combo_opts_t *opts) gint ii; gchar *str; - g_debug("generic_opts_set ()\n"); + g_debug("small_opts_set ()\n"); if (name == NULL || opts == NULL) return; store = get_combo_box_store(builder, name); gtk_list_store_clear(store); @@ -3858,7 +3888,6 @@ ghb_validate_subtitles(signal_user_data_t *ud) titleindex = ghb_settings_combo_int(ud->settings, "title"); title = hb_list_item( list, titleindex ); if (title == NULL) return FALSE; - gint mux = ghb_settings_combo_int(ud->settings, "FileFormat"); const GValue *slist, *settings; gint count, ii, source; @@ -3891,23 +3920,6 @@ ghb_validate_subtitles(signal_user_data_t *ud) { one_burned = TRUE; } - if (!burned && mux == HB_MUX_MP4 && source == VOBSUB) - { - // MP4 can only handle burned vobsubs. make sure there isn't - // already something burned in the list - message = g_strdup_printf( - "Your chosen container does not support soft bitmap subtitles.\n\n" - "You should change your subtitle selections.\n" - "If you continue, some subtitles will be lost."); - if (!ghb_message_dialog(GTK_MESSAGE_WARNING, message, - "Cancel", "Continue")) - { - g_free(message); - return FALSE; - } - g_free(message); - break; - } if (source == SRTSUB) { gchar *filename; @@ -4095,7 +4107,7 @@ ghb_validate_audio(signal_user_data_t *ud) gboolean allow_dolby = TRUE; gboolean allow_dpl2 = TRUE; gboolean allow_6ch = TRUE; - allow_mono = (codec & ~HB_ACODEC_LAME); + allow_mono = TRUE; gint layout = taudio->in.channel_layout & HB_INPUT_CH_LAYOUT_DISCRETE_NO_LFE_MASK; allow_stereo = ((layout == HB_INPUT_CH_LAYOUT_MONO && !allow_mono) || layout >= HB_INPUT_CH_LAYOUT_STEREO); @@ -4619,15 +4631,10 @@ add_job(hb_handle_t *h, GValue *js, gint unique_id, gint titleindex) subtitle = ghb_settings_get_int(ssettings, "SubtitleTrack"); if (subtitle == -1) { - if (!burned && job->mux == HB_MUX_MKV) + if (!burned) { job->select_subtitle_config.dest = PASSTHRUSUB; } - else if (!burned && job->mux == HB_MUX_MP4) - { - // Skip any non-burned vobsubs when output is mp4 - continue; - } else if (burned) { // Only allow one subtitle to be burned into the video @@ -4650,17 +4657,10 @@ add_job(hb_handle_t *h, GValue *js, gint unique_id, gint titleindex) if (subt != NULL) { sub_config = subt->config; - if (!burned && job->mux == HB_MUX_MKV && - subt->format == PICTURESUB) + if (!burned && subt->format == PICTURESUB) { sub_config.dest = PASSTHRUSUB; } - else if (!burned && job->mux == HB_MUX_MP4 && - subt->format == PICTURESUB) - { - // Skip any non-burned vobsubs when output is mp4 - continue; - } else if ( burned && subt->format == PICTURESUB ) { // Only allow one subtitle to be burned into the video