summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2008-08-23 20:04:38 +0000
committerjstebbins <[email protected]>2008-08-23 20:04:38 +0000
commitddacbf46e7ad7fafacc35eeb6d2dfb5fbb698913 (patch)
treefb2c08b22fcaca8275f063497bc247f6c21712fa
parent158e774a39c3c914dbe1ae2294df57853812b3e8 (diff)
LinGui: allow standard presets to be deleted and provide a button to reload
them. This makes the lingui conform more closely to the macgui. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1650 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r--gtk/src/callbacks.c74
-rw-r--r--gtk/src/ghb.ui19
-rw-r--r--gtk/src/internal_defaults1
-rw-r--r--gtk/src/internal_defaults.h1
-rw-r--r--gtk/src/preset_xlat.c3
-rw-r--r--gtk/src/settings.c226
-rw-r--r--gtk/src/settings.h2
-rwxr-xr-xgtk/src/standard_presets18
8 files changed, 202 insertions, 142 deletions
diff --git a/gtk/src/callbacks.c b/gtk/src/callbacks.c
index fe64e2763..0043aac2a 100644
--- a/gtk/src/callbacks.c
+++ b/gtk/src/callbacks.c
@@ -2013,6 +2013,15 @@ presets_save_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
}
void
+presets_restore_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
+{
+ g_debug("presets_restore_clicked_cb ()\n");
+ // Reload only the standard presets
+ ghb_presets_reload(ud);
+ ghb_presets_list_update(ud);
+}
+
+void
prefs_dialog_cb(GtkWidget *xwidget, signal_user_data_t *ud)
{
GtkWidget *dialog;
@@ -2042,43 +2051,32 @@ presets_remove_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
GtkWidget *dialog;
gtk_tree_model_get(store, &iter, 0, &preset, -1);
- if (!ghb_presets_is_standard(preset))
- {
- dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL,
- GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
- "Confirm deletion of preset %s.", preset);
- response = gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy (dialog);
- if (response == GTK_RESPONSE_YES)
+ dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL,
+ GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
+ "Confirm deletion of preset %s.", preset);
+ response = gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy (dialog);
+ if (response == GTK_RESPONSE_YES)
+ {
+ GtkTreeIter nextIter = iter;
+ gchar *nextPreset = NULL;
+ if (!gtk_tree_model_iter_next(store, &nextIter))
{
- GtkTreeIter nextIter = iter;
- gchar *nextPreset = NULL;
- if (!gtk_tree_model_iter_next(store, &nextIter))
- {
- if (gtk_tree_model_get_iter_first(store, &nextIter))
- {
- gtk_tree_model_get(store, &nextIter, 0, &nextPreset, -1);
- }
- }
- else
+ if (gtk_tree_model_get_iter_first(store, &nextIter))
{
gtk_tree_model_get(store, &nextIter, 0, &nextPreset, -1);
}
- // Remove the selected item
- // First unselect it so that selecting the new item works properly
- gtk_tree_selection_unselect_iter (selection, &iter);
- ghb_presets_remove(ud->settings, preset);
- ghb_presets_list_update(ud);
- ghb_select_preset(ud->builder, nextPreset);
}
- }
- else
- {
- dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL,
- GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,
- "Can not delete standard preset %s.", preset);
- response = gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy (dialog);
+ else
+ {
+ gtk_tree_model_get(store, &nextIter, 0, &nextPreset, -1);
+ }
+ // Remove the selected item
+ // First unselect it so that selecting the new item works properly
+ gtk_tree_selection_unselect_iter (selection, &iter);
+ ghb_presets_remove(ud->settings, preset);
+ ghb_presets_list_update(ud);
+ ghb_select_preset(ud->builder, nextPreset);
}
}
}
@@ -2123,18 +2121,14 @@ presets_list_selection_changed_cb(GtkTreeSelection *selection, signal_user_data_
GtkTreeModel *store;
GtkTreeIter iter;
gchar *preset;
- GtkWidget *widget;
- gboolean sensitive = FALSE;
ghb_title_info_t tinfo;
+ GtkWidget *widget;
g_debug("presets_list_selection_changed_cb ()\n");
+ widget = GHB_WIDGET (ud->builder, "presets_remove");
if (gtk_tree_selection_get_selected(selection, &store, &iter))
{
gtk_tree_model_get(store, &iter, 0, &preset, -1);
- if (!ghb_presets_is_standard(preset))
- {
- sensitive = TRUE;
- }
ud->dont_clear_presets = TRUE;
// Temporarily set the video_quality range to (0,100)
// This is needed so the video_quality value does not get
@@ -2158,13 +2152,13 @@ presets_list_selection_changed_cb(GtkTreeSelection *selection, signal_user_data_
gint vqmin, vqmax;
ghb_vquality_range(ud, &vqmin, &vqmax);
gtk_range_set_range (GTK_RANGE(qp), vqmin, vqmax);
+ gtk_widget_set_sensitive(widget, TRUE);
}
else
{
g_debug("No selection??? Perhaps unselected.\n");
+ gtk_widget_set_sensitive(widget, FALSE);
}
- widget = GHB_WIDGET (ud->builder, "presets_remove");
- gtk_widget_set_sensitive(widget, sensitive);
}
void
diff --git a/gtk/src/ghb.ui b/gtk/src/ghb.ui
index 9128e7ef8..9377dc085 100644
--- a/gtk/src/ghb.ui
+++ b/gtk/src/ghb.ui
@@ -3297,6 +3297,25 @@ no-fast-pskip=0:no-dct-decimate=0:cabac=1</property>
<property name="position">3</property>
</packing>
</child>
+ <child>
+ <object class="GtkButton" id="presets_restore">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip-text" translatable="yes">Reload HandBrakes standard presets</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <signal handler="presets_restore_clicked_cb" name="clicked"/>
+ <child>
+ <object class="GtkImage" id="image7">
+ <property name="visible">True</property>
+ <property name="stock">gtk-refresh</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ </packing>
+ </child>
</object>
</child>
</object>
diff --git a/gtk/src/internal_defaults b/gtk/src/internal_defaults
index 258653dc4..2cc694195 100644
--- a/gtk/src/internal_defaults
+++ b/gtk/src/internal_defaults
@@ -1,4 +1,5 @@
[Presets]
+preset_type=1
preset_description=
subtitle_lang=none
forced_subtitles=enable
diff --git a/gtk/src/internal_defaults.h b/gtk/src/internal_defaults.h
index f1b6b7e51..7751dd2e5 100644
--- a/gtk/src/internal_defaults.h
+++ b/gtk/src/internal_defaults.h
@@ -1,4 +1,5 @@
"[Presets]\n"
+"preset_type=1\n"
"preset_description=\n"
"subtitle_lang=none\n"
"forced_subtitles=enable\n"
diff --git a/gtk/src/preset_xlat.c b/gtk/src/preset_xlat.c
index e393dbe36..c3cd8b993 100644
--- a/gtk/src/preset_xlat.c
+++ b/gtk/src/preset_xlat.c
@@ -76,6 +76,7 @@ start_element(
gchar *settings[] =
{
"preset_description",
+ "preset_type",
"subtitle_lang",
"forced_subtitles",
"source_audio_lang",
@@ -578,7 +579,7 @@ static xlat_t keys[] =
{"PresetDescription", "preset_description"},
{"Subtitles", "subtitle_lang"},
{"Subtitles", "subtitle_lang"},
- {"Type", ""}, // preset type builtin/custom
+ {"Type", "preset_type"}, // preset type builtin/custom
{"UsesMaxPictureSettings", "autoscale"},
{"UsesPictureFilters", ""},
{"UsesPictureSettings", ""},
diff --git a/gtk/src/settings.c b/gtk/src/settings.c
index da43a9877..f42f9f14f 100644
--- a/gtk/src/settings.c
+++ b/gtk/src/settings.c
@@ -872,30 +872,11 @@ typedef struct
GKeyFile *keyFile;
} presets_data_t;
-static GKeyFile *standardKeyFile;
-static GKeyFile *customKeyFile;
+static GKeyFile *presetsKeyFile;
static GKeyFile *internalKeyFile;
static GKeyFile *prefsKeyFile;
static GList *presetsList;
-static gint
-search_group(const gchar *name, gchar **groups)
-{
- gint ii;
-
- //g_debug("search_group\n");
- if (groups == NULL) return -1;
- for (ii = 0; groups[ii] != NULL; ii++)
- {
- //g_debug("%s cmp %s\n", name, groups[ii]);
- if (strcmp(name, groups[ii]) == 0)
- {
- return ii;
- }
- }
- return -1;
-}
-
presets_data_t *
presets_list_search(GList *list, const gchar *name)
{
@@ -1192,9 +1173,9 @@ build_presets_list(GHashTable *settings)
{
GList *link = presetsList;
presets_data_t *data;
- gchar **custom, **standard;
- gsize clength, slength;
- gint ii, jj;
+ gchar **presets;
+ gsize length;
+ gint ii;
g_debug("build_presets_list ()\n");
// First clear out the old presets list
@@ -1210,48 +1191,55 @@ build_presets_list(GHashTable *settings)
presetsList = NULL;
// Now build up the new list
+ // Make standard presets appear before custom in the list
const gchar *def_name = ghb_settings_get_string(settings, "default_preset");
- custom = g_key_file_get_groups(customKeyFile, &clength);
- standard = g_key_file_get_groups(standardKeyFile, &slength);
- if ((slength + clength) <= 0) return;
- jj = 0;
- for (ii = 0; ii < slength; ii++)
- {
- if (search_group(standard[ii], custom) < 0)
- {
+ presets = g_key_file_get_groups(presetsKeyFile, &length);
+ if (length <= 0) return;
+ for (ii = 0; ii < length; ii++)
+ {
+ gint type;
+ GError *err = NULL;
+ type = g_key_file_get_integer(presetsKeyFile, presets[ii], "preset_type", &err);
+ if (!err && type == 0)
+ { // Its a standard preset
gchar *desc;
data = g_malloc(sizeof(presets_data_t));
- data->name = g_strdup(standard[ii]);
- data->keyFile = standardKeyFile;
+ data->name = g_strdup(presets[ii]);
+ data->keyFile = presetsKeyFile;
data->custom = FALSE;
data->defalt = FALSE;
if ((def_name != NULL) && (strcmp(def_name, data->name) == 0))
{
data->defalt = TRUE;
}
- desc = g_key_file_get_string(standardKeyFile, standard[ii], "preset_description", NULL);
+ desc = g_key_file_get_string(presetsKeyFile, presets[ii], "preset_description", NULL);
data->description = desc;
presetsList = g_list_append(presetsList, data);
}
}
- for (ii = 0; ii < clength; ii++)
+ for (ii = 0; ii < length; ii++)
{
- gchar *desc;
- data = g_malloc(sizeof(presets_data_t));
- data->name = g_strdup(custom[ii]);
- data->keyFile = customKeyFile;
- data->custom = TRUE;
- data->defalt = FALSE;
- if ((def_name != NULL) && (strcmp(def_name, data->name) == 0))
- {
- data->defalt = TRUE;
+ gint type;
+ GError *err = NULL;
+ type = g_key_file_get_integer(presetsKeyFile, presets[ii], "preset_type", &err);
+ if (err || type != 0)
+ { // Its a custom preset
+ gchar *desc;
+ data = g_malloc(sizeof(presets_data_t));
+ data->name = g_strdup(presets[ii]);
+ data->keyFile = presetsKeyFile;
+ data->custom = TRUE;
+ data->defalt = FALSE;
+ if ((def_name != NULL) && (strcmp(def_name, data->name) == 0))
+ {
+ data->defalt = TRUE;
+ }
+ desc = g_key_file_get_string(presetsKeyFile, presets[ii], "preset_description", NULL);
+ data->description = desc;
+ presetsList = g_list_append(presetsList, data);
}
- desc = g_key_file_get_string(customKeyFile, custom[ii], "preset_description", NULL);
- data->description = desc;
- presetsList = g_list_append(presetsList, data);
}
- g_strfreev(custom);
- g_strfreev(standard);
+ g_strfreev(presets);
}
static void
@@ -1488,44 +1476,95 @@ ghb_prefs_load(signal_user_data_t *ud)
}
void
-ghb_presets_load(signal_user_data_t *ud)
+ghb_presets_reload(signal_user_data_t *ud)
{
- const gchar *dir;
gchar *config;
- GHashTable *settings = ud->settings;
+ GKeyFile *keyFile;
- g_debug("ghb_presets_load()\n");
- customKeyFile = g_key_file_new();
- standardKeyFile = g_key_file_new();
- dir = g_get_user_config_dir();
- config = g_strdup_printf ("%s/ghb/custom_presets", dir);
- if (g_file_test(config, G_FILE_TEST_IS_REGULAR))
+ g_debug("ghb_presets_reload()\n");
+ keyFile = g_key_file_new();
+
+ config = g_strdup_printf ("./standard_presets");
+ if (!g_file_test(config, G_FILE_TEST_IS_REGULAR))
{
- g_key_file_load_from_file( customKeyFile, config,
- G_KEY_FILE_KEEP_COMMENTS, NULL);
+ g_free(config);
+
+ const gchar* const *dirs;
+ gint ii;
+ dirs = g_get_system_data_dirs();
+ if (dirs != NULL)
+ {
+ for (ii = 0; dirs[ii] != NULL; ii++)
+ {
+ config = g_strdup_printf("%s/ghb/standard_presets", dirs[ii]);
+ if (g_file_test(config, G_FILE_TEST_IS_REGULAR))
+ {
+ break;
+ }
+ g_free(config);
+ config = NULL;
+ }
+ }
}
- g_free(config);
- // Try current dir first. Makes testing prior to installation easier
- if (g_file_test("./standard_presets", G_FILE_TEST_IS_REGULAR))
+ if (config != NULL)
{
- g_key_file_load_from_file( standardKeyFile, "./standard_presets",
+ gchar **groups, **keys;
+ gchar *value;
+ gint ii, jj;
+
+ g_key_file_load_from_file( keyFile, config,
G_KEY_FILE_KEEP_COMMENTS, NULL);
+ // Merge the keyfile contents into our presets
+ groups = g_key_file_get_groups(keyFile, NULL);
+ // First remove any existing groups with the same names
+ for (ii = 0; groups[ii] != NULL; ii++)
+ {
+ g_key_file_remove_group(presetsKeyFile, groups[ii], NULL);
+ }
+ for (ii = 0; groups[ii] != NULL; ii++)
+ {
+ keys = g_key_file_get_keys(keyFile, groups[ii], NULL, NULL);
+ for (jj = 0; keys[jj] != NULL; jj++)
+ {
+ GError *err = NULL;
+ value = g_key_file_get_string(
+ keyFile, groups[ii], keys[jj], &err);
+ if (value && !err)
+ {
+ g_key_file_set_string(
+ presetsKeyFile, groups[ii], keys[jj], value);
+ }
+ if (value) g_free(value);
+ }
+ g_strfreev(keys);
+ }
+ g_strfreev(groups);
}
- else
+ g_key_file_free(keyFile);
+ build_presets_list(ud->settings);
+}
+
+void
+ghb_presets_load(signal_user_data_t *ud)
+{
+ const gchar *dir;
+ gchar *config;
+
+ g_debug("ghb_presets_load()\n");
+ presetsKeyFile = g_key_file_new();
+ dir = g_get_user_config_dir();
+ config = g_strdup_printf ("%s/ghb/presets", dir);
+
+ if (!g_file_test(config, G_FILE_TEST_IS_REGULAR))
{
- // Try users config dir
- config = g_strdup_printf ("%s/ghb/standard_presets", dir);
- if (g_file_test(config, G_FILE_TEST_IS_REGULAR))
+ g_free(config);
+ config = g_strdup_printf ("./standard_presets");
+ if (!g_file_test(config, G_FILE_TEST_IS_REGULAR))
{
- g_key_file_load_from_file( standardKeyFile, config,
- G_KEY_FILE_KEEP_COMMENTS, NULL);
g_free(config);
- }
- else
- {
+
const gchar* const *dirs;
gint ii;
- g_free(config);
dirs = g_get_system_data_dirs();
if (dirs != NULL)
{
@@ -1534,23 +1573,27 @@ ghb_presets_load(signal_user_data_t *ud)
config = g_strdup_printf("%s/ghb/standard_presets", dirs[ii]);
if (g_file_test(config, G_FILE_TEST_IS_REGULAR))
{
- g_key_file_load_from_file( standardKeyFile, config,
- G_KEY_FILE_KEEP_COMMENTS, NULL);
break;
}
g_free(config);
+ config = NULL;
}
}
}
}
- build_presets_list(settings);
+ if (config != NULL)
+ {
+ g_key_file_load_from_file( presetsKeyFile, config,
+ G_KEY_FILE_KEEP_COMMENTS, NULL);
+ }
+ build_presets_list(ud->settings);
}
static void
presets_store()
{
g_debug("presets_store ()\n");
- store_key_file(customKeyFile, "custom_presets");
+ store_key_file(presetsKeyFile, "presets");
}
typedef struct
@@ -1609,7 +1652,7 @@ ghb_settings_save(signal_user_data_t *ud, const gchar *name)
g_debug("ghb_settings_save ()\n");
ski.name = name;
- ski.keyFile = customKeyFile;
+ ski.keyFile = presetsKeyFile;
if (ghb_settings_get_bool(ud->settings, "allow_tweaks"))
{
const gchar *str;
@@ -1621,6 +1664,8 @@ ghb_settings_save(signal_user_data_t *ud, const gchar *name)
ghb_settings_set_string(ud->settings, "denoise", str);
}
ski.autoscale = ghb_settings_get_bool (ud->settings, "autoscale");
+ g_key_file_remove_group(presetsKeyFile, name, NULL);
+ ghb_settings_set_string(ud->settings, "preset_type", "1");
g_hash_table_foreach(ud->settings, store_to_key_file, &ski);
presets_store();
build_presets_list(ud->settings);
@@ -1629,34 +1674,15 @@ ghb_settings_save(signal_user_data_t *ud, const gchar *name)
ud->dont_clear_presets = FALSE;
}
-// Checks to see if the preset is in standard presets
-// I allow standard to be overridden by adding a preset with the
-// same name to the custom list. So to determine if the named
-// preset is standard, I must first check to see if is in the
-// custom list.
-gboolean
-ghb_presets_is_standard(const gchar *name)
-{
- g_debug("ghb_presets_is_standard()\n");
- if (g_key_file_has_group(customKeyFile, name))
- {
- // The preset is in the custom list, so it
- // can not be a standard.
- return FALSE;
- }
- return g_key_file_has_group(standardKeyFile, name);
-}
-
-// This function will not remove presets from the standard preset list.
// Return false if attempt is made.
gboolean
ghb_presets_remove(GHashTable *settings, const gchar *name)
{
g_debug("ghb_presets_remove()\n");
- if (g_key_file_has_group(customKeyFile, name))
+ if (g_key_file_has_group(presetsKeyFile, name))
{
g_debug("\t removing %s\n", name);
- g_key_file_remove_group(customKeyFile, name, NULL);
+ g_key_file_remove_group(presetsKeyFile, name, NULL);
presets_store();
build_presets_list(settings);
return TRUE;
diff --git a/gtk/src/settings.h b/gtk/src/settings.h
index e136a5003..25b9d6310 100644
--- a/gtk/src/settings.h
+++ b/gtk/src/settings.h
@@ -107,13 +107,13 @@ int ghb_ui_update(signal_user_data_t *ud, const gchar *key, const gchar *value);
int ghb_ui_update_int(signal_user_data_t *ud, const gchar *key, gint ivalue);
void ghb_settings_save(signal_user_data_t *ud, const gchar *name);
void ghb_presets_load(signal_user_data_t *ud);
+void ghb_presets_reload(signal_user_data_t *ud);
void ghb_set_preset(signal_user_data_t *ud, const gchar *name);
void ghb_update_from_preset( signal_user_data_t *ud,
const gchar *name, const gchar *key);
gchar** ghb_presets_get_names();
gchar** ghb_presets_get_descriptions();
const gchar* ghb_presets_get_name(gint index);
-gboolean ghb_presets_is_standard(const gchar *name);
gboolean ghb_presets_remove(GHashTable *settings, const gchar *name);
void ghb_presets_revert(signal_user_data_t *ud, const gchar *name);
GdkColor* ghb_presets_color(gboolean modified);
diff --git a/gtk/src/standard_presets b/gtk/src/standard_presets
index b0056bc76..0a8e641f3 100755
--- a/gtk/src/standard_presets
+++ b/gtk/src/standard_presets
@@ -1,6 +1,7 @@
[Animation]
preset_description=HandBrake's settings for cartoons, anime, and CGI.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=160
@@ -34,6 +35,7 @@ x264_options=ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid
[AppleTV]
preset_description=HandBrake's settings for the AppleTV, including Dolby Digital 5.1 AC3 sound. Provides a good balance between quality and file size, and optimizes performance.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac,ac3
pref_audio_bitrate=160,160
@@ -66,6 +68,7 @@ x264_options=bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:trellis=1:cabac=0
[Bedlam]
preset_description=HandBrake's settings maxed out for slowest encoding and highest quality. Use at your own risk. So slow it's not just insane...it's a trip to the looney bin.
+preset_type=0
subtitle_lang=none
pref_audio_codec=ac3
pref_audio_bitrate=160
@@ -99,6 +102,7 @@ x264_options=ref=16:mixed-refs:bframes=16:bime:weightb:b-rdo:direct=auto:b-pyram
[Blind]
preset_description=HandBrake's preset for impatient people who don't care about picture quality.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=128
@@ -132,6 +136,7 @@ x264_options=
[Broke]
preset_description=HandBrake's preset for people without a lot of money to waste on hard drives. Tries to maximize quality for burning to CDs, so you can party like it's 1999.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=128
@@ -165,6 +170,7 @@ x264_options=ref=3:mixed-refs:bframes=16:bime:weightb:b-rdo:b-pyramid:direct=aut
[Classic]
preset_description=HandBrake's traditional, faster, lower-quality settings.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=160
@@ -197,6 +203,7 @@ x264_options=
[Constant Quality Rate]
preset_description=HandBrake's preset for consistently excellent quality in one pass, with the downside of entirely unpredictable file sizes and bitrates.
+preset_type=0
subtitle_lang=none
pref_audio_codec=ac3
pref_audio_bitrate=160
@@ -230,6 +237,7 @@ x264_options=ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filter=-2,-
[Deux Six Quatre]
preset_description=HandBrake's preset for true high profile x264 quality. A good balance of quality and speed, based on community standards found in the wild. This preset will give you a much better sense of x264's capabilities than vanilla main profile.
+preset_type=0
subtitle_lang=none
pref_audio_codec=ac3
pref_audio_bitrate=160
@@ -263,6 +271,7 @@ x264_options=ref=5:mixed-refs:bframes=3:bime:weightb:b-rdo:b-pyramid:me=umh:subm
[Film]
preset_description=HandBrake's preset for feature films.
+preset_type=0
subtitle_lang=none
pref_audio_codec=ac3
pref_audio_bitrate=160
@@ -296,6 +305,7 @@ x264_options=ref=3:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid
[iPhone / iPod Touch]
preset_description=HandBrake's settings for the iPhone and iPod Touch.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=128
@@ -329,6 +339,7 @@ x264_options=level=30:cabac=0:ref=1:analyse=all:me=umh:subme=6:no-fast-pskip=1:t
[iPod High-Rez]
preset_description=HandBrake's high resolution settings for the iPod. Good video quality, great for viewing on a TV using your iPod
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=160
@@ -362,6 +373,7 @@ x264_options=level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:
[iPod Low-Rez]
preset_description=HandBrake's low resolution settings for the iPod. Optimized for great playback on the iPod screen, with smaller file size.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=160
@@ -395,6 +407,7 @@ x264_options=level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:a
[Normal]
preset_description=HandBrake's normal, default settings.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=160
@@ -428,6 +441,7 @@ x264_options=ref=2:bframes=2:subme=5:me=umh
[PSP]
preset_description=HandBrake's settings for the Sony PlayStation Portable.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=128
@@ -460,6 +474,7 @@ x264_options=
[PS3]
preset_description=HandBrake's settings for the Sony PlayStation 3.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=160
@@ -491,6 +506,7 @@ x264_options=level=41:subme=5:me=umh
[QuickTime]
preset_description=HandBrake's high quality settings for use with QuickTime. It can be slow, so use it when the Normal preset doesn't look good enough.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=160
@@ -524,6 +540,7 @@ x264_options=ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me=umh:su
[Television]
preset_description=HandBrake's settings for video from television.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=160
@@ -557,6 +574,7 @@ x264_options=ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyramid:me=um
[Xbox 360]
preset_description=HandBrake's settings for the Microsoft Xbox 360.
+preset_type=0
subtitle_lang=none
pref_audio_codec=faac
pref_audio_bitrate=160