summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gtk/src/hb-backend.c290
1 files changed, 119 insertions, 171 deletions
diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c
index dc0372c30..7d5680658 100644
--- a/gtk/src/hb-backend.c
+++ b/gtk/src/hb-backend.c
@@ -318,78 +318,103 @@ combo_opts_t trellis_opts =
d_trellis_opts
};
+typedef struct
+{
+ int filter_id;
+ gboolean preset;
+} filter_opts_t;
+
+static filter_opts_t nlmeans_preset_opts =
+{
+ .filter_id = HB_FILTER_NLMEANS,
+ .preset = TRUE
+};
+
+static filter_opts_t nlmeans_tune_opts =
+{
+ .filter_id = HB_FILTER_NLMEANS,
+ .preset = FALSE
+};
+
+#if 0
+static filter_opts_t hqdn3d_preset_opts =
+{
+ .filter_id = HB_FILTER_HQDN3D,
+ .preset = TRUE
+};
+#endif
+
+static filter_opts_t detel_opts =
+{
+ .filter_id = HB_FILTER_DETELECINE,
+ .preset = TRUE
+};
+
+static filter_opts_t decomb_opts =
+{
+ .filter_id = HB_FILTER_DECOMB,
+ .preset = TRUE
+};
+
+static filter_opts_t deint_opts =
+{
+ .filter_id = HB_FILTER_DEINTERLACE,
+ .preset = TRUE
+};
+
typedef void (*opts_set_f)(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
-typedef GhbValue* (*opt_get_f)(const gchar *name, const combo_opts_t *opts,
+ void *opts, const void* data);
+typedef GhbValue* (*opt_get_f)(const gchar *name, const void *opts,
const GhbValue *gval, GhbType type);
typedef struct
{
const gchar * name;
- combo_opts_t * opts;
+ void * opts;
opts_set_f opts_set;
opt_get_f opt_get;
} combo_name_map_t;
static void small_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void audio_bitrate_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void audio_samplerate_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void video_framerate_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void mix_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void video_encoder_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void audio_encoder_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void acodec_fallback_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void language_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void srt_codeset_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void title_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void audio_track_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void subtitle_track_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void video_tune_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void video_profile_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void video_level_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
+ void *opts, const void* data);
static void container_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
-static void deint_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
-static void decomb_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
-static void detel_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
-static void denoise_preset_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
-static void denoise_tune_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data);
-
-static GhbValue * generic_opt_get(const char *name, const combo_opts_t *opts,
+ void *opts, const void* data);
+static void filter_opts_set(signal_user_data_t *ud, const gchar *name,
+ void *opts, const void* data);
+
+static GhbValue * generic_opt_get(const char *name, const void *opts,
const GhbValue *gval, GhbType type);
-static GhbValue * deint_opt_get(const char *name, const combo_opts_t *opts,
- const GhbValue *gval, GhbType type);
-static GhbValue * decomb_opt_get(const char *name, const combo_opts_t *opts,
- const GhbValue *gval, GhbType type);
-static GhbValue * detel_opt_get(const char *name, const combo_opts_t *opts,
+static GhbValue * filter_opt_get(const char *name, const void *opts,
const GhbValue *gval, GhbType type);
-static GhbValue *
-denoise_preset_opt_get(const char *name, const combo_opts_t *opts,
- const GhbValue *gval, GhbType type);
-static GhbValue *
-denoise_tune_opt_get(const char *name, const combo_opts_t *opts,
- const GhbValue *gval, GhbType type);
-
combo_name_map_t combo_name_map[] =
{
{
@@ -460,21 +485,21 @@ combo_name_map_t combo_name_map[] =
},
{
"PictureDeinterlace",
- NULL,
- deint_opts_set,
- deint_opt_get
+ &deint_opts,
+ filter_opts_set,
+ filter_opt_get
},
{
"PictureDecomb",
- NULL,
- decomb_opts_set,
- decomb_opt_get
+ &decomb_opts,
+ filter_opts_set,
+ filter_opt_get
},
{
"PictureDetelecine",
- NULL,
- detel_opts_set,
- detel_opt_get
+ &detel_opts,
+ filter_opts_set,
+ filter_opt_get
},
{
"PictureDenoiseFilter",
@@ -484,15 +509,15 @@ combo_name_map_t combo_name_map[] =
},
{
"PictureDenoisePreset",
- NULL,
- denoise_preset_opts_set,
- denoise_preset_opt_get
+ &nlmeans_preset_opts,
+ filter_opts_set,
+ filter_opt_get
},
{
"PictureDenoiseTune",
- NULL,
- denoise_tune_opts_set,
- denoise_tune_opt_get
+ &nlmeans_tune_opts,
+ filter_opts_set,
+ filter_opt_get
},
{
"x264_direct",
@@ -1522,7 +1547,7 @@ ghb_audio_samplerate_opts_set(GtkComboBox *combo)
static void
audio_samplerate_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -1599,7 +1624,7 @@ ghb_settings_audio_samplerate(const GhbValue *settings, const char *name)
static void
video_framerate_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -1701,11 +1726,8 @@ ghb_settings_video_framerate(const GhbValue *settings, const char *name)
}
static void
-video_encoder_opts_set(
- signal_user_data_t *ud,
- const gchar *name,
- combo_opts_t *opts,
- const void* data)
+video_encoder_opts_set(signal_user_data_t *ud, const gchar *name,
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -1865,11 +1887,8 @@ ghb_audio_encoder_opts_set(GtkComboBox *combo)
}
static void
-audio_encoder_opts_set(
- signal_user_data_t *ud,
- const gchar *name,
- combo_opts_t *opts,
- const void* data)
+audio_encoder_opts_set(signal_user_data_t *ud, const gchar *name,
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -1903,7 +1922,7 @@ audio_encoder_opts_set(
static void
acodec_fallback_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -1980,7 +1999,7 @@ ghb_settings_mixdown(const GhbValue *settings, const char *name)
static void
mix_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -1990,11 +2009,8 @@ mix_opts_set(signal_user_data_t *ud, const gchar *name,
}
static void
-container_opts_set(
- signal_user_data_t *ud,
- const gchar *name,
- combo_opts_t *opts,
- const void* data)
+container_opts_set(signal_user_data_t *ud, const gchar *name,
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -2045,7 +2061,7 @@ ghb_lookup_container_by_name(const gchar *name)
static void
srt_codeset_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -2071,7 +2087,7 @@ srt_codeset_opts_set(signal_user_data_t *ud, const gchar *name,
static void
language_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -2159,7 +2175,7 @@ ghb_create_title_label(const hb_title_t *title)
static void
title_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -2283,7 +2299,7 @@ ghb_lookup_queue_title(int title_id, int *index)
static void
video_tune_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -2338,7 +2354,7 @@ video_tune_opts_set(signal_user_data_t *ud, const gchar *name,
static void
video_profile_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -2381,7 +2397,7 @@ video_profile_opts_set(signal_user_data_t *ud, const gchar *name,
static void
video_level_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
@@ -2445,7 +2461,7 @@ find_combo_item_by_int(GtkTreeModel *store, gint value, GtkTreeIter *iter)
void
audio_track_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
const hb_title_t *title = (const hb_title_t*)data;
@@ -2501,11 +2517,8 @@ audio_track_opts_set(signal_user_data_t *ud, const gchar *name,
}
static void
-subtitle_track_opts_set(
- signal_user_data_t *ud,
- const gchar *name,
- combo_opts_t *opts,
- const void* data)
+subtitle_track_opts_set(signal_user_data_t *ud, const gchar *name,
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
const hb_title_t *title = (const hb_title_t*)data;
@@ -2649,9 +2662,10 @@ ghb_find_subtitle_track(const hb_title_t * title, const gchar * lang, int start)
static void
small_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *vopts, const void* data)
{
(void)data; // Silence "unused variable" warning
+ combo_opts_t *opts = (combo_opts_t*)vopts;
GtkTreeIter iter;
GtkListStore *store;
gint ii;
@@ -2678,8 +2692,8 @@ small_opts_set(signal_user_data_t *ud, const gchar *name,
}
static void
-filter_opts_set(signal_user_data_t *ud, const gchar *name,
- int filter_id, int preset)
+filter_opts_set2(signal_user_data_t *ud, const gchar *name,
+ int filter_id, int preset)
{
GtkTreeIter iter;
GtkListStore *store;
@@ -2717,48 +2731,13 @@ filter_opts_set(signal_user_data_t *ud, const gchar *name,
}
static void
-deint_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
-{
- (void)opts; // Silence "unused variable" warning
- (void)data; // Silence "unused variable" warning
- filter_opts_set(ud, name, HB_FILTER_DEINTERLACE, 1);
-}
-
-static void
-decomb_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
-{
- (void)opts; // Silence "unused variable" warning
- (void)data; // Silence "unused variable" warning
- filter_opts_set(ud, name, HB_FILTER_DECOMB, 1);
-}
-
-static void
-detel_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
-{
- (void)opts; // Silence "unused variable" warning
- (void)data; // Silence "unused variable" warning
- filter_opts_set(ud, name, HB_FILTER_DETELECINE, 1);
-}
-
-static void
-denoise_preset_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+filter_opts_set(signal_user_data_t *ud, const gchar *name,
+ void *vopts, const void* data)
{
- (void)opts; // Silence "unused variable" warning
- (void)data; // Silence "unused variable" warning
- filter_opts_set(ud, name, HB_FILTER_NLMEANS, 1);
-}
+ filter_opts_t *opts = (filter_opts_t*)vopts;
-static void
-denoise_tune_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
-{
- (void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning
- filter_opts_set(ud, name, HB_FILTER_NLMEANS, 0);
+ filter_opts_set2(ud, name, opts->filter_id, opts->preset);
}
combo_name_map_t*
@@ -2788,9 +2767,10 @@ find_combo_opts(const gchar *name)
}
static GhbValue *
-generic_opt_get(const char *name, const combo_opts_t *opts,
+generic_opt_get(const char *name, const void *vopts,
const GhbValue *gval, GhbType type)
{
+ combo_opts_t *opts = (combo_opts_t*)vopts;
GhbValue *result = NULL;
switch (type)
{
@@ -2818,7 +2798,7 @@ generic_opt_get(const char *name, const combo_opts_t *opts,
}
static GhbValue *
-filter_opt_get(const char *name, const GhbValue *gval, GhbType type,
+filter_opt_get2(const char *name, const GhbValue *gval, GhbType type,
int filter_id, int preset)
{
GhbValue *result = NULL;
@@ -2853,43 +2833,11 @@ filter_opt_get(const char *name, const GhbValue *gval, GhbType type,
}
static GhbValue *
-deint_opt_get(const char *name, const combo_opts_t *opts,
- const GhbValue *gval, GhbType type)
-{
- (void)opts; // Silence "unused variable" warning
- return filter_opt_get(name, gval, type, HB_FILTER_DEINTERLACE, 1);
-}
-
-static GhbValue *
-decomb_opt_get(const char *name, const combo_opts_t *opts,
- const GhbValue *gval, GhbType type)
-{
- (void)opts; // Silence "unused variable" warning
- return filter_opt_get(name, gval, type, HB_FILTER_DECOMB, 1);
-}
-
-static GhbValue *
-detel_opt_get(const char *name, const combo_opts_t *opts,
- const GhbValue *gval, GhbType type)
+filter_opt_get(const char *name, const void *vopts,
+ const GhbValue *gval, GhbType type)
{
- (void)opts; // Silence "unused variable" warning
- return filter_opt_get(name, gval, type, HB_FILTER_DETELECINE, 1);
-}
-
-static GhbValue *
-denoise_preset_opt_get(const char *name, const combo_opts_t *opts,
- const GhbValue *gval, GhbType type)
-{
- (void)opts; // Silence "unused variable" warning
- return filter_opt_get(name, gval, type, HB_FILTER_NLMEANS, 1);
-}
-
-static GhbValue *
-denoise_tune_opt_get(const char *name, const combo_opts_t *opts,
- const GhbValue *gval, GhbType type)
-{
- (void)opts; // Silence "unused variable" warning
- return filter_opt_get(name, gval, type, HB_FILTER_NLMEANS, 0);
+ filter_opts_t *opts = (filter_opts_t*)vopts;
+ return filter_opt_get2(name, gval, type, opts->filter_id, opts->preset);
}
static GhbValue *
@@ -3182,7 +3130,7 @@ ghb_audio_bitrate_opts_set(GtkComboBox *combo)
static void
audio_bitrate_opts_set(signal_user_data_t *ud, const gchar *name,
- combo_opts_t *opts, const void* data)
+ void *opts, const void* data)
{
(void)opts; // Silence "unused variable" warning
(void)data; // Silence "unused variable" warning