gint result;
if (codec == HB_ACODEC_FAAC)
- high = 160;
+ high = 320;
result = high;
for (ii = 0; ii < hb_audio_bitrates_count; ii++)
static hb_handle_t * h_scan = NULL;
static hb_handle_t * h_queue = NULL;
-extern void hb_get_tempory_directory(hb_handle_t *h, char path[512]);
+extern void hb_get_temporary_directory(char path[512]);
gchar*
ghb_get_tmp_dir()
{
char dir[512];
- hb_get_tempory_directory(h_scan, dir);
+ hb_get_temporary_directory(dir);
return g_strdup(dir);
}
{
char dir[512];
- hb_get_tempory_directory(h_scan, dir);
+ hb_get_temporary_directory(dir);
del_tree(dir, !partial);
}
}
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;
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:
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)
{
- allow_mono = allow_mono &&
- (audio->in.codec & (HB_ACODEC_AC3|HB_ACODEC_DCA));
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);
(layout == HB_INPUT_CH_LAYOUT_DOLBY);
allow_dpl2 = (layout == HB_INPUT_CH_LAYOUT_3F2R);
allow_6ch = allow_6ch &&
- (audio->in.codec & (HB_ACODEC_AC3|HB_ACODEC_DCA)) &&
(layout == HB_INPUT_CH_LAYOUT_3F2R) &&
(audio->in.channel_layout & HB_INPUT_CH_LAYOUT_HAS_LFE);
}
{
if (acodec & HB_ACODEC_FAAC)
{
- int maxbr = channels * 80;
+ int maxbr;
+
+ if (channels == 2)
+ maxbr = 320;
+ else
+ maxbr = 768;
if (br > maxbr)
br = maxbr;
}
audio = get_hb_audio(titleindex, track);
if (audio)
{
- allow_mono =
- (audio->in.codec & (HB_ACODEC_AC3|HB_ACODEC_DCA)) &&
- (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);
(layout == HB_INPUT_CH_LAYOUT_DOLBY);
allow_dpl2 = (layout == HB_INPUT_CH_LAYOUT_3F2R);
allow_6ch =
- (audio->in.codec & (HB_ACODEC_AC3|HB_ACODEC_DCA)) &&
(acodec & ~HB_ACODEC_LAME) &&
(layout == HB_INPUT_CH_LAYOUT_3F2R) &&
(audio->in.channel_layout & HB_INPUT_CH_LAYOUT_HAS_LFE);
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;
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;
gint count = 0;
gint track = -1;
gint max_chan = 0;
- gboolean *used;
+ gboolean *used = NULL;
gboolean *passthru_used;
gint try_acodec;
gint passthru_acodec;
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)))
{
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);
{
hb_close(&h_queue);
hb_close(&h_scan);
+ hb_global_close();
}
void ghb_backend_scan_stop()
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;
{
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;
gboolean allow_dolby = TRUE;
gboolean allow_dpl2 = TRUE;
gboolean allow_6ch = TRUE;
- allow_mono =
- (taudio->in.codec & (HB_ACODEC_AC3|HB_ACODEC_DCA)) &&
- (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);
(layout == HB_INPUT_CH_LAYOUT_DOLBY);
allow_dpl2 = (layout == HB_INPUT_CH_LAYOUT_3F2R);
allow_6ch =
- (taudio->in.codec & (HB_ACODEC_AC3|HB_ACODEC_DCA)) &&
(codec & ~HB_ACODEC_LAME) &&
(layout == HB_INPUT_CH_LAYOUT_3F2R) &&
(taudio->in.channel_layout & HB_INPUT_CH_LAYOUT_HAS_LFE);
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
hb_subtitle_config_t sub_config;
subt = (hb_subtitle_t *)hb_list_item(title->list_subtitle, subtitle);
- sub_config = subt->config;
if (subt != NULL)
{
- if (!burned && job->mux == HB_MUX_MKV &&
- subt->format == PICTURESUB)
+ sub_config = subt->config;
+ 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