static void gst_crossfeed_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { GstCrossfeed *crossfeed = GST_CROSSFEED (object); switch (prop_id) { case ARG_ACTIVE: GST_CROSSFEED_LOCK (crossfeed); crossfeed->active = g_value_get_boolean (value); gst_crossfeed_update_passthrough (crossfeed); /* Clear the filter buffer if it gets set inactive, so we have * a fresh start when it gets activated again. */ if (!crossfeed->active) { GST_CROSSFEED_UNLOCK (crossfeed); GST_CROSSFEED_BS2B_LOCK (crossfeed); bs2b_clear (crossfeed->bs2bdp); GST_CROSSFEED_BS2B_UNLOCK (crossfeed); } else { GST_CROSSFEED_UNLOCK (crossfeed); } break; case ARG_FCUT: GST_CROSSFEED_BS2B_LOCK (crossfeed); bs2b_set_level_fcut (crossfeed->bs2bdp, g_value_get_int (value)); GST_CROSSFEED_BS2B_UNLOCK (crossfeed); break; case ARG_FEED: GST_CROSSFEED_BS2B_LOCK (crossfeed); bs2b_set_level_feed (crossfeed->bs2bdp, g_value_get_int (value)); GST_CROSSFEED_BS2B_UNLOCK (crossfeed); break; case ARG_PRESET: switch (g_value_get_enum (value)) { case PRESET_DEFAULT: GST_CROSSFEED_BS2B_LOCK (crossfeed); bs2b_set_level (crossfeed->bs2bdp, BS2B_DEFAULT_CLEVEL); GST_CROSSFEED_BS2B_UNLOCK (crossfeed); break; case PRESET_CMOY: GST_CROSSFEED_BS2B_LOCK (crossfeed); bs2b_set_level (crossfeed->bs2bdp, BS2B_CMOY_CLEVEL); GST_CROSSFEED_BS2B_UNLOCK (crossfeed); break; case PRESET_JMEIER: GST_CROSSFEED_BS2B_LOCK (crossfeed); bs2b_set_level (crossfeed->bs2bdp, BS2B_JMEIER_CLEVEL); GST_CROSSFEED_BS2B_UNLOCK (crossfeed); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
gboolean init() { aud_config_set_defaults("bs2b", bs2b_defaults); bs2b = bs2b_open(); if (bs2b == NULL) return FALSE; bs2b_set_level_feed(bs2b, feed_level); bs2b_set_level_fcut(bs2b, fcut_level); return TRUE; }
static av_cold int init(AVFilterContext *ctx) { Bs2bContext *bs2b = ctx->priv; if (!(bs2b->bs2bp = bs2b_open())) return AVERROR(ENOMEM); bs2b_set_level(bs2b->bs2bp, bs2b->profile); if (bs2b->fcut) bs2b_set_level_fcut(bs2b->bs2bp, bs2b->fcut); if (bs2b->feed) bs2b_set_level_feed(bs2b->bs2bp, bs2b->feed); return 0; }
static void fcut_value_changed(GtkRange *range, gpointer data) { aud_set_int("bs2b", "fcut", gtk_range_get_value(range)); bs2b_set_level_fcut(bs2b, fcut_level); }