static const GValue* preset_dict_get_value(GValue *dict, const gchar *key);
static void store_plist(GValue *plist, const gchar *name);
static void store_presets(void);
+static void store_prefs(void);
// This only handle limited depth
GtkTreePath*
ghb_dict_insert(pref_dict, g_strdup(key), ghb_value_dup(value));
}
}
- store_plist(prefsPlist, "preferences");
+ store_prefs();
prefs_modified = FALSE;
}
if (ghb_value_cmp(value, value2) != 0)
{
ghb_dict_insert(dict, g_strdup(key), ghb_value_dup(value));
- store_plist(prefsPlist, "preferences");
+ store_prefs();
prefs_modified = TRUE;
}
}
if (ghb_value_cmp(value, value2) != 0)
{
ghb_dict_insert(dict, g_strdup(key), ghb_value_dup(value));
- store_plist(prefsPlist, "preferences");
+ store_prefs();
prefs_modified = FALSE;
}
}
{
if (prefs_modified)
{
- store_plist(prefsPlist, "preferences");
+ store_prefs();
prefs_modified = FALSE;
}
}
}
ghb_dict_insert(dict,
g_strdup("destination_dir"), ghb_value_dup(ghb_string_value(dir)));
- store_plist(prefsPlist, "preferences");
+ store_prefs();
}
// Read legacy default_preset preference and update accordingly
path = ghb_dict_lookup(dict, "default_preset");
g_free(indices);
}
ghb_dict_remove(dict, "default_preset");
- store_plist(prefsPlist, "preferences");
+ store_prefs();
}
}
static value_map_t vcodec_xlat[] =
{
{"MPEG-4 (FFmpeg)", "ffmpeg"},
- {"MPEG-4 (XviD)", "xvid"},
+ {"MPEG-4 (XviD)", "ffmpeg"},
{"H.264 (x264)", "x264"},
{"VP3 (Theora)", "theora"},
{NULL,NULL}
{"MP4 file", "mp4"},
{"M4V file", "m4v"},
{"MKV file", "mkv"},
- {"AVI file", "avi"},
- {"OGM file", "ogm"},
+ {"AVI file", "mkv"},
+ {"OGM file", "mkv"},
{NULL, NULL}
};
{
case 0:
{
- ghb_dict_insert(dict, g_strdup("anamorphic"),
- ghb_boolean_value_new(FALSE));
- if (ghb_dict_lookup(dict, "ModDimensions") == NULL)
- ghb_dict_insert(dict, g_strdup("ModDimensions"),
- ghb_boolean_value_new(TRUE));
+ if (ghb_dict_lookup(dict, "PictureAlignment") == NULL)
+ ghb_dict_insert(dict, g_strdup("PictureAlignment"),
+ ghb_int_value_new(16));
} break;
case 1:
{
- ghb_dict_insert(dict, g_strdup("anamorphic"),
- ghb_boolean_value_new(TRUE));
- ghb_dict_insert(dict, g_strdup("ModDimensions"),
- ghb_boolean_value_new(FALSE));
+ ghb_dict_insert(dict, g_strdup("PictureAlignment"),
+ ghb_int_value_new(1));
} break;
case 2:
{
- ghb_dict_insert(dict, g_strdup("anamorphic"),
- ghb_boolean_value_new(TRUE));
- ghb_dict_insert(dict, g_strdup("ModDimensions"),
- ghb_boolean_value_new(TRUE));
+ if (ghb_dict_lookup(dict, "PictureAlignment") == NULL)
+ ghb_dict_insert(dict, g_strdup("PictureAlignment"),
+ ghb_int_value_new(16));
} break;
default:
{
- ghb_dict_insert(dict, g_strdup("anamorphic"),
- ghb_boolean_value_new(TRUE));
- ghb_dict_insert(dict, g_strdup("ModDimensions"),
- ghb_boolean_value_new(TRUE));
+ if (ghb_dict_lookup(dict, "PictureAlignment") == NULL)
+ ghb_dict_insert(dict, g_strdup("PictureAlignment"),
+ ghb_int_value_new(16));
} break;
}
// VideoQualityType/0/1/2 - vquality_type_/target/bitrate/constant
static void
export_xlat_preset(GValue *dict)
{
- gboolean ana, round, autoscale, target, br, constant;
+ gboolean autoscale, target, br, constant;
g_debug("export_xlat_prest ()");
autoscale = ghb_value_boolean(preset_dict_get_value(dict, "autoscale"));
- ana = ghb_value_boolean(preset_dict_get_value(dict, "anamorphic"));
- round = ghb_value_boolean(preset_dict_get_value(dict, "ModDimensions"));
target = ghb_value_boolean(
preset_dict_get_value(dict, "vquality_type_target"));
br = ghb_value_boolean(
ghb_dict_insert(dict, g_strdup("UsesPictureSettings"),
ghb_int_value_new(1));
- if (ana)
- {
- if (round)
- ghb_dict_insert(dict, g_strdup("PicturePAR"),
- ghb_int_value_new(2));
- else
- ghb_dict_insert(dict, g_strdup("PicturePAR"),
- ghb_int_value_new(1));
- }
- else
- {
- ghb_dict_insert(dict, g_strdup("PicturePAR"),
- ghb_int_value_new(0));
- }
// VideoQualityType/0/1/2 - vquality_type_/target/bitrate/constant
if (target)
{
}
ghb_dict_remove(dict, "UsesMaxPictureSettings");
ghb_dict_remove(dict, "autoscale");
- ghb_dict_remove(dict, "anamorphic");
ghb_dict_remove(dict, "vquality_type_target");
ghb_dict_remove(dict, "vquality_type_bitrate");
ghb_dict_remove(dict, "vquality_type_constant");
}
}
+static guint prefs_timeout_id = 0;
+
+static gboolean
+delayed_store_prefs(gpointer data)
+{
+ store_plist(prefsPlist, "preferences");
+ prefs_timeout_id = 0;
+ return FALSE;
+}
+
static void
store_presets()
{
ghb_value_free(export);
}
+static void
+store_prefs(void)
+{
+ if (prefs_timeout_id != 0)
+ {
+ GMainContext *mc;
+ GSource *source;
+
+ mc = g_main_context_default();
+ source = g_main_context_find_source_by_id(mc, prefs_timeout_id);
+ if (source != NULL)
+ g_source_destroy(source);
+ }
+ prefs_timeout_id = g_timeout_add_seconds(1, (GSourceFunc)delayed_store_prefs, NULL);
+}
+
void
ghb_presets_reload(signal_user_data_t *ud)
{
ghb_ui_update(ud, "scale_width",
ghb_int64_value(tinfo->width - tinfo->crop[2] - tinfo->crop[3]));
// If anamorphic or keep_aspect, the hight will be automatically calculated
- gboolean keep_aspect, anamorphic;
+ gboolean keep_aspect;
+ gint pic_par;
keep_aspect = ghb_settings_get_boolean(ud->settings, "PictureKeepRatio");
- anamorphic = ghb_settings_get_boolean(ud->settings, "anamorphic");
- if (!(keep_aspect || anamorphic))
+ pic_par = ghb_settings_combo_int(ud->settings, "PicturePAR");
+ if (!(keep_aspect || pic_par) || pic_par == 3)
{
ghb_ui_update(ud, "scale_height",
ghb_int64_value(tinfo->height - tinfo->crop[0] - tinfo->crop[1]));