+/*
+ * Get a new libfaad decoder handle.
+ *
+ * \return The handle returned by NeAACDecOpen().
+ */
+static NeAACDecHandle aac_open(void)
+{
+ NeAACDecHandle h = NeAACDecOpen();
+ NeAACDecConfigurationPtr c = NeAACDecGetCurrentConfiguration(h);
+
+ c->defObjectType = LC;
+ c->outputFormat = FAAD_FMT_16BIT;
+ c->downMatrix = 0;
+ NeAACDecSetConfiguration(h, c);
+ return h;
+}
+
+static int aacdec_execute(struct btr_node *btrn, const char *cmd, char **result)
+{
+ struct filter_node *fn = btr_context(btrn);
+ struct private_aacdec_data *padd = fn->private_data;
+
+ return decoder_execute(cmd, padd->sample_rate, padd->channels, result);
+}
+
+static void aacdec_open(struct filter_node *fn)
+{
+ struct private_aacdec_data *padd = para_calloc(sizeof(*padd));
+
+ fn->private_data = padd;
+ fn->min_iqs = 2048;
+ padd->handle = aac_open();
+}
+
+static void aacdec_close(struct filter_node *fn)