summaryrefslogtreecommitdiffstats
path: root/gst/siren/common.h
diff options
context:
space:
mode:
authorYouness Alaoui <youness.alaoui@collabora.co.uk>2008-04-10 07:01:16 +0000
committerEdward Hervey <bilboed@bilboed.com>2009-02-17 19:29:39 +0100
commitb9ea3bbe4f4948d667599c79f6cc2fcf414e47a6 (patch)
treeb7b165e3e1ee7fdca884b3b3aa38fb7f5d3e1b12 /gst/siren/common.h
parent79ebcb8fe5f4c856e87b51d7eaef9e59a53f763c (diff)
downloadgst-plugins-bad-b9ea3bbe4f4948d667599c79f6cc2fcf414e47a6.tar.gz
gst-plugins-bad-b9ea3bbe4f4948d667599c79f6cc2fcf414e47a6.tar.bz2
gst-plugins-bad-b9ea3bbe4f4948d667599c79f6cc2fcf414e47a6.zip
[MOVED FROM GST-P-FARSIGHT] Added Siren encoder/decoder/payloader/depayloader
20080410070116-4f0f6-72ffbdbb262f07bfabd1e469973a01b3359bee45.gz
Diffstat (limited to 'gst/siren/common.h')
-rw-r--r--gst/siren/common.h146
1 files changed, 146 insertions, 0 deletions
diff --git a/gst/siren/common.h b/gst/siren/common.h
new file mode 100644
index 00000000..1ed342ce
--- /dev/null
+++ b/gst/siren/common.h
@@ -0,0 +1,146 @@
+/*
+ * Siren Encoder/Decoder library
+ *
+ * @author: Youness Alaoui <kakaroto@kakaroto.homelinux.net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef _SIREN_COMMON_H
+#define _SIREN_COMMON_H
+
+typedef struct {
+ unsigned int RiffId;
+ unsigned int RiffSize;
+} RiffHeader;
+
+typedef struct {
+ unsigned short Format;
+ unsigned short Channels;
+ unsigned int SampleRate;
+ unsigned int ByteRate;
+ unsigned short BlockAlign;
+ unsigned short BitsPerSample;
+} FmtChunk;
+
+
+typedef struct {
+ FmtChunk fmt;
+ unsigned short ExtraSize;
+ unsigned short DctLength;
+} SirenFmtChunk;
+
+typedef struct {
+ RiffHeader riff;
+ unsigned int WaveId;
+
+ unsigned int FmtId;
+ unsigned int FmtSize;
+
+ SirenFmtChunk fmt;
+
+ unsigned int FactId;
+ unsigned int FactSize;
+ unsigned int Samples;
+
+ unsigned int DataId;
+ unsigned int DataSize;
+} SirenWavHeader;
+
+typedef struct {
+ RiffHeader riff;
+ unsigned int WaveId;
+
+ unsigned int FmtId;
+ unsigned int FmtSize;
+
+ FmtChunk fmt;
+
+ unsigned int FactId;
+ unsigned int FactSize;
+ unsigned int Samples;
+
+ unsigned int DataId;
+ unsigned int DataSize;
+} PCMWavHeader;
+
+#define RIFF_ID 0x46464952
+#define WAVE_ID 0x45564157
+#define FMT__ID 0x20746d66
+#define DATA_ID 0x61746164
+#define FACT_ID 0x74636166
+
+
+extern int region_size;
+extern float region_size_inverse;
+extern float standard_deviation[64];
+extern float deviation_inverse[64];
+extern float region_power_table_boundary[63];
+extern int expected_bits_table[8];
+extern int vector_dimension[8];
+extern int number_of_vectors[8];
+extern float dead_zone[8];
+extern int max_bin[8];
+extern float step_size[8];
+extern float step_size_inverse[8];
+
+
+
+extern void siren_init();
+extern int categorize_regions(int number_of_regions, int number_of_available_bits, int *absolute_region_power_index, int *power_categories, int *category_balance);
+extern int GetSirenCodecInfo(int flag, int sample_rate, int *number_of_coefs, int *sample_rate_bits, int *rate_control_bits, int *rate_control_possibilities, int *checksum_bits, int *esf_adjustment, int *scale_factor, int *number_of_regions, int *sample_rate_code, int *bits_per_frame );
+
+
+#ifdef __BIG_ENDIAN__
+
+#define POW_2_8 256
+#define POW_2_16 65536
+#define POW_2_24 16777216
+
+#define IDX(val, i) ((unsigned int) ((unsigned char *) &val)[i])
+
+
+
+#define ME_FROM_LE16(val) ( (unsigned short) ( IDX(val, 0) + IDX(val, 1) * 256 ))
+#define ME_FROM_LE32(val) ( (unsigned int) (IDX(val, 0) + IDX(val, 1) * 256 + \
+ IDX(val, 2) * 65536 + IDX(val, 3) * 16777216))
+
+
+#define ME_TO_LE16(val) ( (unsigned short) ( \
+ (((unsigned short)val % 256) & 0xff) << 8 | \
+ ((((unsigned short)val / POW_2_8) % 256) & 0xff) ))
+
+#define ME_TO_LE16(val) ( (unsigned int) ( \
+ ((((unsigned int) val ) % 256) & 0xff) << 24 | \
+ ((((unsigned int) val / POW_2_8 ) % 256) & 0xff) << 16| \
+ ((((unsigned int) val / POW_2_16) % 256) & 0xff) << 8 | \
+ ((((unsigned int) val / POW_2_24) % 256) & 0xff) ))
+
+#else
+
+#define ME_TO_LE16(val) ( (unsigned short) (val))
+#define ME_TO_LE32(val) ( (unsigned int) (val))
+#define ME_FROM_LE16(val) ( (unsigned short) (val))
+#define ME_FROM_LE32(val) ( (unsigned int) (val))
+
+
+#endif
+
+
+
+#endif /* _SIREN_COMMON_H */
+