Example #1
0
G_MODULE_EXPORT void
x264_use_advanced_options_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
{
    ghb_widget_to_setting(ud->settings, widget);

    if (ghb_dict_get_bool(ud->prefs, "HideAdvancedVideoSettings") &&
        ghb_dict_get_bool(ud->settings, "x264UseAdvancedOptions"))
    {
        ghb_ui_update(ud, "x264UseAdvancedOptions", ghb_boolean_value(FALSE));
        return;
    }

    if (ghb_dict_get_bool(ud->settings, "x264UseAdvancedOptions"))
    {
        ghb_ui_update(ud, "VideoPresetSlider", ghb_int_value(5));
        ghb_ui_update(ud, "VideoTune", ghb_string_value("none"));
        ghb_ui_update(ud, "VideoProfile", ghb_string_value("auto"));
        ghb_ui_update(ud, "VideoLevel", ghb_string_value("auto"));

        const char *options = ghb_dict_get_string(ud->settings, "x264Option");
        ghb_ui_update(ud, "VideoOptionExtra", ghb_string_value(options));
    }

    ghb_check_dependency(ud, widget, NULL);
    ghb_clear_presets_selection(ud);
}
Example #2
0
G_MODULE_EXPORT void
framerate_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
{
    ghb_widget_to_setting(ud->settings, widget);
    ghb_update_summary_info(ud);

    if (ghb_settings_video_framerate_rate(ud->settings, "VideoFramerate") != 0)
    {
        if (!ghb_dict_get_bool(ud->settings, "VideoFrameratePFR"))
        {
            ghb_ui_update(ud, "VideoFramerateCFR", ghb_boolean_value(TRUE));
        }
    }
    if (ghb_settings_video_framerate_rate(ud->settings, "VideoFramerate") == 0 &&
        ghb_dict_get_bool(ud->settings, "VideoFrameratePFR"))
    {
        ghb_ui_update(ud, "VideoFramerateVFR", ghb_boolean_value(TRUE));
    }
    ghb_check_dependency(ud, widget, NULL);
    ghb_clear_presets_selection(ud);
    ghb_live_reset(ud);
}
Example #3
0
G_MODULE_EXPORT void
vcodec_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
{
    float val, vqmin, vqmax, step, page;
    int inverted, digits;

    ghb_widget_to_setting(ud->settings, widget);
    ghb_check_dependency(ud, widget, NULL);
    ghb_show_container_options(ud);
    ghb_update_summary_info(ud);
    ghb_clear_presets_selection(ud);
    ghb_live_reset(ud);

    // Set the range of the video quality slider
    val = ghb_vquality_default(ud);
    ghb_vquality_range(ud, &vqmin, &vqmax, &step, &page, &digits, &inverted);
    ghb_scale_configure(ud, "VideoQualitySlider", val, vqmin, vqmax,
                        step, page, digits, inverted);

    ghb_update_ui_combo_box(ud, "VideoTune", NULL, FALSE);
    ghb_update_ui_combo_box(ud, "VideoProfile", NULL, FALSE);
    ghb_update_ui_combo_box(ud, "VideoLevel", NULL, FALSE);
    ghb_ui_update(ud, "VideoTune", ghb_int_value(0));
    ghb_ui_update(ud, "VideoProfile", ghb_int_value(0));
    ghb_ui_update(ud, "VideoLevel", ghb_int_value(0));
    ghb_ui_update(ud, "VideoOptionExtra", ghb_string_value(""));

    // Set the range of the preset slider
    int encoder = ghb_get_video_encoder(ud->settings);
    GtkWidget *presetSlider = GHB_WIDGET(ud->builder, "VideoPresetSlider");
    GtkWidget *presetLabel = GHB_WIDGET(ud->builder, "VideoPresetLabel");
    const char * const *video_presets;
    int count = 0;
    video_presets = hb_video_encoder_get_presets(encoder);
    while (video_presets && video_presets[count]) count++;
    gtk_widget_set_visible(presetSlider, count > 0);
    gtk_widget_set_visible(presetLabel, count > 0);
    if (count)
    {
        gtk_range_set_range(GTK_RANGE(presetSlider), 0, count-1);
    }
    ghb_set_video_preset(ud->settings, encoder, "medium");
    GhbValue *gval = ghb_dict_get_value(ud->settings, "VideoPresetSlider");
    ghb_ui_settings_update(ud, ud->settings, "VideoPresetSlider", gval);

    // Advanced options are only for x264
    if (!(encoder & HB_VCODEC_X264_MASK))
    {
        ghb_ui_update(ud, "x264UseAdvancedOptions", ghb_boolean_value(FALSE));
    }
}
Example #4
0
void ghb_show_hide_advanced_video( signal_user_data_t *ud )
{
    gboolean hide;

    hide = ghb_dict_get_bool(ud->prefs, "HideAdvancedVideoSettings");
    if (hide)
    {
        ghb_ui_update(ud, "x264UseAdvancedOptions", ghb_boolean_value(FALSE));
    }

    GtkWidget *widget;
    GtkWidget *at = GHB_WIDGET(ud->builder, "advanced_video_tab");

    gtk_widget_set_visible(at, !hide);
    widget = GHB_WIDGET(ud->builder, "x264UseAdvancedOptions");
    gtk_widget_set_visible(widget, !hide);
}
Example #5
0
G_MODULE_EXPORT void
subtitle_default_toggled_cb(GtkWidget *widget, signal_user_data_t *ud)
{
    GValue *subsettings;
    int index;

    ghb_widget_to_setting(ud->settings, widget);
    subsettings = subtitle_get_selected_settings(ud, &index);
    if (subsettings != NULL)
    {
        ghb_widget_to_setting(subsettings, widget);
        if (ghb_settings_get_boolean(subsettings, "SubtitleDefaultTrack"))
        {
            ghb_ui_update(ud, "SubtitleBurned", ghb_boolean_value(FALSE));
            ghb_subtitle_exclusive_default(ud, index);
        }
        ghb_subtitle_list_refresh_selected(ud);
        ghb_live_reset(ud);
    }
}
Example #6
0
void ghb_show_hide_advanced_video( signal_user_data_t *ud )
{
    gboolean hide;

    hide = ghb_settings_get_boolean(ud->prefs, "HideAdvancedVideoSettings");
    if (hide)
    {
        ghb_ui_update(ud, "x264UseAdvancedOptions", ghb_boolean_value(FALSE));
    }

    GtkWidget *widget;
    GtkWidget *nb = GHB_WIDGET(ud->builder, "SettingsNotebook");
    GtkWidget *at = GHB_WIDGET(ud->builder, "advanced_tab");
    int pgn = gtk_notebook_page_num(GTK_NOTEBOOK(nb), at);

    widget = gtk_notebook_get_nth_page(GTK_NOTEBOOK(nb), pgn);
    gtk_widget_set_visible(widget, !hide);
    widget = GHB_WIDGET(ud->builder, "x264UseAdvancedOptions");
    gtk_widget_set_visible(widget, !hide);
}
Example #7
0
static void
subtitle_update_dialog_widgets(signal_user_data_t *ud, GValue *subsettings)
{
    GtkWidget *widget;

    if (subsettings != NULL)
    {
        // Update widgets with subsettings
        gboolean burn, force, def;

        const char *mux_id;
        const hb_container_t *mux;

        mux_id = ghb_settings_get_const_string(ud->settings, "FileFormat");
        mux = ghb_lookup_container_by_name(mux_id);

        int source = ghb_settings_get_int(subsettings, "SubtitleSource");

        ghb_ui_update_from_settings(ud, "SubtitleTrack", subsettings);
        ghb_ui_update_from_settings(ud, "SrtLanguage", subsettings);
        ghb_ui_update_from_settings(ud, "SrtCodeset", subsettings);
        ghb_ui_update_from_settings(ud, "SrtFile", subsettings);
        ghb_ui_update_from_settings(ud, "SrtOffset", subsettings);

        if (source == SRTSUB)
        {
            ghb_ui_update(ud, "SubtitleSrtEnable", ghb_boolean_value(TRUE));
        }
        else
        {
            ghb_ui_update(ud, "SubtitleSrtDisable", ghb_boolean_value(TRUE));
        }

        widget = GHB_WIDGET(ud->builder, "SubtitleBurned");
        gtk_widget_set_sensitive(widget, hb_subtitle_can_burn(source) &&
                                    hb_subtitle_can_pass(source, mux->format));
        widget = GHB_WIDGET(ud->builder, "SubtitleForced");
        gtk_widget_set_sensitive(widget, hb_subtitle_can_force(source));
        widget = GHB_WIDGET(ud->builder, "SubtitleDefaultTrack");
        gtk_widget_set_sensitive(widget,
                                    hb_subtitle_can_pass(source, mux->format));

        burn = ghb_settings_get_int(subsettings, "SubtitleBurned");
        force = ghb_settings_get_int(subsettings, "SubtitleForced");
        def = ghb_settings_get_int(subsettings, "SubtitleDefaultTrack");

        if (!hb_subtitle_can_burn(source))
        {
            burn = FALSE;
        }
        if (!hb_subtitle_can_force(source))
        {
            force = FALSE;
        }
        if (!hb_subtitle_can_pass(source, mux->format))
        {
            def = FALSE;
            burn = TRUE;
        }
        ghb_settings_set_boolean(subsettings, "SubtitleBurned", burn);
        ghb_ui_update(ud, "SubtitleBurned", ghb_boolean_value(burn));
        ghb_settings_set_boolean(subsettings, "SubtitleForced", force);
        ghb_ui_update(ud, "SubtitleForced", ghb_boolean_value(force));
        ghb_settings_set_boolean(subsettings, "SubtitleDefaultTrack", def);
        ghb_ui_update(ud, "SubtitleDefaultTrack", ghb_boolean_value(def));

        // Hide regular subtitle widgets
        widget = GHB_WIDGET(ud->builder, "subtitle_track_box");
        gtk_widget_set_visible(widget, source != SRTSUB);

        // Show SRT subitle widgets
        widget = GHB_WIDGET(ud->builder, "subtitle_srt_grid");
        gtk_widget_set_visible(widget, source == SRTSUB);
    }
    else
    {
        // Hide SRT subitle widgets
        widget = GHB_WIDGET(ud->builder, "subtitle_srt_grid");
        gtk_widget_set_visible(widget, FALSE);

        // Show regular subtitle widgets
        widget = GHB_WIDGET(ud->builder, "subtitle_track_box");
        gtk_widget_set_visible(widget, TRUE);
    }
}
Example #8
0
int
main(gint argc, gchar *argv[])
{
    gint ii, jj;
    GValue *top;
    gint count = sizeof(dep_map) / sizeof(dependency_t);

    g_type_init();

    top = ghb_dict_value_new();
    for (ii = 0; ii < count; ii++)
    {
        const gchar *name;
        GValue *array;

        name = dep_map[ii].widget_name;
        if (ghb_dict_lookup(top, name))
            continue;
        array = ghb_array_value_new(8);
        for (jj = 0; jj < count; jj++)
        {
            if (strcmp(name, dep_map[jj].widget_name) == 0)
            {
                ghb_array_append(array,
                    ghb_value_dup(ghb_string_value(dep_map[jj].dep_name)));
            }
        }
        ghb_dict_insert(top, g_strdup(name), array);
    }
    ghb_plist_write_file("widget.deps", top);

    // reverse map
    top = ghb_dict_value_new();
    for (ii = 0; ii < count; ii++)
    {
        const gchar *name;
        GValue *array;

        name = dep_map[ii].dep_name;
        if (ghb_dict_lookup(top, name))
            continue;
        array = ghb_array_value_new(8);
        for (jj = 0; jj < count; jj++)
        {
            if (strcmp(name, dep_map[jj].dep_name) == 0)
            {
                GValue *data;
                data = ghb_array_value_new(3);
                ghb_array_append(data, ghb_value_dup(
                    ghb_string_value(dep_map[jj].widget_name)));
                ghb_array_append(data, ghb_value_dup(
                    ghb_string_value(dep_map[jj].enable_value)));
                ghb_array_append(data, ghb_value_dup(
                    ghb_boolean_value(dep_map[jj].disable_if_equal)));
                ghb_array_append(data, ghb_value_dup(
                    ghb_boolean_value(dep_map[jj].hide)));
                ghb_array_append(array, data);
            }
        }
        ghb_dict_insert(top, g_strdup(name), array);
    }
    ghb_plist_write_file("widget_reverse.deps", top);
    return 0;
}