X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=gtk%2Fsrc%2Fhb-backend.c;h=7ac71720b3a5d4dd4ee08303cf679bc5cd61b5c2;hb=80330e859f794e9ae218d54260c70e961f1af204;hp=bf2ff7b944707b07a9596632f033c0a445273d07;hpb=701a385b2d3ad4c95d3d16d62212fbc9078ac2de;p=handbrake-jp%2Fhandbrake-jp-git.git
diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c
index bf2ff7b9..7ac71720 100644
--- a/gtk/src/hb-backend.c
+++ b/gtk/src/hb-backend.c
@@ -1494,7 +1494,7 @@ init_combo_box(GtkBuilder *builder, const gchar *name)
cell = GTK_CELL_RENDERER(gtk_cell_renderer_text_new());
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), cell, TRUE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), cell,
- "text", 0, "sensitive", 1, NULL);
+ "markup", 0, "sensitive", 1, NULL);
}
else
{ // Combo box entry
@@ -1508,6 +1508,7 @@ audio_samplerate_opts_set(GtkBuilder *builder, const gchar *name, hb_rate_t *rat
GtkTreeIter iter;
GtkListStore *store;
gint ii;
+ gchar *str;
g_debug("audio_samplerate_opts_set ()\n");
store = get_combo_box_store(builder, name);
@@ -1515,7 +1516,7 @@ audio_samplerate_opts_set(GtkBuilder *builder, const gchar *name, hb_rate_t *rat
// Add an item for "Same As Source"
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
- 0, "Same as source",
+ 0, "Same as source",
1, TRUE,
2, "source",
3, 0.0,
@@ -1524,13 +1525,15 @@ audio_samplerate_opts_set(GtkBuilder *builder, const gchar *name, hb_rate_t *rat
for (ii = 0; ii < count; ii++)
{
gtk_list_store_append(store, &iter);
+ str = g_strdup_printf("%s", rates[ii].string);
gtk_list_store_set(store, &iter,
- 0, rates[ii].string,
+ 0, str,
1, TRUE,
2, rates[ii].string,
3, (gdouble)rates[ii].rate,
4, rates[ii].string,
-1);
+ g_free(str);
}
}
@@ -1588,13 +1591,14 @@ mix_opts_set(GtkBuilder *builder, const gchar *name)
GtkTreeIter iter;
GtkListStore *store;
gint ii;
+ gchar *str;
g_debug("mix_opts_set ()\n");
store = get_combo_box_store(builder, name);
gtk_list_store_clear(store);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
- 0, "None",
+ 0, "None",
1, TRUE,
2, "none",
3, 0.0,
@@ -1603,13 +1607,16 @@ mix_opts_set(GtkBuilder *builder, const gchar *name)
for (ii = 0; ii < hb_audio_mixdowns_count; ii++)
{
gtk_list_store_append(store, &iter);
+ str = g_strdup_printf("%s",
+ hb_audio_mixdowns[ii].human_readable_name);
gtk_list_store_set(store, &iter,
- 0, hb_audio_mixdowns[ii].human_readable_name,
+ 0, str,
1, TRUE,
2, hb_audio_mixdowns[ii].short_name,
3, (gdouble)hb_audio_mixdowns[ii].amixdown,
4, hb_audio_mixdowns[ii].internal_name,
-1);
+ g_free(str);
}
}
@@ -1781,6 +1788,7 @@ audio_track_opts_set(GtkBuilder *builder, const gchar *name, gint titleindex)
hb_audio_config_t * audio;
gint ii;
gint count = 0;
+ gchar *str;
g_debug("audio_track_opts_set ()\n");
store = get_combo_box_store(builder, name);
@@ -1811,7 +1819,7 @@ audio_track_opts_set(GtkBuilder *builder, const gchar *name, gint titleindex)
// No audio. set some default
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
- 0, "No Audio",
+ 0, "No Audio",
1, TRUE,
2, "none",
3, -1.0,
@@ -1828,13 +1836,15 @@ audio_track_opts_set(GtkBuilder *builder, const gchar *name, gint titleindex)
{
audio = (hb_audio_config_t *) hb_list_audio_config_item( title->list_audio, ii );
gtk_list_store_append(store, &iter);
+ str = g_strdup_printf("%s", audio->lang.description);
gtk_list_store_set(store, &iter,
- 0, audio->lang.description,
+ 0, str,
1, TRUE,
2, index_str[ii],
3, (gdouble)ii,
4, index_str[ii],
-1);
+ g_free(str);
audio_track_opts.map[ii].option = audio->lang.description,
audio_track_opts.map[ii].shortOpt = index_str[ii];
audio_track_opts.map[ii].ivalue = ii;
@@ -2283,6 +2293,33 @@ generic_opts_set(GtkBuilder *builder, const gchar *name, combo_opts_t *opts)
}
}
+static void
+small_opts_set(GtkBuilder *builder, const gchar *name, combo_opts_t *opts)
+{
+ GtkTreeIter iter;
+ GtkListStore *store;
+ gint ii;
+ gchar *str;
+
+ g_debug("generic_opts_set ()\n");
+ if (name == NULL || opts == NULL) return;
+ store = get_combo_box_store(builder, name);
+ gtk_list_store_clear(store);
+ for (ii = 0; ii < opts->count; ii++)
+ {
+ gtk_list_store_append(store, &iter);
+ str = g_strdup_printf("%s", opts->map[ii].option);
+ gtk_list_store_set(store, &iter,
+ 0, str,
+ 1, TRUE,
+ 2, opts->map[ii].shortOpt,
+ 3, opts->map[ii].ivalue,
+ 4, opts->map[ii].svalue,
+ -1);
+ g_free(str);
+ }
+}
+
combo_opts_t*
find_combo_table(const gchar *name)
{
@@ -2454,7 +2491,7 @@ ghb_update_ui_combo_box(
generic_opts_set(ud->builder, "PictureDecomb", &decomb_opts);
generic_opts_set(ud->builder, "PictureDenoise", &denoise_opts);
generic_opts_set(ud->builder, "VideoEncoder", &vcodec_opts);
- generic_opts_set(ud->builder, "AudioEncoder", &acodec_opts);
+ small_opts_set(ud->builder, "AudioEncoder", &acodec_opts);
generic_opts_set(ud->builder, "x264_direct", &direct_opts);
generic_opts_set(ud->builder, "x264_b_adapt", &badapt_opts);
generic_opts_set(ud->builder, "x264_me", &me_opts);
@@ -2619,14 +2656,14 @@ audio_bitrate_opts_add(GtkBuilder *builder, const gchar *name, gint rate)
GtkListStore *store;
gchar *str;
- g_debug("audio_rate_opts_add ()\n");
+ g_debug("audio_bitrate_opts_add ()\n");
if (rate < 8) return;
store = get_combo_box_store(builder, name);
if (!find_combo_item_by_int(GTK_TREE_MODEL(store), rate, &iter))
{
- str = g_strdup_printf ("%d", rate);
+ str = g_strdup_printf ("%d", rate);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
0, str,
@@ -2640,7 +2677,11 @@ audio_bitrate_opts_add(GtkBuilder *builder, const gchar *name, gint rate)
}
static void
-audio_bitrate_opts_clean(GtkBuilder *builder, const gchar *name, gint last_rate)
+audio_bitrate_opts_clean(
+ GtkBuilder *builder,
+ const gchar *name,
+ gint first_rate,
+ gint last_rate)
{
GtkTreeIter iter;
GtkListStore *store;
@@ -2648,6 +2689,7 @@ audio_bitrate_opts_clean(GtkBuilder *builder, const gchar *name, gint last_rate)
gboolean done = FALSE;
gint ii = 0;
guint last = (guint)last_rate;
+ guint first = (guint)first_rate;
g_debug("audio_bitrate_opts_clean ()\n");
store = get_combo_box_store(builder, name);
@@ -2661,7 +2703,7 @@ audio_bitrate_opts_clean(GtkBuilder *builder, const gchar *name, gint last_rate)
{
done = !gtk_list_store_remove(store, &iter);
}
- else if (ivalue > last)
+ else if (ivalue < first || ivalue > last)
{
ii++;
gtk_list_store_set(store, &iter, 1, FALSE, -1);
@@ -2683,6 +2725,7 @@ audio_bitrate_opts_set(GtkBuilder *builder, const gchar *name)
GtkTreeIter iter;
GtkListStore *store;
gint ii;
+ gchar *str;
g_debug("audio_bitrate_opts_set ()\n");
store = get_combo_box_store(builder, name);
@@ -2690,13 +2733,16 @@ audio_bitrate_opts_set(GtkBuilder *builder, const gchar *name)
for (ii = 0; ii < hb_audio_bitrates_count; ii++)
{
gtk_list_store_append(store, &iter);
+ str = g_strdup_printf ("%s",
+ hb_audio_bitrates[ii].string);
gtk_list_store_set(store, &iter,
- 0, hb_audio_bitrates[ii].string,
+ 0, str,
1, TRUE,
2, hb_audio_bitrates[ii].string,
3, (gdouble)hb_audio_bitrates[ii].rate,
4, hb_audio_bitrates[ii].string,
-1);
+ g_free(str);
}
}
@@ -2707,9 +2753,12 @@ ghb_set_passthru_bitrate_opts(GtkBuilder *builder, gint bitrate)
}
void
-ghb_set_default_bitrate_opts(GtkBuilder *builder, gint last_rate)
+ghb_set_default_bitrate_opts(
+ GtkBuilder *builder,
+ gint first_rate,
+ gint last_rate)
{
- audio_bitrate_opts_clean(builder, "AudioBitrate", last_rate);
+ audio_bitrate_opts_clean(builder, "AudioBitrate", first_rate, last_rate);
}
static ghb_status_t hb_status;
@@ -3114,7 +3163,12 @@ ghb_set_scale(signal_user_data_t *ud, gint mode)
if (busy) return;
busy = TRUE;
-
+ if (!ud->dont_clear_presets && (keep_width || keep_height))
+ {
+ ghb_settings_set_int(ud->settings, "PictureWidth", 0);
+ ghb_settings_set_int(ud->settings, "PictureHeight", 0);
+ }
+
// First configure widgets
mod = ghb_settings_combo_int(ud->settings, "PictureModulus");
pic_par = ghb_settings_combo_int(ud->settings, "PicturePAR");
@@ -3250,7 +3304,7 @@ ghb_set_scale(signal_user_data_t *ud, gint mode)
job->anamorphic.dar_height = 0;
if (keep_height && pic_par == 2)
- width = ((double)height * crop_width / crop_height) + 0.5;
+ width = ((double)height * crop_width / crop_height) + mod / 2;
job->width = width;
job->height = height;
job->maxWidth = max_width;
@@ -3501,7 +3555,7 @@ ghb_validate_filters(signal_user_data_t *ud)
if (!decomb_deint && index == 1)
{
str = ghb_settings_get_string(ud->settings, "PictureDeinterlaceCustom");
- if (!ghb_validate_filter_string(str, 4))
+ if (!ghb_validate_filter_string(str, -1))
{
message = g_strdup_printf(
"Invalid Deinterlace Settings:\n\n%s\n",
@@ -3518,7 +3572,7 @@ ghb_validate_filters(signal_user_data_t *ud)
if (index == 1)
{
str = ghb_settings_get_string(ud->settings, "PictureDetelecineCustom");
- if (!ghb_validate_filter_string(str, 6))
+ if (!ghb_validate_filter_string(str, -1))
{
message = g_strdup_printf(
"Invalid Detelecine Settings:\n\n%s\n",
@@ -3535,7 +3589,7 @@ ghb_validate_filters(signal_user_data_t *ud)
if (decomb_deint && index == 1)
{
str = ghb_settings_get_string(ud->settings, "PictureDecombCustom");
- if (!ghb_validate_filter_string(str, 15))
+ if (!ghb_validate_filter_string(str, -1))
{
message = g_strdup_printf(
"Invalid Decomb Settings:\n\n%s\n",
@@ -3552,7 +3606,7 @@ ghb_validate_filters(signal_user_data_t *ud)
if (index == 1)
{
str = ghb_settings_get_string(ud->settings, "PictureDenoiseCustom");
- if (!ghb_validate_filter_string(str, 4))
+ if (!ghb_validate_filter_string(str, -1))
{
message = g_strdup_printf(
"Invalid Denoise Settings:\n\n%s\n",
@@ -4309,7 +4363,6 @@ add_job(hb_handle_t *h, GValue *js, gint unique_id, gint titleindex)
dest_str = ghb_settings_get_string(js, "destination");
job->file = dest_str;
- job->crf = ghb_settings_get_boolean(js, "constant_rate_factor");
const GValue *subtitle_list;
gint subtitle;