// Save indexes s->i = i; s->ri = ri; s->wi = wi; // Set output data data->planes[0] = af->data->planes[0]; mp_audio_set_channels_old(data, af->data->nch); return 0; } static int af_open(struct af_instance* af){ af->control=control; af->filter=filter; return AF_OK; } #define OPT_BASE_STRUCT af_surround_t const struct af_info af_info_surround = { .info = "Surround decoder filter", .name = "surround", .flags = AF_FLAGS_NOT_REENTRANT, .open = af_open, .priv_size = sizeof(af_surround_t), .options = (const struct m_option[]) { OPT_FLOATRANGE("d", d, 0, 0, 1000, OPTDEF_FLOAT(20.0)), {0} }, };
int i = 0; af->control=control; af->filter_frame = filter; af_drc_t *priv = af->priv; priv->mul = MUL_INIT; priv->lastavg = ((float)SHRT_MAX) * DEFAULT_TARGET; priv->idx = 0; for (i = 0; i < NSAMPLES; i++) { priv->mem[i].len = 0; priv->mem[i].avg = 0; } priv->mid_s16 = ((float)SHRT_MAX) * priv->mid_float; return AF_OK; } #define OPT_BASE_STRUCT af_drc_t const struct af_info af_info_drc = { .info = "Dynamic range compression filter", .name = "drc", .flags = AF_FLAGS_NOT_REENTRANT, .open = af_open, .priv_size = sizeof(af_drc_t), .options = (const struct m_option[]) { OPT_INTRANGE("method", method, 0, 1, 2, OPTDEF_INT(1)), OPT_FLOAT("target", mid_float, 0, OPTDEF_FLOAT(DEFAULT_TARGET)), {0} }, };
} if (data->format == AF_FORMAT_FLOAT) { play_float(af->priv, data); } else { play_s16(af->priv, data); } af_add_output_frame(af, data); return 0; } // Allocate memory and set function pointers static int af_open(struct af_instance* af){ af->control=control; af->filter_frame = filter_frame; return AF_OK; } #define OPT_BASE_STRUCT af_extrastereo_t const struct af_info af_info_extrastereo = { .info = "Increase difference between audio channels", .name = "extrastereo", .flags = AF_FLAGS_NOT_REENTRANT, .open = af_open, .priv_size = sizeof(af_extrastereo_t), .options = (const struct m_option[]) { OPT_FLOAT("mul", mul, 0, OPTDEF_FLOAT(2.5)), {0} }, };