]> granicus.if.org Git - handbrake/commitdiff
LinGui: fix video codec preset when switching codecs
authorJohn Stebbins <jstebbins.hb@gmail.com>
Mon, 4 Mar 2019 16:19:22 +0000 (08:19 -0800)
committerJohn Stebbins <jstebbins.hb@gmail.com>
Mon, 4 Mar 2019 16:22:50 +0000 (08:22 -0800)
If the codec doesn't have a 'medium' preset, the GUI was left in an
indeterminate state

(cherry picked from commit 90c8d6031205f1e06642006e63ac021515ab2a5e)

gtk/src/videohandler.c

index 96375edde4eaff614c4ae424e05b3be8bc2ebc4f..490adc4bea908a293d986c318efd36b7cfb642c6 100644 (file)
@@ -46,15 +46,23 @@ int ghb_set_video_preset(GhbValue *settings, int encoder, const char * preset)
     int                  ii, result = 0;
 
     videoPresets = hb_video_encoder_get_presets(encoder);
-    for (ii = 0; preset && videoPresets && videoPresets[ii]; ii++)
+    for (ii = 0; videoPresets && videoPresets[ii]; ii++)
     {
-        if (!strcasecmp(preset, videoPresets[ii]))
+        if (preset != NULL && !strcasecmp(preset, videoPresets[ii]))
         {
             ghb_dict_set_int(settings, "VideoPresetSlider", ii);
             result = 1;
             break;
         }
     }
+    if (preset == NULL && videoPresets != NULL)
+    {
+        // Pick the center 'medium' preset
+        ii = ii / 2;
+        preset = videoPresets[ii];
+        ghb_dict_set_int(settings, "VideoPresetSlider", ii);
+        result = 1;
+    }
     if (preset != NULL)
     {
         ghb_dict_set_string(settings, "VideoPreset", preset);
@@ -103,7 +111,7 @@ vcodec_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
     {
         gtk_range_set_range(GTK_RANGE(presetSlider), 0, count-1);
     }
-    ghb_set_video_preset(ud->settings, encoder, "medium");
+    ghb_set_video_preset(ud->settings, encoder, NULL);
     GhbValue *gval = ghb_dict_get_value(ud->settings, "VideoPresetSlider");
     ghb_ui_settings_update(ud, ud->settings, "VideoPresetSlider", gval);