diff options
author | jstebbins <[email protected]> | 2008-08-23 20:04:38 +0000 |
---|---|---|
committer | jstebbins <[email protected]> | 2008-08-23 20:04:38 +0000 |
commit | ddacbf46e7ad7fafacc35eeb6d2dfb5fbb698913 (patch) | |
tree | fb2c08b22fcaca8275f063497bc247f6c21712fa /gtk | |
parent | 158e774a39c3c914dbe1ae2294df57853812b3e8 (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
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/src/callbacks.c | 74 | ||||
-rw-r--r-- | gtk/src/ghb.ui | 19 | ||||
-rw-r--r-- | gtk/src/internal_defaults | 1 | ||||
-rw-r--r-- | gtk/src/internal_defaults.h | 1 | ||||
-rw-r--r-- | gtk/src/preset_xlat.c | 3 | ||||
-rw-r--r-- | gtk/src/settings.c | 226 | ||||
-rw-r--r-- | gtk/src/settings.h | 2 | ||||
-rwxr-xr-x | gtk/src/standard_presets | 18 |
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 |