if (unlikely(filter == NULL))
return NULL;
- filter->p_owner = owner;
+ filter->owner.sys = owner;
filter->fmt_in.audio = *infmt;
filter->fmt_in.i_codec = infmt->i_format;
filter->fmt_out.audio = *outfmt;
* separate "visual" (external) and "audio-visual" (internal) variables...
* The visual plugin should have one submodule per effect instead. */
if (strcasecmp (mode, "none") && strcasecmp (mode, "goom")
- && strcasecmp (mode, "projectm") && strcasecmp (mode, "vsxu"))
+ && strcasecmp (mode, "projectm") && strcasecmp (mode, "vsxu")
+ && strcasecmp (mode, "glspectrum"))
{
var_Create (obj, "effect-list", VLC_VAR_STRING);
var_SetString (obj, "effect-list", mode);
return VLC_SUCCESS;
}
-static int EqualizerCallback (vlc_object_t *obj, const char *var,
- vlc_value_t oldval, vlc_value_t newval,
- void *data)
-{
- const char *val = newval.psz_string;
- if (!strcmp("equalizer", var) && *val)
- {
- var_Create (obj, "equalizer-preset", VLC_VAR_STRING);
- var_SetString (obj, "equalizer-preset", val);
- }
-
- if (aout_ChangeFilterString (obj, obj, "audio-filter", "equalizer", *val))
- aout_InputRequestRestart ((audio_output_t *)obj); /* <- That sucks! */
-
- (void) var; (void) oldval; (void) data;
- return VLC_SUCCESS;
-}
-
vout_thread_t *aout_filter_RequestVout (filter_t *filter, vout_thread_t *vout,
video_format_t *fmt)
{
* If you want to use visualization filters from another place, you will
* need to add a new pf_aout_request_vout callback or store a pointer
* to aout_request_vout_t inside filter_t (i.e. a level of indirection). */
- const aout_request_vout_t *req = (void *)filter->p_owner;
+ const aout_request_vout_t *req = filter->owner.sys;
char *visual = var_InheritString (filter->p_parent, "audio-visual");
- bool recycle = (visual != NULL) && strcasecmp(visual, "none");
+ /* NOTE: Disable recycling to always close the filter vout because OpenGL
+ * visualizations do not use this function to ask for a context. */
+ bool recycle = false;
free (visual);
return req->pf_request_vout (req->p_private, vout, fmt, recycle);
/* Callbacks (before reading values and also before return statement) */
if (request_vout != NULL)
- {
- var_AddCallback (obj, "equalizer", EqualizerCallback, NULL);
- var_AddCallback (obj, "equalizer-bands", EqualizerCallback, NULL);
var_AddCallback (obj, "visual", VisualizationCallback, NULL);
- var_TriggerCallback( obj, "equalizer-bands" );
- }
-
/* Now add user filters */
if (!AOUT_FMT_LINEAR(outfmt))
{ /* Non-linear output: just convert formats, no filters/visu */
error:
aout_FiltersPipelineDestroy (filters->tab, filters->count);
- var_DelCallback (obj, "equalizer", EqualizerCallback, NULL);
- var_DelCallback (obj, "equalizer-bands", EqualizerCallback, NULL);
- var_DelCallback (obj, "visual", VisualizationCallback, NULL);
+ if (request_vout != NULL)
+ var_DelCallback (obj, "visual", VisualizationCallback, NULL);
free (filters);
return NULL;
}
aout_FiltersPipelineDestroy (&filters->resampler, 1);
aout_FiltersPipelineDestroy (filters->tab, filters->count);
if (obj != NULL)
- {
- var_DelCallback (obj, "equalizer", EqualizerCallback, NULL);
- var_DelCallback (obj, "equalizer-bands", EqualizerCallback, NULL);
var_DelCallback (obj, "visual", VisualizationCallback, NULL);
- }
free (filters);
}