Merge branch 't/testsuite'
[paraslash.git] / filter_common.c
index 8e657f5..269c4d6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2005-2010 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2011 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -137,12 +137,18 @@ void generic_filter_pre_select(struct sched *s, struct task *t)
                sched_min_delay(s);
 }
 
+#ifdef WORDS_BIGENDIAN
+#define DECODER_SAMPLE_FORMAT SF_S16_BE
+#else
+#define DECODER_SAMPLE_FORMAT SF_S16_LE
+#endif
+
 /**
  * Execute a btr command for a decoder.
  *
- * The buffer tree nodes of the writers ask the parent nodes about sample_rate
- * and the channels count. This function is called by all decoders to answer
- * these queries.
+ * The buffer tree nodes of the writers ask the parent nodes about sample_rate,
+ * channels count and sample format. This function is called by all decoders to
+ * answer these queries.
  *
  * \param cmd The command to be executed by the child node.
  * \param sample_rate Known to the decoder.
@@ -164,5 +170,9 @@ int decoder_execute(const char *cmd, unsigned sample_rate, unsigned channels,
                *result = make_message("%u", channels);
                return 1;
        }
+       if (!strcmp(cmd, "sample_format")) {
+               *result = make_message("%u", DECODER_SAMPLE_FORMAT);
+               return 1;
+       }
        return -ERRNO_TO_PARA_ERROR(ENOTSUP);
 }