+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;
+
+ if (!strcmp(cmd, "samplerate")) {
+ if (padd->samplerate == 0)
+ return -ERRNO_TO_PARA_ERROR(ENAVAIL);
+ *result = make_message("%u", padd->samplerate);
+ return 1;
+ }
+ if (!strcmp(cmd, "channels")) {
+ if (padd->channels == 0)
+ return -ERRNO_TO_PARA_ERROR(ENAVAIL);
+ *result = make_message("%u", padd->channels);
+ return 1;
+ }
+ return -ERRNO_TO_PARA_ERROR(ENOTSUP);
+}
+
+static void aacdec_open(struct filter_node *fn)
+{
+ struct private_aacdec_data *padd = para_calloc(sizeof(*padd));
+
+ fn->private_data = padd;
+ fn->bufsize = AAC_OUTBUF_SIZE;
+ fn->buf = para_calloc(fn->bufsize);
+ fn->min_iqs = 2048;
+ padd->handle = aac_open();
+}
+
+static void aacdec_close(struct filter_node *fn)