OSDN Git Service

LinGui: change the top level structure that contains presets from a dictionary
authorjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Fri, 3 Oct 2008 20:59:50 +0000 (20:59 +0000)
committerjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Fri, 3 Oct 2008 20:59:50 +0000 (20:59 +0000)
to an array.  Dictionaries are unordered sets, so this new structure
allows greater flexibility in how the presets may be ordered.
Is backwards compatible.  Old structure is read and converted to new.

git-svn-id: svn://localhost/HandBrake/trunk@1804 b64f7644-9d1e-0410-96f1-a4d463321fa5

gtk/src/presets.c
gtk/src/resource_data.h
gtk/src/resources.plist
gtk/src/standard_presets.xml

index 0298b1a..03f9501 100644 (file)
@@ -35,6 +35,49 @@ plist_get_dict(GValue *presets, const gchar *name)
        return ghb_dict_lookup(presets, name);
 }
 
+static GValue*
+presets_get_dict(GValue *presets, const gchar *name)
+{
+       GValue *dict, *gval;
+       gint count, ii;
+       
+       if (presets == NULL || name == NULL) return NULL;
+       count = ghb_array_len(presets);
+       for (ii = 0; ii < count; ii++)
+       {
+               const gchar *str;
+               dict = ghb_array_get_nth(presets, ii);
+               gval = ghb_dict_lookup(dict, "preset_name");
+               str = g_value_get_string(gval);
+               if (strcmp(str, name) == 0)
+                       return dict;
+       }
+       return NULL;
+}
+
+static gint
+presets_remove(GValue *presets, const gchar *name)
+{
+       GValue *dict, *gval;
+       gint count, ii;
+       
+       if (presets == NULL || name == NULL) return -1;
+       count = ghb_array_len(presets);
+       for (ii = 0; ii < count; ii++)
+       {
+               const gchar *str;
+               dict = ghb_array_get_nth(presets, ii);
+               gval = ghb_dict_lookup(dict, "preset_name");
+               str = g_value_get_string(gval);
+               if (strcmp(str, name) == 0)
+               {
+                       ghb_array_remove(presets, ii);
+                       return ii;
+               }
+       }
+       return -1;
+}
+
 void
 ghb_set_preset_default(GValue *settings)
 {
@@ -60,7 +103,7 @@ gchar*
 ghb_presets_get_description(const gchar *name)
 {
        GValue *pdict;
-       pdict = plist_get_dict(presetsPlist, name);
+       pdict = presets_get_dict(presetsPlist, name);
        if (pdict == NULL) return g_strdup("");
        return ghb_value_string(ghb_dict_lookup(pdict, "preset_description"));
 }
@@ -93,37 +136,42 @@ preset_get_value(
 {
        GValue *dict;
 
-       dict = plist_get_dict(presetsPlist, name);
+       dict = presets_get_dict(presetsPlist, name);
        return preset_dict_get_value(dict, key);
 }
 
 GList*
 ghb_presets_get_names()
 {
-       GHashTable *dict;
-       GList *names, *link;
+       GList *names;
        GList *standard = NULL;
        GList *custom = NULL;
+       gint ii, count;
 
        if (presetsPlist == NULL) return NULL;
-       dict = g_value_get_boxed(presetsPlist);
-       link = names = g_hash_table_get_keys(dict);
-       while (link)
+       count = ghb_array_len(presetsPlist);
+       for (ii = 0; ii < count; ii++)
        {
                gchar *name;
                gint ptype;
+               GValue *dict;
+               GValue *gval;
 
-               name = (gchar*)link->data;
-               ptype = ghb_value_int(preset_get_value(name, "preset_type"));
+               dict = ghb_array_get_nth(presetsPlist, ii);
+               gval = ghb_dict_lookup(dict, "preset_name");
+               name = (gchar*)g_value_get_string(gval);
+               ptype = ghb_value_int(preset_dict_get_value(dict, "preset_type"));
                if (ptype)
+               {
                        custom = g_list_append(custom, name);
+               }
                else
+               {
                        standard = g_list_append(standard, name);
-               link = link->next;
+               }
        }
        custom = g_list_sort(custom, key_cmp);
        standard = g_list_sort(standard, key_cmp);
-       g_list_free(names);
        names = g_list_concat(standard, custom);
        return names;
 }
@@ -136,7 +184,7 @@ ghb_preset_flags(const gchar *name)
        gint ptype;
        gint ret = 0;
 
-       dict = plist_get_dict(presetsPlist, name);
+       dict = presets_get_dict(presetsPlist, name);
        gval = preset_dict_get_value(dict, "preset_type");
        if (gval)
        {
@@ -321,7 +369,7 @@ ghb_set_preset(signal_user_data_t *ud, const gchar *name)
                        g_list_free(presets);
                }
        }
-       dict = plist_get_dict(presetsPlist, name);
+       dict = presets_get_dict(presetsPlist, name);
        if (dict == NULL || name == NULL)
        {
                preset_to_ui(ud, NULL);
@@ -604,8 +652,8 @@ ghb_settings_init(signal_user_data_t *ud)
 void
 ghb_settings_close()
 {
-       //if (internalPlist)
-               //ghb_value_free(internalPlist);
+       if (internalPlist)
+               ghb_value_free(internalPlist);
        if (presetsPlist)
                ghb_value_free(presetsPlist);
        if (prefsPlist)
@@ -654,36 +702,41 @@ ghb_prefs_load(signal_user_data_t *ud)
 void
 ghb_presets_reload(signal_user_data_t *ud)
 {
-       GValue *std_dict, *dict;
-       GHashTableIter std_iter;
+       GValue *std_presets;
+       gint count, ii;
 
        g_debug("ghb_presets_reload()\n");
-       std_dict = ghb_resource_get("standard-presets");
-       if (std_dict == NULL) return;
+       std_presets = ghb_resource_get("standard-presets");
+       if (std_presets == NULL) return;
 
        // Merge the keyfile contents into our presets
-       gchar *name;
-       GValue *orig_dict;
-
-       ghb_dict_iter_init(&std_iter, std_dict);
-       // middle (void*) cast prevents gcc warning "defreferencing type-punned
-       // pointer will break strict-aliasing rules"
-       while (g_hash_table_iter_next(
-                       &std_iter, (gpointer*)(void*)&name, (gpointer*)(void*)&orig_dict))
+       count = ghb_array_len(std_presets);
+       for (ii = 0; ii < count; ii++)
        {
+               const gchar *name;
+               GValue *std_dict;
+               GValue *copy_dict;
                GHashTableIter iter;
                gchar *key;
                GValue *value;
+               gint pos;
 
-               dict = ghb_dict_value_new();
-               ghb_dict_insert(presetsPlist, g_strdup(name), dict);
-               ghb_dict_iter_init(&iter, orig_dict);
+               std_dict = ghb_array_get_nth(std_presets, ii);
+               name = g_value_get_string(ghb_dict_lookup(std_dict, "preset_name"));
+               pos = presets_remove(presetsPlist, name);
+
+               copy_dict = ghb_dict_value_new();
+               if (pos >= 0)
+                       ghb_array_insert(presetsPlist, pos, copy_dict);
+               else
+                       ghb_array_append(presetsPlist, copy_dict);
+               ghb_dict_iter_init(&iter, std_dict);
                // middle (void*) cast prevents gcc warning "defreferencing type-punned
                // pointer will break strict-aliasing rules"
                while (g_hash_table_iter_next(
                                &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&value))
                {
-                       ghb_dict_insert(dict, g_strdup(key), ghb_value_dup(value));
+                       ghb_dict_insert(copy_dict, g_strdup(key), ghb_value_dup(value));
                }
        }
        store_plist(presetsPlist, "presets");
@@ -723,6 +776,41 @@ ghb_presets_load()
                presetsPlist = ghb_value_dup(ghb_resource_get("standard-presets"));
                presets_store();
        }
+       if (G_VALUE_TYPE(presetsPlist) == ghb_dict_get_type())
+       { // Presets is older dictionary format. Convert to array
+               GHashTableIter old_iter;
+               GValue *presets;
+               gchar *name;
+               GValue *orig_dict;
+
+               presets = ghb_array_value_new(32);
+               ghb_dict_iter_init(&old_iter, presetsPlist);
+               // middle (void*) cast prevents gcc warning "defreferencing type-punned
+               // pointer will break strict-aliasing rules"
+               while (g_hash_table_iter_next(
+                       &old_iter, (gpointer*)(void*)&name, (gpointer*)(void*)&orig_dict))
+               {
+                       GHashTableIter iter;
+                       gchar *key;
+                       GValue *value, *dict;
+
+                       dict = ghb_dict_value_new();
+                       ghb_dict_insert(dict, g_strdup("preset_name"), 
+                               ghb_string_value_new(name));
+                       ghb_array_append(presets, dict);
+                       ghb_dict_iter_init(&iter, orig_dict);
+                       // middle (void*) cast prevents gcc warning "defreferencing 
+                       // type-punned pointer will break strict-aliasing rules"
+                       while (g_hash_table_iter_next(
+                               &iter, (gpointer*)(void*)&key, (gpointer*)(void*)&value))
+                       {
+                               ghb_dict_insert(dict, g_strdup(key), ghb_value_dup(value));
+                       }
+               }
+               ghb_value_free(presetsPlist);
+               presetsPlist = presets;
+               presets_store();
+       }
 }
 
 void
@@ -755,7 +843,8 @@ ghb_settings_save(signal_user_data_t *ud, const gchar *name)
        ghb_settings_set_int64(ud->settings, "preset_type", 1);
 
        dict = ghb_dict_value_new();
-       ghb_dict_insert(presetsPlist, g_strdup(name), dict);
+       ghb_dict_insert(dict, g_strdup("preset_name"), ghb_string_value_new(name));
+       ghb_array_append(presetsPlist, dict);
        internal = plist_get_dict(internalPlist, "Presets");
 
        ghb_dict_iter_init(&iter, internal);
@@ -800,9 +889,9 @@ ghb_settings_save(signal_user_data_t *ud, const gchar *name)
 void
 ghb_presets_remove(const gchar *name)
 {
-       if (ghb_dict_lookup(presetsPlist, name))
+       if (presets_get_dict(presetsPlist, name))
        {
-               ghb_dict_remove(presetsPlist, name);
+               presets_remove(presetsPlist, name);
                presets_store();
        }
 }
index 63e6ece..379b1d8 100644 (file)
 "              </dict>\n"
 "      </dict>\n"
 "      <key>standard-presets</key>\n"
-"      <dict>\n"
-"              <key>Animation</key>\n"
+"      <array>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <true />\n"
 "                      <key>preset_description</key>\n"
 "                      <string>HandBrake&apos;s settings for cartoons, anime, and CGI.</str"
 "ing>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>Animation</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "pyramid:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter"
 "=2,2</string>\n"
 "              </dict>\n"
-"              <key>AppleTV</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <true />\n"
 "                      <string>HandBrake&apos;s settings for the AppleTV, including Dolby D"
 "igital 5.1 AC3 sound. Provides a good balance between quality and file "
 "size, and optimizes performance.</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>AppleTV</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <string>bframes=3:ref=1:me=umh:no-fast-pskip=1:trellis=1:cabac=0</st"
 "ring>\n"
 "              </dict>\n"
-"              <key>Bedlam</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <true />\n"
 "                      <string>HandBrake&apos;s settings maxed out for slowest encoding and"
 " highest quality. Use at your own risk. So slow it&apos;s not just insa"
 "ne...it&apos;s a trip to the looney bin.</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>Bedlam</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "b-pyramid:me=esa:subme=7:me-range=64:analyse=all:8x8dct:trellis=1:no-fa"
 "st-pskip:no-dct-decimate:filter=-2,-1</string>\n"
 "              </dict>\n"
-"              <key>Blind</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <false />\n"
 "                      <key>preset_description</key>\n"
 "                      <string>HandBrake&apos;s preset for impatient people who don&apos;t "
 "care about picture quality.</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>Blind</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <key>x264_options</key>\n"
 "                      <string></string>\n"
 "              </dict>\n"
-"              <key>Broke</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <false />\n"
 "                      <string>HandBrake&apos;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&apos;s 1999.</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>Broke</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <string>ref=3:mixed-refs:bframes=16:bime:weightb:b-rdo:b-pyramid:dir"
 "ect=auto:me=umh:trellis=1:analyse=all:8x8dct:no-fast-pskip</string>\n"
 "              </dict>\n"
-"              <key>Classic</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <false />\n"
 "                      <key>preset_description</key>\n"
 "                      <string>HandBrake&apos;s traditional, faster, lower-quality settings"
 ".</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>Classic</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <key>x264_options</key>\n"
 "                      <string></string>\n"
 "              </dict>\n"
-"              <key>Constant Quality Rate</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <true />\n"
 "                      <string>HandBrake&apos;s preset for consistently excellent quality i"
 "n one pass, with the downside of entirely unpredictable file sizes and "
 "bitrates.</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>Constant Quality Rate</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <string>ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filt"
 "er=-2,-1:trellis=1:analyse=all:8x8dct:me=umh</string>\n"
 "              </dict>\n"
-"              <key>Deux Six Quatre</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <true />\n"
 "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&apo"
 "s;s capabilities than vanilla main profile.</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>Deux Six Quatre</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <string>ref=5:mixed-refs:bframes=3:bime:weightb:b-rdo:b-pyramid:me=u"
 "mh:subme=7:trellis=1:analyse=all:8x8dct:no-fast-pskip</string>\n"
 "              </dict>\n"
-"              <key>Film</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <true />\n"
 "                      </array>\n"
 "                      <key>preset_description</key>\n"
 "                      <string>HandBrake&apos;s preset for feature films.</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>Film</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "pyramid:me=umh:subme=7:analyse=all:8x8dct:trellis=1:no-fast-pskip</stri"
 "ng>\n"
 "              </dict>\n"
-"              <key>Normal</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <true />\n"
 "                      </array>\n"
 "                      <key>preset_description</key>\n"
 "                      <string>HandBrake&apos;s normal, default settings.</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>Normal</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <key>x264_options</key>\n"
 "                      <string>ref=2:bframes=2:me=umh</string>\n"
 "              </dict>\n"
-"              <key>PS3</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <true />\n"
 "                      <key>preset_description</key>\n"
 "                      <string>HandBrake&apos;s settings for the Sony PlayStation 3.</strin"
 "g>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>PS3</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <key>x264_options</key>\n"
 "                      <string>level=41:me=umh</string>\n"
 "              </dict>\n"
-"              <key>PSP</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <false />\n"
 "                      <key>preset_description</key>\n"
 "                      <string>HandBrake&apos;s settings for the Sony PlayStation Portable."
 "</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>PSP</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <key>x264_options</key>\n"
 "                      <string></string>\n"
 "              </dict>\n"
-"              <key>QuickTime</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <true />\n"
 "                      <string>HandBrake&apos;s high quality settings for use with QuickTim"
 "e. It can be slow, so use it when the Normal preset doesn&apos;t look g"
 "ood enough.</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>QuickTime</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <string>ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me"
 "=umh:analyse=all:trellis=1:no-fast-pskip</string>\n"
 "              </dict>\n"
-"              <key>Television</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <false />\n"
 "                      <key>preset_description</key>\n"
 "                      <string>HandBrake&apos;s settings for video from television.</string"
 ">\n"
+"                      <key>preset_name</key>\n"
+"                      <string>Television</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <string>ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyrami"
 "d:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip</string>\n"
 "              </dict>\n"
-"              <key>Xbox 360</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <true />\n"
 "                      <key>preset_description</key>\n"
 "                      <string>HandBrake&apos;s settings for the Microsoft Xbox 360.</strin"
 "g>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>Xbox 360</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "t=auto:b-pyramid:me=umh:analyse=all:no-fast-pskip:filter=-2,-1</string>"
 "\n"
 "              </dict>\n"
-"              <key>iPhone / iPod Touch</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <false />\n"
 "                      <key>preset_description</key>\n"
 "                      <string>HandBrake&apos;s settings for the iPhone and iPod Touch.</st"
 "ring>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>iPhone / iPod Touch</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <string>level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:tr"
 "ellis=1</string>\n"
 "              </dict>\n"
-"              <key>iPod High-Rez</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <false />\n"
 "                      <key>preset_description</key>\n"
 "                      <string>HandBrake&apos;s high resolution settings for the iPod. Good"
 " video quality, great for viewing on a TV using your iPod</string>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>iPod High-Rez</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsiz"
 "e=2000:analyse=all:me=umh:no-fast-pskip=1</string>\n"
 "              </dict>\n"
-"              <key>iPod Low-Rez</key>\n"
 "              <dict>\n"
 "                      <key>anamorphic</key>\n"
 "                      <false />\n"
 "                      <string>HandBrake&apos;s low resolution settings for the iPod. Optim"
 "ized for great playback on the iPod screen, with smaller file size.</st"
 "ring>\n"
+"                      <key>preset_name</key>\n"
+"                      <string>iPod Low-Rez</string>\n"
 "                      <key>preset_type</key>\n"
 "                      <integer>0</integer>\n"
 "                      <key>subtitle_lang</key>\n"
 "                      <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize"
 "=2000:analyse=all:me=umh:no-fast-pskip=1</string>\n"
 "              </dict>\n"
-"      </dict>\n"
+"      </array>\n"
 "      <key>widget-deps</key>\n"
 "      <dict>\n"
 "              <key>anamorphic</key>\n"
index 63ead66..2a9ddc7 100644 (file)
@@ -5017,8 +5017,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                </dict>
        </dict>
        <key>standard-presets</key>
-       <dict>
-               <key>Animation</key>
+       <array>
                <dict>
                        <key>anamorphic</key>
                        <true />
@@ -5067,6 +5066,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s settings for cartoons, anime, and CGI.</string>
+                       <key>preset_name</key>
+                       <string>Animation</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5088,7 +5089,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter=2,2</string>
                </dict>
-               <key>AppleTV</key>
                <dict>
                        <key>anamorphic</key>
                        <true />
@@ -5149,6 +5149,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s settings for the AppleTV, including Dolby Digital 5.1 AC3 sound. Provides a good balance between quality and file size, and optimizes performance.</string>
+                       <key>preset_name</key>
+                       <string>AppleTV</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5168,7 +5170,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>bframes=3:ref=1:me=umh:no-fast-pskip=1:trellis=1:cabac=0</string>
                </dict>
-               <key>Bedlam</key>
                <dict>
                        <key>anamorphic</key>
                        <true />
@@ -5217,6 +5218,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s settings maxed out for slowest encoding and highest quality. Use at your own risk. So slow it&apos;s not just insane...it&apos;s a trip to the looney bin.</string>
+                       <key>preset_name</key>
+                       <string>Bedlam</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5238,7 +5241,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>ref=16:mixed-refs:bframes=16:bime:weightb:b-rdo:direct=auto:b-pyramid:me=esa:subme=7:me-range=64:analyse=all:8x8dct:trellis=1:no-fast-pskip:no-dct-decimate:filter=-2,-1</string>
                </dict>
-               <key>Blind</key>
                <dict>
                        <key>anamorphic</key>
                        <false />
@@ -5287,6 +5289,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s preset for impatient people who don&apos;t care about picture quality.</string>
+                       <key>preset_name</key>
+                       <string>Blind</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5308,7 +5312,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string></string>
                </dict>
-               <key>Broke</key>
                <dict>
                        <key>anamorphic</key>
                        <false />
@@ -5357,6 +5360,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;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&apos;s 1999.</string>
+                       <key>preset_name</key>
+                       <string>Broke</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5378,7 +5383,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>ref=3:mixed-refs:bframes=16:bime:weightb:b-rdo:b-pyramid:direct=auto:me=umh:trellis=1:analyse=all:8x8dct:no-fast-pskip</string>
                </dict>
-               <key>Classic</key>
                <dict>
                        <key>anamorphic</key>
                        <false />
@@ -5427,6 +5431,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s traditional, faster, lower-quality settings.</string>
+                       <key>preset_name</key>
+                       <string>Classic</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5446,7 +5452,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string></string>
                </dict>
-               <key>Constant Quality Rate</key>
                <dict>
                        <key>anamorphic</key>
                        <true />
@@ -5495,6 +5500,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s preset for consistently excellent quality in one pass, with the downside of entirely unpredictable file sizes and bitrates.</string>
+                       <key>preset_name</key>
+                       <string>Constant Quality Rate</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5516,7 +5523,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filter=-2,-1:trellis=1:analyse=all:8x8dct:me=umh</string>
                </dict>
-               <key>Deux Six Quatre</key>
                <dict>
                        <key>anamorphic</key>
                        <true />
@@ -5565,6 +5571,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;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&apos;s capabilities than vanilla main profile.</string>
+                       <key>preset_name</key>
+                       <string>Deux Six Quatre</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5586,7 +5594,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>ref=5:mixed-refs:bframes=3:bime:weightb:b-rdo:b-pyramid:me=umh:subme=7:trellis=1:analyse=all:8x8dct:no-fast-pskip</string>
                </dict>
-               <key>Film</key>
                <dict>
                        <key>anamorphic</key>
                        <true />
@@ -5635,6 +5642,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s preset for feature films.</string>
+                       <key>preset_name</key>
+                       <string>Film</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5656,7 +5665,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>ref=3:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=7:analyse=all:8x8dct:trellis=1:no-fast-pskip</string>
                </dict>
-               <key>Normal</key>
                <dict>
                        <key>anamorphic</key>
                        <true />
@@ -5705,6 +5713,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s normal, default settings.</string>
+                       <key>preset_name</key>
+                       <string>Normal</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5726,7 +5736,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>ref=2:bframes=2:me=umh</string>
                </dict>
-               <key>PS3</key>
                <dict>
                        <key>anamorphic</key>
                        <true />
@@ -5773,6 +5782,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s settings for the Sony PlayStation 3.</string>
+                       <key>preset_name</key>
+                       <string>PS3</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5792,7 +5803,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>level=41:me=umh</string>
                </dict>
-               <key>PSP</key>
                <dict>
                        <key>anamorphic</key>
                        <false />
@@ -5841,6 +5851,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s settings for the Sony PlayStation Portable.</string>
+                       <key>preset_name</key>
+                       <string>PSP</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5860,7 +5872,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string></string>
                </dict>
-               <key>QuickTime</key>
                <dict>
                        <key>anamorphic</key>
                        <true />
@@ -5909,6 +5920,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s high quality settings for use with QuickTime. It can be slow, so use it when the Normal preset doesn&apos;t look good enough.</string>
+                       <key>preset_name</key>
+                       <string>QuickTime</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -5930,7 +5943,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me=umh:analyse=all:trellis=1:no-fast-pskip</string>
                </dict>
-               <key>Television</key>
                <dict>
                        <key>anamorphic</key>
                        <false />
@@ -5979,6 +5991,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s settings for video from television.</string>
+                       <key>preset_name</key>
+                       <string>Television</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -6000,7 +6014,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyramid:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip</string>
                </dict>
-               <key>Xbox 360</key>
                <dict>
                        <key>anamorphic</key>
                        <true />
@@ -6047,6 +6060,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s settings for the Microsoft Xbox 360.</string>
+                       <key>preset_name</key>
+                       <string>Xbox 360</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -6066,7 +6081,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>level=40:ref=2:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:analyse=all:no-fast-pskip:filter=-2,-1</string>
                </dict>
-               <key>iPhone / iPod Touch</key>
                <dict>
                        <key>anamorphic</key>
                        <false />
@@ -6117,6 +6131,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s settings for the iPhone and iPod Touch.</string>
+                       <key>preset_name</key>
+                       <string>iPhone / iPod Touch</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -6136,7 +6152,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:trellis=1</string>
                </dict>
-               <key>iPod High-Rez</key>
                <dict>
                        <key>anamorphic</key>
                        <false />
@@ -6187,6 +6202,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s high resolution settings for the iPod. Good video quality, great for viewing on a TV using your iPod</string>
+                       <key>preset_name</key>
+                       <string>iPod High-Rez</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -6206,7 +6223,6 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1</string>
                </dict>
-               <key>iPod Low-Rez</key>
                <dict>
                        <key>anamorphic</key>
                        <false />
@@ -6257,6 +6273,8 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        </array>
                        <key>preset_description</key>
                        <string>HandBrake&apos;s low resolution settings for the iPod. Optimized for great playback on the iPod screen, with smaller file size.</string>
+                       <key>preset_name</key>
+                       <string>iPod Low-Rez</string>
                        <key>preset_type</key>
                        <integer>0</integer>
                        <key>subtitle_lang</key>
@@ -6276,7 +6294,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                        <key>x264_options</key>
                        <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1</string>
                </dict>
-       </dict>
+       </array>
        <key>widget-deps</key>
        <dict>
                <key>anamorphic</key>
index 37fc524..5ae6067 100644 (file)
@@ -1,9 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
-<dict>
-       <key>Animation</key>
+<array>
        <dict>
+               <key>preset_name</key>
+               <string>Animation</string>
                <key>anamorphic</key>
                <true />
                <key>autocrop</key>
@@ -72,8 +73,9 @@
                <key>x264_options</key>
                <string>ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter=2,2</string>
        </dict>
-       <key>AppleTV</key>
        <dict>
+               <key>preset_name</key>
+               <string>AppleTV</string>
                <key>anamorphic</key>
                <true />
                <key>autoscale</key>
                <key>x264_options</key>
                <string>bframes=3:ref=1:me=umh:no-fast-pskip=1:trellis=1:cabac=0</string>
        </dict>
-       <key>Bedlam</key>
        <dict>
+               <key>preset_name</key>
+               <string>Bedlam</string>
                <key>anamorphic</key>
                <true />
                <key>autocrop</key>
                <key>x264_options</key>
                <string>ref=16:mixed-refs:bframes=16:bime:weightb:b-rdo:direct=auto:b-pyramid:me=esa:subme=7:me-range=64:analyse=all:8x8dct:trellis=1:no-fast-pskip:no-dct-decimate:filter=-2,-1</string>
        </dict>
-       <key>Blind</key>
        <dict>
+               <key>preset_name</key>
+               <string>Blind</string>
                <key>anamorphic</key>
                <false />
                <key>autocrop</key>
                <key>x264_options</key>
                <string></string>
        </dict>
-       <key>Broke</key>
        <dict>
+               <key>preset_name</key>
+               <string>Broke</string>
                <key>anamorphic</key>
                <false />
                <key>autocrop</key>
                <key>x264_options</key>
                <string>ref=3:mixed-refs:bframes=16:bime:weightb:b-rdo:b-pyramid:direct=auto:me=umh:trellis=1:analyse=all:8x8dct:no-fast-pskip</string>
        </dict>
-       <key>Classic</key>
        <dict>
+               <key>preset_name</key>
+               <string>Classic</string>
                <key>anamorphic</key>
                <false />
                <key>autocrop</key>
                <key>x264_options</key>
                <string></string>
        </dict>
-       <key>Constant Quality Rate</key>
        <dict>
+               <key>preset_name</key>
+               <string>Constant Quality Rate</string>
                <key>anamorphic</key>
                <true />
                <key>autocrop</key>
                <key>x264_options</key>
                <string>ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filter=-2,-1:trellis=1:analyse=all:8x8dct:me=umh</string>
        </dict>
-       <key>Deux Six Quatre</key>
        <dict>
+               <key>preset_name</key>
+               <string>Deux Six Quatre</string>
                <key>anamorphic</key>
                <true />
                <key>autocrop</key>
                <key>x264_options</key>
                <string>ref=5:mixed-refs:bframes=3:bime:weightb:b-rdo:b-pyramid:me=umh:subme=7:trellis=1:analyse=all:8x8dct:no-fast-pskip</string>
        </dict>
-       <key>Film</key>
        <dict>
+               <key>preset_name</key>
+               <string>Film</string>
                <key>anamorphic</key>
                <true />
                <key>autocrop</key>
                <key>x264_options</key>
                <string>ref=3:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=7:analyse=all:8x8dct:trellis=1:no-fast-pskip</string>
        </dict>
-       <key>Normal</key>
        <dict>
+               <key>preset_name</key>
+               <string>Normal</string>
                <key>anamorphic</key>
                <true />
                <key>autocrop</key>
                <key>x264_options</key>
                <string>ref=2:bframes=2:me=umh</string>
        </dict>
-       <key>PS3</key>
        <dict>
+               <key>preset_name</key>
+               <string>PS3</string>
                <key>anamorphic</key>
                <true />
                <key>autoscale</key>
                <key>x264_options</key>
                <string>level=41:me=umh</string>
        </dict>
-       <key>PSP</key>
        <dict>
+               <key>preset_name</key>
+               <string>PSP</string>
                <key>anamorphic</key>
                <false />
                <key>autocrop</key>
                <key>x264_options</key>
                <string></string>
        </dict>
-       <key>QuickTime</key>
        <dict>
+               <key>preset_name</key>
+               <string>QuickTime</string>
                <key>anamorphic</key>
                <true />
                <key>autocrop</key>
                <key>x264_options</key>
                <string>ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me=umh:analyse=all:trellis=1:no-fast-pskip</string>
        </dict>
-       <key>Television</key>
        <dict>
+               <key>preset_name</key>
+               <string>Television</string>
                <key>anamorphic</key>
                <false />
                <key>autocrop</key>
                <key>x264_options</key>
                <string>ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyramid:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip</string>
        </dict>
-       <key>Xbox 360</key>
        <dict>
+               <key>preset_name</key>
+               <string>Xbox 360</string>
                <key>anamorphic</key>
                <true />
                <key>autoscale</key>
                <key>x264_options</key>
                <string>level=40:ref=2:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:analyse=all:no-fast-pskip:filter=-2,-1</string>
        </dict>
-       <key>iPhone / iPod Touch</key>
        <dict>
+               <key>preset_name</key>
+               <string>iPhone / iPod Touch</string>
                <key>anamorphic</key>
                <false />
                <key>autocrop</key>
                <key>x264_options</key>
                <string>level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:trellis=1</string>
        </dict>
-       <key>iPod High-Rez</key>
        <dict>
+               <key>preset_name</key>
+               <string>iPod High-Rez</string>
                <key>anamorphic</key>
                <false />
                <key>autocrop</key>
                <key>x264_options</key>
                <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1</string>
        </dict>
-       <key>iPod Low-Rez</key>
        <dict>
+               <key>preset_name</key>
+               <string>iPod Low-Rez</string>
                <key>anamorphic</key>
                <false />
                <key>autocrop</key>
                <key>x264_options</key>
                <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1</string>
        </dict>
-</dict>
+</array>
 </plist>