diff options
37 files changed, 473 insertions, 1052 deletions
diff --git a/codecs/adpcm_slin_ex.h b/codecs/adpcm_slin_ex.h deleted file mode 100644 index c3f86c72d..000000000 --- a/codecs/adpcm_slin_ex.h +++ /dev/null @@ -1,25 +0,0 @@ -/*! \file - * adpcm_slin_ex.h -- - * - * \brief 4-bit ADPCM data, 20 milliseconds worth at 8 kHz. - * - * Source: g723.example - * - * Copyright (C) 2001-2005, Digium, Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static unsigned char adpcm_slin_ex[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/codecs/codec_a_mu.c b/codecs/codec_a_mu.c index cf0354720..9b2e40850 100644 --- a/codecs/codec_a_mu.c +++ b/codecs/codec_a_mu.c @@ -38,9 +38,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") static unsigned char mu2a[256]; static unsigned char a2mu[256]; -/* Sample frame data (Mu data is okay) */ - -#include "ulaw_slin_ex.h" +/* Sample frame data */ +#include "ex_ulaw.h" +#include "ex_alaw.h" /*! \brief convert frame data and store into the buffer */ static int alawtoulaw_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) @@ -74,43 +74,12 @@ static int ulawtoalaw_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) return 0; } -/* - * alawToLin_Sample. Just random data, somehow... - */ -static struct ast_frame *alawtoulaw_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_ALAW; - f.datalen = sizeof(ulaw_slin_ex); - f.samples = sizeof(ulaw_slin_ex); - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = ulaw_slin_ex; /* XXX what ? */ - return &f; -} - -static struct ast_frame *ulawtoalaw_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_ULAW; - f.datalen = sizeof(ulaw_slin_ex); - f.samples = sizeof(ulaw_slin_ex); - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = ulaw_slin_ex; - return &f; -} - static struct ast_translator alawtoulaw = { .name = "alawtoulaw", .srcfmt = AST_FORMAT_ALAW, .dstfmt = AST_FORMAT_ULAW, .framein = alawtoulaw_framein, - .sample = alawtoulaw_sample, + .sample = alaw_sample, .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES, }; @@ -120,7 +89,7 @@ static struct ast_translator ulawtoalaw = { .srcfmt = AST_FORMAT_ULAW, .dstfmt = AST_FORMAT_ALAW, .framein = ulawtoalaw_framein, - .sample = ulawtoalaw_sample, + .sample = ulaw_sample, .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES, }; diff --git a/codecs/codec_adpcm.c b/codecs/codec_adpcm.c index 20901151b..d43ed44d0 100644 --- a/codecs/codec_adpcm.c +++ b/codecs/codec_adpcm.c @@ -44,9 +44,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #define BUFFER_SAMPLES 8096 /* size for the translation buffers */ /* Sample frame data */ - -#include "slin_adpcm_ex.h" -#include "adpcm_slin_ex.h" +#include "asterisk/slin.h" +#include "ex_adpcm.h" /* * Step size index shift table @@ -285,43 +284,12 @@ static struct ast_frame *lintoadpcm_frameout(struct ast_trans_pvt *pvt) } -/*! \brief AdpcmToLin_Sample */ -static struct ast_frame *adpcmtolin_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_ADPCM; - f.datalen = sizeof(adpcm_slin_ex); - f.samples = sizeof(adpcm_slin_ex) * 2; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = adpcm_slin_ex; - return &f; -} - -/*! \brief LinToAdpcm_Sample */ -static struct ast_frame *lintoadpcm_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SLINEAR; - f.datalen = sizeof(slin_adpcm_ex); - /* Assume 8000 Hz */ - f.samples = sizeof(slin_adpcm_ex) / 2; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = slin_adpcm_ex; - return &f; -} - static struct ast_translator adpcmtolin = { .name = "adpcmtolin", .srcfmt = AST_FORMAT_ADPCM, .dstfmt = AST_FORMAT_SLINEAR, .framein = adpcmtolin_framein, - .sample = adpcmtolin_sample, + .sample = adpcm_sample, .desc_size = sizeof(struct adpcm_decoder_pvt), .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES * 2, @@ -334,7 +302,7 @@ static struct ast_translator lintoadpcm = { .dstfmt = AST_FORMAT_ADPCM, .framein = lintoadpcm_framein, .frameout = lintoadpcm_frameout, - .sample = lintoadpcm_sample, + .sample = slin8_sample, .desc_size = sizeof (struct adpcm_encoder_pvt), .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES/ 2, /* 2 samples per byte */ diff --git a/codecs/codec_alaw.c b/codecs/codec_alaw.c index 04d4048b8..4ca897820 100644 --- a/codecs/codec_alaw.c +++ b/codecs/codec_alaw.c @@ -35,10 +35,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #define BUFFER_SAMPLES 8096 /* size for the translation buffers */ -/* Sample frame data (Mu data is okay) */ - -#include "slin_ulaw_ex.h" -#include "ulaw_slin_ex.h" +/* Sample frame data */ +#include "asterisk/slin.h" +#include "ex_alaw.h" /*! \brief decode frame into lin and fill output buffer. */ static int alawtolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) @@ -72,42 +71,12 @@ static int lintoalaw_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) return 0; } -/*! \brief alawToLin_Sample */ -static struct ast_frame *alawtolin_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_ALAW; - f.datalen = sizeof(ulaw_slin_ex); - f.samples = sizeof(ulaw_slin_ex); - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = ulaw_slin_ex; - return &f; -} - -/*! \brief LinToalaw_Sample */ -static struct ast_frame *lintoalaw_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SLINEAR; - f.datalen = sizeof(slin_ulaw_ex); - f.samples = sizeof(slin_ulaw_ex) / 2; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = slin_ulaw_ex; - return &f; -} - static struct ast_translator alawtolin = { .name = "alawtolin", .srcfmt = AST_FORMAT_ALAW, .dstfmt = AST_FORMAT_SLINEAR, .framein = alawtolin_framein, - .sample = alawtolin_sample, + .sample = alaw_sample, .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES * 2, .plc_samples = 160, @@ -118,7 +87,7 @@ static struct ast_translator lintoalaw = { .srcfmt = AST_FORMAT_SLINEAR, .dstfmt = AST_FORMAT_ALAW, .framein = lintoalaw_framein, - .sample = lintoalaw_sample, + .sample = slin8_sample, .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES, }; diff --git a/codecs/codec_g722.c b/codecs/codec_g722.c index 41e17807f..bdd175e57 100644 --- a/codecs/codec_g722.c +++ b/codecs/codec_g722.c @@ -46,11 +46,11 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #define BUFFER_SAMPLES 8096 /* size for the translation buffers */ #define BUF_SHIFT 5 -/* Sample frame data */ - #include "g722/g722.h" -#include "slin_g722_ex.h" -#include "g722_slin_ex.h" + +/* Sample frame data */ +#include "asterisk/slin.h" +#include "ex_g722.h" struct g722_encoder_pvt { g722_encode_state_t g722; @@ -132,69 +132,13 @@ static int lintog722_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) return 0; } -static struct ast_frame *g722tolin_sample(void) -{ - static struct ast_frame f = { - .frametype = AST_FRAME_VOICE, - .subclass = AST_FORMAT_G722, - .datalen = sizeof(g722_slin_ex), - .samples = sizeof(g722_slin_ex) * 2, - .src = __PRETTY_FUNCTION__, - .data.ptr = g722_slin_ex, - }; - - return &f; -} - -static struct ast_frame *g722tolin16_sample(void) -{ - static struct ast_frame f = { - .frametype = AST_FRAME_VOICE, - .subclass = AST_FORMAT_G722, - .datalen = sizeof(g722_slin_ex), - .samples = sizeof(g722_slin_ex) * 2, - .src = __PRETTY_FUNCTION__, - .data.ptr = g722_slin_ex, - }; - - return &f; -} - -static struct ast_frame *lintog722_sample (void) -{ - static struct ast_frame f = { - .frametype = AST_FRAME_VOICE, - .subclass = AST_FORMAT_SLINEAR, - .datalen = sizeof(slin_g722_ex), - .samples = ARRAY_LEN(slin_g722_ex), - .src = __PRETTY_FUNCTION__, - .data.ptr = slin_g722_ex, - }; - - return &f; -} - -static struct ast_frame *lin16tog722_sample (void) -{ - static struct ast_frame f = { - .frametype = AST_FRAME_VOICE, - .subclass = AST_FORMAT_SLINEAR16, - .datalen = sizeof(slin_g722_ex), - .samples = ARRAY_LEN(slin_g722_ex), - .src = __PRETTY_FUNCTION__, - .data.ptr = slin_g722_ex, - }; - - return &f; -} - static struct ast_translator g722tolin = { .name = "g722tolin", .srcfmt = AST_FORMAT_G722, .dstfmt = AST_FORMAT_SLINEAR, .newpvt = g722tolin_new, /* same for both directions */ .framein = g722tolin_framein, - .sample = g722tolin_sample, + .sample = g722_sample, .desc_size = sizeof(struct g722_decoder_pvt), .buffer_samples = BUFFER_SAMPLES / sizeof(int16_t), .buf_size = BUFFER_SAMPLES, @@ -207,7 +151,7 @@ static struct ast_translator lintog722 = { .dstfmt = AST_FORMAT_G722, .newpvt = lintog722_new, /* same for both directions */ .framein = lintog722_framein, - .sample = lintog722_sample, + .sample = slin8_sample, .desc_size = sizeof(struct g722_encoder_pvt), .buffer_samples = BUFFER_SAMPLES * 2, .buf_size = BUFFER_SAMPLES, @@ -219,7 +163,7 @@ static struct ast_translator g722tolin16 = { .dstfmt = AST_FORMAT_SLINEAR16, .newpvt = g722tolin16_new, /* same for both directions */ .framein = g722tolin_framein, - .sample = g722tolin16_sample, + .sample = g722_sample, .desc_size = sizeof(struct g722_decoder_pvt), .buffer_samples = BUFFER_SAMPLES / sizeof(int16_t), .buf_size = BUFFER_SAMPLES, @@ -232,7 +176,7 @@ static struct ast_translator lin16tog722 = { .dstfmt = AST_FORMAT_G722, .newpvt = lin16tog722_new, /* same for both directions */ .framein = lintog722_framein, - .sample = lin16tog722_sample, + .sample = slin16_sample, .desc_size = sizeof(struct g722_encoder_pvt), .buffer_samples = BUFFER_SAMPLES * 2, .buf_size = BUFFER_SAMPLES, diff --git a/codecs/codec_g726.c b/codecs/codec_g726.c index 38d461a1c..cce448f1b 100644 --- a/codecs/codec_g726.c +++ b/codecs/codec_g726.c @@ -58,9 +58,8 @@ typedef long long sint64; #define BUF_SHIFT 5 /* Sample frame data */ - -#include "slin_g726_ex.h" -#include "g726_slin_ex.h" +#include "asterisk/slin.h" +#include "ex_g726.h" /* * The following is the definition of the state structure @@ -786,41 +785,13 @@ static int g726tog726aal2_framein(struct ast_trans_pvt *pvt, struct ast_frame *f return 0; } -static struct ast_frame *g726tolin_sample(void) -{ - static struct ast_frame f = { - .frametype = AST_FRAME_VOICE, - .subclass = AST_FORMAT_G726, - .datalen = sizeof(g726_slin_ex), - .samples = sizeof(g726_slin_ex) * 2, /* 2 samples per byte */ - .src = __PRETTY_FUNCTION__, - .data.ptr = g726_slin_ex, - }; - - return &f; -} - -static struct ast_frame *lintog726_sample (void) -{ - static struct ast_frame f = { - .frametype = AST_FRAME_VOICE, - .subclass = AST_FORMAT_SLINEAR, - .datalen = sizeof(slin_g726_ex), - .samples = sizeof(slin_g726_ex) / 2, /* 1 sample per 2 bytes */ - .src = __PRETTY_FUNCTION__, - .data.ptr = slin_g726_ex, - }; - - return &f; -} - static struct ast_translator g726tolin = { .name = "g726tolin", .srcfmt = AST_FORMAT_G726, .dstfmt = AST_FORMAT_SLINEAR, .newpvt = lintog726_new, /* same for both directions */ .framein = g726tolin_framein, - .sample = g726tolin_sample, + .sample = g726_sample, .desc_size = sizeof(struct g726_coder_pvt), .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES * 2, @@ -833,7 +804,7 @@ static struct ast_translator lintog726 = { .dstfmt = AST_FORMAT_G726, .newpvt = lintog726_new, /* same for both directions */ .framein = lintog726_framein, - .sample = lintog726_sample, + .sample = slin8_sample, .desc_size = sizeof(struct g726_coder_pvt), .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES/2, @@ -845,7 +816,7 @@ static struct ast_translator g726aal2tolin = { .dstfmt = AST_FORMAT_SLINEAR, .newpvt = lintog726_new, /* same for both directions */ .framein = g726aal2tolin_framein, - .sample = g726tolin_sample, + .sample = g726_sample, .desc_size = sizeof(struct g726_coder_pvt), .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES * 2, @@ -858,7 +829,7 @@ static struct ast_translator lintog726aal2 = { .dstfmt = AST_FORMAT_G726_AAL2, .newpvt = lintog726_new, /* same for both directions */ .framein = lintog726aal2_framein, - .sample = lintog726_sample, + .sample = slin8_sample, .desc_size = sizeof(struct g726_coder_pvt), .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES / 2, @@ -869,7 +840,7 @@ static struct ast_translator g726tog726aal2 = { .srcfmt = AST_FORMAT_G726, .dstfmt = AST_FORMAT_G726_AAL2, .framein = g726tog726aal2_framein, /* same for both directions */ - .sample = lintog726_sample, + .sample = g726_sample, .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES, }; @@ -879,7 +850,7 @@ static struct ast_translator g726aal2tog726 = { .srcfmt = AST_FORMAT_G726_AAL2, .dstfmt = AST_FORMAT_G726, .framein = g726tog726aal2_framein, /* same for both directions */ - .sample = lintog726_sample, + .sample = g726_sample, .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES, }; diff --git a/codecs/codec_gsm.c b/codecs/codec_gsm.c index 1664632a4..03ea4bc21 100644 --- a/codecs/codec_gsm.c +++ b/codecs/codec_gsm.c @@ -47,15 +47,15 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "../formats/msgsm.h" -/* Sample frame data */ -#include "slin_gsm_ex.h" -#include "gsm_slin_ex.h" - #define BUFFER_SAMPLES 8000 #define GSM_SAMPLES 160 #define GSM_FRAME_LEN 33 #define MSGSM_FRAME_LEN 65 +/* Sample frame data */ +#include "asterisk/slin.h" +#include "ex_gsm.h" + struct gsm_translator_pvt { /* both gsm2lin and lin2gsm */ gsm gsm; int16_t buf[BUFFER_SAMPLES]; /* lin2gsm, temporary storage */ @@ -68,36 +68,6 @@ static int gsm_new(struct ast_trans_pvt *pvt) return (tmp->gsm = gsm_create()) ? 0 : -1; } -static struct ast_frame *lintogsm_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SLINEAR; - f.datalen = sizeof(slin_gsm_ex); - /* Assume 8000 Hz */ - f.samples = sizeof(slin_gsm_ex)/2; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = slin_gsm_ex; - return &f; -} - -static struct ast_frame *gsmtolin_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_GSM; - f.datalen = sizeof(gsm_slin_ex); - /* All frames are 20 ms long */ - f.samples = GSM_SAMPLES; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = gsm_slin_ex; - return &f; -} - /*! \brief decode and store in outbuf. */ static int gsmtolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) { @@ -203,7 +173,7 @@ static struct ast_translator gsmtolin = { .newpvt = gsm_new, .framein = gsmtolin_framein, .destroy = gsm_destroy_stuff, - .sample = gsmtolin_sample, + .sample = gsm_sample, .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES * 2, .desc_size = sizeof (struct gsm_translator_pvt ), @@ -218,7 +188,7 @@ static struct ast_translator lintogsm = { .framein = lintogsm_framein, .frameout = lintogsm_frameout, .destroy = gsm_destroy_stuff, - .sample = lintogsm_sample, + .sample = slin8_sample, .desc_size = sizeof (struct gsm_translator_pvt ), .buf_size = (BUFFER_SAMPLES * GSM_FRAME_LEN + GSM_SAMPLES - 1)/GSM_SAMPLES, }; diff --git a/codecs/codec_ilbc.c b/codecs/codec_ilbc.c index 4914392a4..c01b2f740 100644 --- a/codecs/codec_ilbc.c +++ b/codecs/codec_ilbc.c @@ -40,10 +40,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "ilbc/iLBC_encode.h" #include "ilbc/iLBC_decode.h" -/* Sample frame data */ -#include "slin_ilbc_ex.h" -#include "ilbc_slin_ex.h" - #define USE_ILBC_ENHANCER 0 #define ILBC_MS 30 /* #define ILBC_MS 20 */ @@ -52,6 +48,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #define ILBC_SAMPLES 240 /* 30ms at 8000 hz */ #define BUFFER_SAMPLES 8000 +/* Sample frame data */ +#include "asterisk/slin.h" +#include "ex_ilbc.h" + struct ilbc_coder_pvt { iLBC_Enc_Inst_t enc; iLBC_Dec_Inst_t dec; @@ -77,35 +77,6 @@ static int ilbctolin_new(struct ast_trans_pvt *pvt) return 0; } -static struct ast_frame *lintoilbc_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SLINEAR; - f.datalen = sizeof(slin_ilbc_ex); - f.samples = sizeof(slin_ilbc_ex)/2; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = slin_ilbc_ex; - return &f; -} - -static struct ast_frame *ilbctolin_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_ILBC; - f.datalen = sizeof(ilbc_slin_ex); - /* All frames are 30 ms long */ - f.samples = ILBC_SAMPLES; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = ilbc_slin_ex; - return &f; -} - /*! \brief decode a frame and store in outbuf */ static int ilbctolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) { @@ -194,7 +165,7 @@ static struct ast_translator ilbctolin = { .dstfmt = AST_FORMAT_SLINEAR, .newpvt = ilbctolin_new, .framein = ilbctolin_framein, - .sample = ilbctolin_sample, + .sample = ilbc_sample, .desc_size = sizeof(struct ilbc_coder_pvt), .buf_size = BUFFER_SAMPLES * 2, .native_plc = 1, @@ -207,7 +178,7 @@ static struct ast_translator lintoilbc = { .newpvt = lintoilbc_new, .framein = lintoilbc_framein, .frameout = lintoilbc_frameout, - .sample = lintoilbc_sample, + .sample = slin8_sample, .desc_size = sizeof(struct ilbc_coder_pvt), .buf_size = (BUFFER_SAMPLES * ILBC_FRAME_LEN + ILBC_SAMPLES - 1) / ILBC_SAMPLES, }; diff --git a/codecs/codec_lpc10.c b/codecs/codec_lpc10.c index 9237f70fe..33ccbb241 100644 --- a/codecs/codec_lpc10.c +++ b/codecs/codec_lpc10.c @@ -39,8 +39,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "lpc10/lpc10.h" /* Sample frame data */ -#include "slin_lpc10_ex.h" -#include "lpc10_slin_ex.h" +#include "asterisk/slin.h" +#include "ex_lpc10.h" /* We use a very strange format here... I have no idea why... The frames are 180 samples long, which isn't even an even number of milliseconds... Not only that @@ -75,37 +75,6 @@ static int lpc10_dec_new(struct ast_trans_pvt *pvt) return (tmp->lpc10.dec = create_lpc10_decoder_state()) ? 0 : -1; } -static struct ast_frame *lintolpc10_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SLINEAR; - f.datalen = sizeof(slin_lpc10_ex); - /* Assume 8000 Hz */ - f.samples = LPC10_SAMPLES_PER_FRAME; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = slin_lpc10_ex; - return &f; -} - -static struct ast_frame *lpc10tolin_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_LPC10; - f.datalen = sizeof(lpc10_slin_ex); - /* All frames are 22 ms long (maybe a little more -- why did he choose - LPC10_SAMPLES_PER_FRAME sample frames anyway?? */ - f.samples = LPC10_SAMPLES_PER_FRAME; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = lpc10_slin_ex; - return &f; -} - static void extract_bits(INT32 *bits, unsigned char *c) { int x; @@ -229,7 +198,7 @@ static struct ast_translator lpc10tolin = { .newpvt = lpc10_dec_new, .framein = lpc10tolin_framein, .destroy = lpc10_destroy, - .sample = lpc10tolin_sample, + .sample = lpc10_sample, .desc_size = sizeof(struct lpc10_coder_pvt), .buffer_samples = BUFFER_SAMPLES, .plc_samples = LPC10_SAMPLES_PER_FRAME, @@ -244,7 +213,7 @@ static struct ast_translator lintolpc10 = { .framein = lintolpc10_framein, .frameout = lintolpc10_frameout, .destroy = lpc10_destroy, - .sample = lintolpc10_sample, + .sample = slin8_sample, .desc_size = sizeof(struct lpc10_coder_pvt), .buffer_samples = BUFFER_SAMPLES, .buf_size = LPC10_BYTES_IN_COMPRESSED_FRAME * (1 + BUFFER_SAMPLES / LPC10_SAMPLES_PER_FRAME), diff --git a/codecs/codec_resample.c b/codecs/codec_resample.c index 308672900..834fb46ba 100644 --- a/codecs/codec_resample.c +++ b/codecs/codec_resample.c @@ -49,7 +49,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/module.h" #include "asterisk/translate.h" -#include "slin_resample_ex.h" +#include "asterisk/slin.h" #define RESAMPLER_QUALITY 1 @@ -69,9 +69,9 @@ static int slin16_to_slin8_new(struct ast_trans_pvt *pvt) { struct slin16_to_slin8_pvt *resamp_pvt = pvt->pvt; - resamp_pvt->resample_factor = 0.5; + resamp_pvt->resample_factor = 8000.0 / 16000.0; - if (!(resamp_pvt->resampler = resample_open(RESAMPLER_QUALITY, 0.5, 0.5))) + if (!(resamp_pvt->resampler = resample_open(RESAMPLER_QUALITY, resamp_pvt->resample_factor, resamp_pvt->resample_factor))) return -1; return 0; @@ -81,9 +81,9 @@ static int slin8_to_slin16_new(struct ast_trans_pvt *pvt) { struct slin8_to_slin16_pvt *resamp_pvt = pvt->pvt; - resamp_pvt->resample_factor = 2.0; + resamp_pvt->resample_factor = 16000.0 / 8000.0; - if (!(resamp_pvt->resampler = resample_open(RESAMPLER_QUALITY, 2.0, 2.0))) + if (!(resamp_pvt->resampler = resample_open(RESAMPLER_QUALITY, resamp_pvt->resample_factor, resamp_pvt->resample_factor))) return -1; return 0; @@ -168,34 +168,6 @@ static int slin8_to_slin16_framein(struct ast_trans_pvt *pvt, struct ast_frame * return resample_frame(pvt, resampler, resample_factor, f); } -static struct ast_frame *slin16_to_slin8_sample(void) -{ - static struct ast_frame f = { - .frametype = AST_FRAME_VOICE, - .subclass = AST_FORMAT_SLINEAR16, - .datalen = sizeof(slin16_slin8_ex), - .samples = ARRAY_LEN(slin16_slin8_ex), - .src = __PRETTY_FUNCTION__, - .data.ptr = slin16_slin8_ex, - }; - - return &f; -} - -static struct ast_frame *slin8_to_slin16_sample(void) -{ - static struct ast_frame f = { - .frametype = AST_FRAME_VOICE, - .subclass = AST_FORMAT_SLINEAR, - .datalen = sizeof(slin8_slin16_ex), - .samples = ARRAY_LEN(slin8_slin16_ex), - .src = __PRETTY_FUNCTION__, - .data.ptr = slin8_slin16_ex, - }; - - return &f; -} - static struct ast_translator slin16_to_slin8 = { .name = "slin16_to_slin8", .srcfmt = AST_FORMAT_SLINEAR16, @@ -203,7 +175,7 @@ static struct ast_translator slin16_to_slin8 = { .newpvt = slin16_to_slin8_new, .destroy = slin16_to_slin8_destroy, .framein = slin16_to_slin8_framein, - .sample = slin16_to_slin8_sample, + .sample = slin16_sample, .desc_size = sizeof(struct slin16_to_slin8_pvt), .buffer_samples = (OUTBUF_SIZE / sizeof(int16_t)), .buf_size = OUTBUF_SIZE, @@ -216,7 +188,7 @@ static struct ast_translator slin8_to_slin16 = { .newpvt = slin8_to_slin16_new, .destroy = slin8_to_slin16_destroy, .framein = slin8_to_slin16_framein, - .sample = slin8_to_slin16_sample, + .sample = slin8_sample, .desc_size = sizeof(struct slin8_to_slin16_pvt), .buffer_samples = (OUTBUF_SIZE / sizeof(int16_t)), .buf_size = OUTBUF_SIZE, diff --git a/codecs/codec_speex.c b/codecs/codec_speex.c index 961aaa649..844feed2c 100644 --- a/codecs/codec_speex.c +++ b/codecs/codec_speex.c @@ -53,10 +53,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/config.h" #include "asterisk/utils.h" -/* Sample frame data */ -#include "slin_speex_ex.h" -#include "speex_slin_ex.h" - /* codec variables */ static int quality = 3; static int complexity = 2; @@ -84,6 +80,10 @@ static float pp_dereverb_level = 0.3; #define BUFFER_SAMPLES 8000 #define SPEEX_SAMPLES 160 +/* Sample frame data */ +#include "asterisk/slin.h" +#include "ex_speex.h" + struct speex_coder_pvt { void *speex; SpeexBits bits; @@ -154,36 +154,6 @@ static int speextolin_new(struct ast_trans_pvt *pvt) return 0; } -static struct ast_frame *lintospeex_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SLINEAR; - f.datalen = sizeof(slin_speex_ex); - /* Assume 8000 Hz */ - f.samples = sizeof(slin_speex_ex)/2; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = slin_speex_ex; - return &f; -} - -static struct ast_frame *speextolin_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SPEEX; - f.datalen = sizeof(speex_slin_ex); - /* All frames are 20 ms long */ - f.samples = SPEEX_SAMPLES; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = speex_slin_ex; - return &f; -} - /*! \brief convert and store into outbuf */ static int speextolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) { @@ -346,7 +316,7 @@ static struct ast_translator speextolin = { .newpvt = speextolin_new, .framein = speextolin_framein, .destroy = speextolin_destroy, - .sample = speextolin_sample, + .sample = speex_sample, .desc_size = sizeof(struct speex_coder_pvt), .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES * 2, @@ -361,7 +331,7 @@ static struct ast_translator lintospeex = { .framein = lintospeex_framein, .frameout = lintospeex_frameout, .destroy = lintospeex_destroy, - .sample = lintospeex_sample, + .sample = slin8_sample, .desc_size = sizeof(struct speex_coder_pvt), .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES * 2, /* XXX maybe a lot less ? */ diff --git a/codecs/codec_ulaw.c b/codecs/codec_ulaw.c index 799b96357..4d1c8a1ae 100644 --- a/codecs/codec_ulaw.c +++ b/codecs/codec_ulaw.c @@ -36,9 +36,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #define BUFFER_SAMPLES 8096 /* size for the translation buffers */ /* Sample frame data */ - -#include "slin_ulaw_ex.h" -#include "ulaw_slin_ex.h" +#include "asterisk/slin.h" +#include "ex_ulaw.h" /*! \brief convert and store samples in outbuf */ static int ulawtolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) @@ -73,40 +72,6 @@ static int lintoulaw_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) return 0; } -/*! * \brief ulawToLin_Sample */ -static struct ast_frame *ulawtolin_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_ULAW; - f.datalen = sizeof(ulaw_slin_ex); - f.samples = sizeof(ulaw_slin_ex); - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = ulaw_slin_ex; - return &f; -} - -/*! - * \brief LinToulaw_Sample - */ - -static struct ast_frame *lintoulaw_sample(void) -{ - static struct ast_frame f; - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SLINEAR; - f.datalen = sizeof(slin_ulaw_ex); - /* Assume 8000 Hz */ - f.samples = sizeof(slin_ulaw_ex) / 2; - f.mallocd = 0; - f.offset = 0; - f.src = __PRETTY_FUNCTION__; - f.data.ptr = slin_ulaw_ex; - return &f; -} - /*! * \brief The complete translator for ulawToLin. */ @@ -116,7 +81,7 @@ static struct ast_translator ulawtolin = { .srcfmt = AST_FORMAT_ULAW, .dstfmt = AST_FORMAT_SLINEAR, .framein = ulawtolin_framein, - .sample = ulawtolin_sample, + .sample = ulaw_sample, .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES * 2, .plc_samples = 160, @@ -131,7 +96,7 @@ static struct ast_translator lintoulaw = { .srcfmt = AST_FORMAT_SLINEAR, .dstfmt = AST_FORMAT_ULAW, .framein = lintoulaw_framein, - .sample = lintoulaw_sample, + .sample = slin8_sample, .buf_size = BUFFER_SAMPLES, .buffer_samples = BUFFER_SAMPLES, }; diff --git a/codecs/ex_adpcm.h b/codecs/ex_adpcm.h new file mode 100644 index 000000000..e1db64c83 --- /dev/null +++ b/codecs/ex_adpcm.h @@ -0,0 +1,32 @@ +/*! \file + * \brief 4-bit ADPCM data + * + * Copyright (C) 2008, Digium, Inc. + * + * Distributed under the terms of the GNU General Public License + * + */ + +static uint8_t ex_adpcm[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static struct ast_frame *adpcm_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass = AST_FORMAT_ADPCM, + .datalen = sizeof(ex_adpcm), + .samples = ARRAY_LEN(ex_adpcm) * 2, + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_adpcm, + }; + + return &f; +} diff --git a/codecs/ulaw_slin_ex.h b/codecs/ex_alaw.h index a12556824..66a904ca2 100644 --- a/codecs/ulaw_slin_ex.h +++ b/codecs/ex_alaw.h @@ -1,17 +1,13 @@ /*! \file - * \brief ulaw_slin_ex.h -- + * \brief 8-bit data * - * 4-bit ADPCM data, 20 milliseconds worth at 8 kHz. - * - * Source: g723.example - * - * Copyright (C) 2001-2005, Digium Inc. + * Copyright (C) 2008, Digium, Inc. * * Distributed under the terms of the GNU General Public License * */ -static unsigned char ulaw_slin_ex[] = { +static uint8_t ex_alaw[] = { 0x00, 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x12, 0x15, 0x10, 0x18, 0x1b, 0x1e, 0x21, 0x24, 0x27, 0x2a, 0x20, 0x2d, 0x30, 0x33, 0x36, 0x39, 0x3c, 0x3f, @@ -21,5 +17,21 @@ static unsigned char ulaw_slin_ex[] = { 0x60, 0x81, 0x84, 0x87, 0x8a, 0x8d, 0x90, 0x93, 0x70, 0x96, 0x99, 0x9c, 0x9f, 0xa2, 0xa5, 0xa8, 0x80, 0xab, 0xae, 0xb1, 0xb4, 0xb7, 0xba, 0xbd, - 0x90, 0xc0, 0xc3, 0xc6, 0xc9, 0xcc, 0xcf, 0xd2 + 0x90, 0xc0, 0xc3, 0xc6, 0xc9, 0xcc, 0xcf, 0xd2, }; + +static struct ast_frame *alaw_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass = AST_FORMAT_ALAW, + .datalen = sizeof(ex_alaw), + .samples = ARRAY_LEN(ex_alaw), + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_alaw, + }; + + return &f; +} diff --git a/codecs/ex_g722.h b/codecs/ex_g722.h new file mode 100644 index 000000000..8b0b0ff92 --- /dev/null +++ b/codecs/ex_g722.h @@ -0,0 +1,47 @@ +/*! \file + * \brief 8-bit data + * + * Copyright (C) 2008, Digium, Inc. + * + * Distributed under the terms of the GNU General Public License + * + */ + +static uint8_t ex_g722[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static struct ast_frame *g722_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass = AST_FORMAT_G722, + .datalen = sizeof(ex_g722), + .samples = ARRAY_LEN(ex_g722), + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_g722, + }; + + return &f; +} diff --git a/codecs/ex_g726.h b/codecs/ex_g726.h new file mode 100644 index 000000000..d74844d0a --- /dev/null +++ b/codecs/ex_g726.h @@ -0,0 +1,32 @@ +/*! \file + * \brief 4-bit G.726 data + * + * Copyright (C) 2008, Digium, Inc. + * + * Distributed under the terms of the GNU General Public License + * + */ + +static uint8_t ex_g726[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static struct ast_frame *g726_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass = AST_FORMAT_G726, + .datalen = sizeof(ex_g726), + .samples = ARRAY_LEN(ex_g726) * 2, /* 2 samples per byte */ + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_g726, + }; + + return &f; +} diff --git a/codecs/ex_gsm.h b/codecs/ex_gsm.h new file mode 100644 index 000000000..c9180135e --- /dev/null +++ b/codecs/ex_gsm.h @@ -0,0 +1,32 @@ +/*! \file + * \brief 8-bit raw data + * + * Copyright (C) 2008, Digium, Inc. + * + * Distributed under the terms of the GNU General Public License + * + */ + +static uint8_t ex_gsm[] = { + 0xda, 0xa6, 0xac, 0x2d, 0xa3, 0x50, 0x00, 0x49, 0x24, 0x92, + 0x49, 0x24, 0x50, 0x40, 0x49, 0x24, 0x92, 0x37, 0x24, 0x52, + 0x00, 0x49, 0x24, 0x92, 0x47, 0x24, 0x50, 0x80, 0x46, 0xe3, + 0x6d, 0xb8, 0xdc, +}; + +static struct ast_frame *gsm_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass = AST_FORMAT_GSM, + .datalen = sizeof(ex_gsm), + /* All frames are 20 ms long */ + .samples = GSM_SAMPLES, + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_gsm, + }; + + return &f; +} diff --git a/codecs/ex_ilbc.h b/codecs/ex_ilbc.h new file mode 100644 index 000000000..c72b1f27f --- /dev/null +++ b/codecs/ex_ilbc.h @@ -0,0 +1,33 @@ +/*! \file + * \brief Raw 8-bit data + * + * Copyright (C) 2008, Digium, Inc. + * + * Distributed under the terms of the GNU General Public License + * + */ + +static uint8_t ex_ilbc[] = { + 0xff, 0xa0, 0xff, 0xfa, 0x0f, 0x60, 0x12, 0x11, 0xa2, 0x47, + 0x22, 0x8c, 0x00, 0x00, 0x01, 0x02, 0x80, 0x43, 0xa0, 0x40, + 0x33, 0xff, 0xcf, 0xc0, 0xf3, 0xf3, 0x3f, 0x8f, 0x3f, 0xff, + 0xff, 0xff, 0xff, 0xfc, 0xf9, 0xe5, 0x55, 0x78, 0x0b, 0xca, + 0xe1, 0x27, 0x94, 0x7b, 0xa8, 0x91, 0x2c, 0x36, 0x08, 0x56, +}; + +static struct ast_frame *ilbc_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass = AST_FORMAT_ILBC, + .datalen = sizeof(ex_ilbc), + /* All frames are 30 ms long */ + .samples = ILBC_SAMPLES, + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_ilbc, + }; + + return &f; +} diff --git a/codecs/ex_lpc10.h b/codecs/ex_lpc10.h new file mode 100644 index 000000000..a44791bb3 --- /dev/null +++ b/codecs/ex_lpc10.h @@ -0,0 +1,30 @@ +/*! \file + * \brief + * + * Copyright (C) 2008, Digium, Inc. + * + * Distributed under the terms of the GNU General Public License + * + */ + +static uint8_t ex_lpc10[] = { + 0x01, 0x08, 0x31, 0x08, 0x31, 0x80, 0x30, +}; + +static struct ast_frame *lpc10_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass = AST_FORMAT_LPC10, + .datalen = sizeof(ex_lpc10), + /* All frames are 22 ms long (maybe a little more -- why did he choose + LPC10_SAMPLES_PER_FRAME sample frames anyway?? */ + .samples = LPC10_SAMPLES_PER_FRAME, + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_lpc10, + }; + + return &f; +} diff --git a/codecs/ex_speex.h b/codecs/ex_speex.h new file mode 100644 index 000000000..61bd4ca4f --- /dev/null +++ b/codecs/ex_speex.h @@ -0,0 +1,32 @@ +/*! \file + * \brief Random Data + * + * Copyright (C) 2008, Digium, Inc. + * + * Distributed under the terms of the GNU General Public License + * + */ + +static uint8_t ex_speex[] = { + 0x2e, 0x8e, 0x0f, 0x9a, 0x20, 0000, 0x01, 0x7f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x91, 0000, 0xbf, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xdc, 0x80, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x98, 0x7f, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xf7, 0x80, +}; + +static struct ast_frame *speex_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass = AST_FORMAT_SPEEX, + .datalen = sizeof(ex_speex), + /* All frames are 20 ms long */ + .samples = SPEEX_SAMPLES, + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_speex, + }; + + return &f; +} diff --git a/codecs/ex_ulaw.h b/codecs/ex_ulaw.h new file mode 100644 index 000000000..a34c2702b --- /dev/null +++ b/codecs/ex_ulaw.h @@ -0,0 +1,37 @@ +/*! \file + * \brief 8-bit data + * + * Copyright (C) 2008, Digium, Inc. + * + * Distributed under the terms of the GNU General Public License + * + */ + +static uint8_t ex_ulaw[] = { + 0x00, 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x12, 0x15, + 0x10, 0x18, 0x1b, 0x1e, 0x21, 0x24, 0x27, 0x2a, + 0x20, 0x2d, 0x30, 0x33, 0x36, 0x39, 0x3c, 0x3f, + 0x30, 0x42, 0x45, 0x48, 0x4b, 0x4e, 0x51, 0x54, + 0x40, 0x57, 0x5a, 0x5d, 0x60, 0x63, 0x66, 0x69, + 0x50, 0x6c, 0x6f, 0x72, 0x75, 0x78, 0x7b, 0x7e, + 0x60, 0x81, 0x84, 0x87, 0x8a, 0x8d, 0x90, 0x93, + 0x70, 0x96, 0x99, 0x9c, 0x9f, 0xa2, 0xa5, 0xa8, + 0x80, 0xab, 0xae, 0xb1, 0xb4, 0xb7, 0xba, 0xbd, + 0x90, 0xc0, 0xc3, 0xc6, 0xc9, 0xcc, 0xcf, 0xd2, +}; + +static struct ast_frame *ulaw_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass = AST_FORMAT_ULAW, + .datalen = sizeof(ex_ulaw), + .samples = ARRAY_LEN(ex_ulaw), + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_ulaw, + }; + + return &f; +} diff --git a/codecs/g722_slin_ex.h b/codecs/g722_slin_ex.h deleted file mode 100644 index f8d3de5d0..000000000 --- a/codecs/g722_slin_ex.h +++ /dev/null @@ -1,25 +0,0 @@ -/*! \file - * \brief g722_slin_ex.h -- - * - * 4-bit ADPCM data, 20 milliseconds worth at 8 kHz. - * - * Source: g723.example - * - * Copyright (C) 2001-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static unsigned char g722_slin_ex[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/codecs/g726_slin_ex.h b/codecs/g726_slin_ex.h deleted file mode 100644 index 80cbf00f4..000000000 --- a/codecs/g726_slin_ex.h +++ /dev/null @@ -1,25 +0,0 @@ -/*! \file - * adpcm_slin_ex.h -- - * - * \brief 4-bit G.726 data, 20 milliseconds worth at 8 kHz. - * - * Source: g726.example - * - * Copyright (C) 2001-2005, Digium, Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static unsigned char g726_slin_ex[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/codecs/gsm_slin_ex.h b/codecs/gsm_slin_ex.h deleted file mode 100644 index 2f001abec..000000000 --- a/codecs/gsm_slin_ex.h +++ /dev/null @@ -1,16 +0,0 @@ -/*! \file - * \brief 8-bit raw data - * - * Source: gsm.example - * - * Copyright (C) 1999-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static unsigned char gsm_slin_ex[] = { -0xda, 0xa6, 0xac, 0x2d, 0xa3, 0x50, 000, 0x49, 0x24, 0x92, -0x49, 0x24, 0x50, 0x40, 0x49, 0x24, 0x92, 0x37, 0x24, 0x52, -000, 0x49, 0x24, 0x92, 0x47, 0x24, 0x50, 0x80, 0x46, 0xe3, -0x6d, 0xb8, 0xdc }; diff --git a/codecs/ilbc_slin_ex.h b/codecs/ilbc_slin_ex.h deleted file mode 100644 index b9f4bd4e8..000000000 --- a/codecs/ilbc_slin_ex.h +++ /dev/null @@ -1,17 +0,0 @@ -/*! \file - * \brief Raw 8-bit data - * - * Source: ilbc.out - * - * Copyright (C) 1999-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static unsigned char ilbc_slin_ex[] = { -0xff, 0xa0, 0xff, 0xfa, 0xf, 0x60, 0x12, 0x11, 0xa2, 0x47, -0x22, 0x8c, 00, 00, 0x1, 0x2, 0x80, 0x43, 0xa0, 0x40, -0x33, 0xff, 0xcf, 0xc0, 0xf3, 0xf3, 0x3f, 0x8f, 0x3f, 0xff, -0xff, 0xff, 0xff, 0xfc, 0xf9, 0xe5, 0x55, 0x78, 0xb, 0xca, -0xe1, 0x27, 0x94, 0x7b, 0xa8, 0x91, 0x2c, 0x36, 0x8, 0x56 }; diff --git a/codecs/lpc10_slin_ex.h b/codecs/lpc10_slin_ex.h deleted file mode 100644 index cf9f05999..000000000 --- a/codecs/lpc10_slin_ex.h +++ /dev/null @@ -1,13 +0,0 @@ -/*! \file - * \brief 8-bit raw data - * - * Source: example.lpc10 - * - * Copyright (C) 1999-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static unsigned char lpc10_slin_ex[] = { -0x1, 0x8, 0x31, 0x8, 0x31, 0x80, 0x30 }; diff --git a/codecs/slin_adpcm_ex.h b/codecs/slin_adpcm_ex.h deleted file mode 100644 index 801549a3c..000000000 --- a/codecs/slin_adpcm_ex.h +++ /dev/null @@ -1,25 +0,0 @@ -/*! \file - * \brief slin_adpcm_ex.h -- - * - * Signed 16-bit audio data, 10 milliseconds worth at 8 kHz. - * - * Source: g723.example - * - * Copyright (C) 2001-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static signed short slin_adpcm_ex[] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -}; diff --git a/codecs/slin_g722_ex.h b/codecs/slin_g722_ex.h deleted file mode 100644 index 4e6aea84a..000000000 --- a/codecs/slin_g722_ex.h +++ /dev/null @@ -1,25 +0,0 @@ -/*! \file - * \brief slin_g722_ex.h -- - * - * Signed 16-bit audio data, 10 milliseconds worth at 8 kHz. - * - * Source: g723.example - * - * Copyright (C) 2001-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static signed short slin_g722_ex[] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -}; diff --git a/codecs/slin_g726_ex.h b/codecs/slin_g726_ex.h deleted file mode 100644 index 8dad39cbd..000000000 --- a/codecs/slin_g726_ex.h +++ /dev/null @@ -1,25 +0,0 @@ -/*! \file - * \brief slin_adpcm_ex.h -- - * - * Signed 16-bit audio data, 10 milliseconds worth at 8 kHz. - * - * Source: g726.example - * - * Copyright (C) 2001-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static signed short slin_g726_ex[] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -}; diff --git a/codecs/slin_gsm_ex.h b/codecs/slin_gsm_ex.h deleted file mode 100644 index 7ac281800..000000000 --- a/codecs/slin_gsm_ex.h +++ /dev/null @@ -1,28 +0,0 @@ -/*! \file - * \brief Signed 16-bit audio data - * - * Source: gsm.example - * - * Copyright (C) 1999-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static signed short slin_gsm_ex[] = { -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 0xfff8, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 0x0008, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -0x0008, 000000, 000000, 000000, 0xfff8, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 0x0008, 000000, 000000, 000000 }; diff --git a/codecs/slin_ilbc_ex.h b/codecs/slin_ilbc_ex.h deleted file mode 100644 index b89655c6b..000000000 --- a/codecs/slin_ilbc_ex.h +++ /dev/null @@ -1,28 +0,0 @@ -/*! \file - * \brief Signed 16-bit audio data - * - * Source: gsm.example - * - * Copyright (C) 1999-2005, Digium Inc - * - * Distributed under the terms of the GNU General Public License - * - */ - -static signed short slin_ilbc_ex[] = { -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 0xfff8, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 0x0008, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -0x0008, 000000, 000000, 000000, 0xfff8, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 0x0008, 000000, 000000, 000000 }; diff --git a/codecs/slin_lpc10_ex.h b/codecs/slin_lpc10_ex.h deleted file mode 100644 index 169e9a9e1..000000000 --- a/codecs/slin_lpc10_ex.h +++ /dev/null @@ -1,21 +0,0 @@ -/*! \file - * \brief Signed 16-bit audio data - * - * Source: example.slin - * - * Copyright (C) 1999-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static signed short slin_lpc10_ex[] = { -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, -000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000, 000000 }; diff --git a/codecs/slin_resample_ex.h b/codecs/slin_resample_ex.h deleted file mode 100644 index 701654e39..000000000 --- a/codecs/slin_resample_ex.h +++ /dev/null @@ -1,43 +0,0 @@ -/*! \file - * \brief slin_resample_ex.h -- - * - * Copyright (C) 2007, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - */ - -static signed short slin16_slin8_ex[] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -}; - -static signed short slin8_slin16_ex[] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -}; diff --git a/codecs/slin_speex_ex.h b/codecs/slin_speex_ex.h deleted file mode 100644 index 0c6258c37..000000000 --- a/codecs/slin_speex_ex.h +++ /dev/null @@ -1,262 +0,0 @@ -/*! \file - * \brief Signed 16-bit audio data, 500ms of speech at 8kHz to ensure no DTX triggered - * - * Source: speex.example - * - * Copyright (C) 1999-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static signed short slin_speex_ex[] = { -0x4a00, 0xa700, 0x6d00, 0x4900, 0x5800, 0x3e00, 0x1b00, 0x1400, 0xf9ff, 0xe4ff, 0x0a00, 0xf0ff, 0xbbff, 0x0200, 0x0800, 0xd6ff, -0xf1ff, 0x1200, 0x0500, 0x1000, 0x0f00, 0x0700, 0x4100, 0x2800, 0xf4ff, 0x2900, 0x3100, 0xf4ff, 0xefff, 0xdaff, 0xdaff, 0xc2ff, -0xa5ff, 0xccff, 0xd4ff, 0xc7ff, 0xe6ff, 0x0600, 0x0c00, 0x1900, 0x1200, 0x0d00, 0x2900, 0x1e00, 0xf4ff, 0x0000, 0x1200, 0xf5ff, -0xe5ff, 0x0000, 0x0000, 0xf1ff, 0x0300, 0x0b00, 0xfdff, 0x0500, 0x0f00, 0x0600, 0x0d00, 0x0f00, 0x0000, 0xfdff, 0xfcff, 0xe5ff, -0xdcff, 0xe0ff, 0xafff, 0xb2ff, 0xe4ff, 0xceff, 0xe2ff, 0x0000, 0x1600, 0x2600, 0x2400, 0x3f00, 0x4a00, 0x3d00, 0x2b00, 0x2f00, -0x4300, 0x1000, 0x0300, 0x0700, 0xe9ff, 0xf3ff, 0xebff, 0xd9ff, 0xe5ff, 0xf9ff, 0xeeff, 0xe9ff, 0x0500, 0x0a00, 0x0300, 0x0800, -0x1800, 0x1c00, 0x1000, 0x1300, 0x0d00, 0x0400, 0x0200, 0xf9ff, 0xe4ff, 0xe6ff, 0xe0ff, 0xd9ff, 0xecff, 0xf2ff, 0xe8ff, 0xfdff, -0x1100, 0x0d00, 0x0b00, 0x1100, 0x1100, 0x1200, 0x0c00, 0x0400, 0x0900, 0x0d00, 0x0100, 0xfdff, 0x0000, 0xfdff, 0x0000, 0xffff, -0xf5ff, 0xfcff, 0x0600, 0xfeff, 0x0000, 0x0300, 0x1300, 0x1700, 0x0300, 0x0700, 0xf0ff, 0xe1ff, 0xd7ff, 0xd1ff, 0xc6ff, 0xc2ff, -0xf2ff, 0xf0ff, 0xecff, 0x0700, 0x3200, 0x2d00, 0x0400, 0x2200, 0x2900, 0x1900, 0x2400, 0x0500, 0x1900, 0x1f00, 0xfeff, 0x0d00, -0x0600, 0xebff, 0xf5ff, 0x0600, 0xebff, 0xe3ff, 0x0c00, 0x0d00, 0xefff, 0x1100, 0x3a00, 0x0700, 0x1700, 0x2f00, 0xf7ff, 0x0700, -0x2600, 0xd9ff, 0xb8ff, 0xeaff, 0xbeff, 0x9eff, 0xc7ff, 0xccff, 0xc4ff, 0xeeff, 0x0000, 0xfdff, 0x1200, 0x1d00, 0x3100, 0x3600, -0x2d00, 0x3c00, 0x4700, 0x3000, 0x2000, 0x2300, 0x1800, 0x0900, 0xffff, 0xeaff, 0xe7ff, 0xe8ff, 0xd3ff, 0xc5ff, 0xe1ff, 0xedff, -0xe4ff, 0xfaff, 0xe3ff, 0xacff, 0xcdff, 0xd4ff, 0xabff, 0xa6ff, 0xdaff, 0x0500, 0xf1ff, 0xfaff, 0x3800, 0x7000, 0x4100, 0x1c00, -0x4b00, 0x5300, 0x3a00, 0x2a00, 0x1400, 0x2000, 0x1c00, 0x1500, 0x0500, 0xf6ff, 0x0000, 0x1300, 0xfaff, 0xe9ff, 0x0000, 0x0a00, -0xfcff, 0xfaff, 0x1000, 0x1200, 0x0900, 0x0c00, 0x0400, 0x0000, 0x0800, 0xffff, 0xe7ff, 0xe2ff, 0xe6ff, 0xd5ff, 0xdaff, 0xe0ff, -0xdcff, 0xeeff, 0x0200, 0xfbff, 0x0000, 0x1000, 0x1100, 0x1500, 0x1900, 0x1400, 0x1900, 0x1c00, 0x1500, 0x1000, 0x0d00, 0x0b00, -0x0700, 0x0200, 0xf6ff, 0xf5ff, 0xf9ff, 0xecff, 0xe8ff, 0xeeff, 0xf4ff, 0xf4ff, 0xeeff, 0xecff, 0xebff, 0xd7ff, 0xd8ff, 0xeaff, -0xe0ff, 0xddff, 0x0100, 0x0500, 0xf8ff, 0x1800, 0x2d00, 0x1d00, 0x1a00, 0x2100, 0x1f00, 0x1f00, 0x1a00, 0x0f00, 0x0300, 0x0d00, -0x0e00, 0xfeff, 0x0000, 0xfeff, 0x0000, 0x0000, 0xf1ff, 0xfaff, 0x0a00, 0x0100, 0xf5ff, 0x0300, 0x0e00, 0x0300, 0x0200, 0x0000, -0x0800, 0x0700, 0xf8ff, 0xf5ff, 0xf1ff, 0xefff, 0xe9ff, 0xe0ff, 0xe0ff, 0xedff, 0xf0ff, 0xedff, 0xfcff, 0xffff, 0xfdff, 0x0a00, -0x0f00, 0x0e00, 0x0f00, 0x1700, 0x1400, 0x0700, 0x0500, 0x0800, 0x0000, 0x0200, 0x0400, 0xfaff, 0xffff, 0x0200, 0xfaff, 0xfbff, -0x0300, 0x0400, 0x0400, 0x0100, 0xe7ff, 0xd4ff, 0xdbff, 0xe2ff, 0xe0ff, 0xd0ff, 0xe7ff, 0x0700, 0xf2ff, 0x0000, 0x2d00, 0x2000, -0x1800, 0x2c00, 0x1f00, 0x2600, 0x2200, 0x0e00, 0x0e00, 0x0000, 0x0400, 0x0800, 0x0300, 0xfbff, 0x0500, 0x1d00, 0x0000, 0xfbff, -0x2e00, 0x2500, 0x0600, 0x1c00, 0x2600, 0x1600, 0x0e00, 0x0200, 0xf9ff, 0x0000, 0xe1ff, 0xc0ff, 0xd5ff, 0xc9ff, 0xb6ff, 0xbcff, -0xccff, 0xc9ff, 0xcbff, 0xe5ff, 0xeaff, 0xf0ff, 0xfeff, 0x0000, 0x0b00, 0x1f00, 0x2000, 0x1b00, 0x2000, 0x2400, 0x1800, 0x1200, -0x1700, 0x0c00, 0x0b00, 0x0d00, 0xfdff, 0xf5ff, 0x0000, 0xf9ff, 0xefff, 0xfaff, 0xf7ff, 0xf0ff, 0xe7ff, 0xcbff, 0xd1ff, 0xedff, -0xf5ff, 0xfcff, 0xfeff, 0x1e00, 0x3200, 0x2200, 0x3800, 0x4f00, 0x3800, 0x2c00, 0x4000, 0x3e00, 0x2e00, 0x2900, 0x1200, 0x0500, -0x0700, 0x0000, 0xf2ff, 0xf2ff, 0xf8ff, 0xf5ff, 0xf7ff, 0xeaff, 0xefff, 0x0100, 0xfcff, 0xf9ff, 0x0000, 0x0700, 0xf9ff, 0xf2ff, -0xf9ff, 0xf0ff, 0xf1ff, 0xe7ff, 0xddff, 0xe1ff, 0xddff, 0xd9ff, 0xdaff, 0xe1ff, 0xe2ff, 0xe5ff, 0xe5ff, 0xf0ff, 0xfaff, 0xf4ff, -0xfdff, 0x1100, 0x0e00, 0x0e00, 0x1800, 0x1600, 0x1200, 0x1400, 0x1500, 0x1200, 0x0b00, 0x0600, 0x0c00, 0x0500, 0x0100, 0x0b00, -0x0200, 0xfaff, 0xffff, 0xf9ff, 0xe8ff, 0xd0ff, 0xc9ff, 0xd5ff, 0xe0ff, 0xe6ff, 0xedff, 0xf5ff, 0x1100, 0x1300, 0x1f00, 0x3600, -0x2900, 0x2200, 0x2c00, 0x3700, 0x2d00, 0x2000, 0x1a00, 0x0800, 0xfaff, 0xfcff, 0xf6ff, 0xf2ff, 0xebff, 0xf7ff, 0x0200, 0xf1ff, -0xf5ff, 0x0d00, 0x0900, 0xf9ff, 0x1000, 0x2000, 0x0a00, 0xf9ff, 0xffff, 0xf9ff, 0xf2ff, 0xeeff, 0xdbff, 0xd8ff, 0xdbff, 0xdaff, -0xdaff, 0xdfff, 0xe6ff, 0xecff, 0xedff, 0xf0ff, 0x0500, 0x0900, 0x0400, 0x0f00, 0x2600, 0x2700, 0x2200, 0x2b00, 0x1700, 0x1100, -0x2a00, 0x2200, 0x0c00, 0x0200, 0x0100, 0x0200, 0xfeff, 0xfaff, 0xf7ff, 0xf3ff, 0xf1ff, 0xf5ff, 0xf6ff, 0xe8ff, 0xd3ff, 0xcdff, -0xdbff, 0xebff, 0xedff, 0xf0ff, 0xfbff, 0x1400, 0x1700, 0x2000, 0x3400, 0x2700, 0x1a00, 0x2100, 0x2e00, 0x2900, 0x1e00, 0x0c00, -0xfbff, 0xfbff, 0xf9ff, 0xf3ff, 0xf4ff, 0xe8ff, 0xecff, 0x0300, 0xf8ff, 0xf4ff, 0x0100, 0x0600, 0xf7ff, 0x0900, 0x1e00, 0x0f00, -0x0900, 0x0700, 0x0000, 0x0000, 0x0000, 0xf5ff, 0xebff, 0xefff, 0xf3ff, 0xeeff, 0xf0ff, 0xf1ff, 0xefff, 0xf0ff, 0xf6ff, 0xfcff, -0xf9ff, 0xf8ff, 0xfbff, 0x0300, 0x0900, 0x0800, 0x0900, 0x0100, 0x0200, 0x0c00, 0x0e00, 0x0300, 0xfdff, 0xfcff, 0xfbff, 0xfbff, -0xf9ff, 0xf3ff, 0xf3ff, 0xecff, 0xf6ff, 0xfbff, 0xf4ff, 0xecff, 0xd6ff, 0xdcff, 0xf1ff, 0xf1ff, 0xeeff, 0xf6ff, 0x0600, 0x0a00, -0x1000, 0x1e00, 0x1b00, 0x1100, 0x1800, 0x2800, 0x2500, 0x2600, 0x1c00, 0x0e00, 0x0900, 0x0e00, 0x0800, 0x0200, 0xfaff, 0xf5ff, -0x0300, 0xf8ff, 0xfcff, 0x0500, 0x0500, 0x0000, 0xfaff, 0x0b00, 0x1c00, 0x0d00, 0xfdff, 0x0200, 0x0100, 0xfbff, 0xf5ff, 0xe8ff, -0xe8ff, 0xecff, 0xdaff, 0xd1ff, 0xddff, 0xdeff, 0xd8ff, 0xdeff, 0xedff, 0xf3ff, 0xf8ff, 0x0100, 0x1100, 0x2300, 0x2800, 0x3100, -0x3200, 0x3500, 0x3a00, 0x3e00, 0x3400, 0x2700, 0x2100, 0x1400, 0x0900, 0xf7ff, 0xfaff, 0xf3ff, 0xe2ff, 0xeaff, 0xe3ff, 0xdfff, -0xd7ff, 0xc9ff, 0xdaff, 0xe4ff, 0xe0ff, 0xe4ff, 0xefff, 0xf4ff, 0xf6ff, 0x0000, 0x0100, 0x0000, 0x0600, 0x0c00, 0x0c00, 0x1000, -0x1900, 0x1600, 0x1500, 0x1600, 0x1100, 0x1400, 0x1200, 0x1300, 0x0900, 0x0d00, 0x1400, 0x0e00, 0x1900, 0x1400, 0x0900, 0x0600, -0x1600, 0x1900, 0x0800, 0x0300, 0x0000, 0xf5ff, 0xedff, 0xeaff, 0xdbff, 0xdcff, 0xcbff, 0xb7ff, 0xbfff, 0xc3ff, 0xc2ff, 0xbfff, -0xcbff, 0xdaff, 0xe7ff, 0xf9ff, 0x0600, 0x1b00, 0x2c00, 0x2900, 0x3d00, 0x4b00, 0x4700, 0x4b00, 0x4a00, 0x4300, 0x3700, 0x3300, -0x1f00, 0x1400, 0x1000, 0x0f00, 0x0c00, 0x0000, 0xf6ff, 0xe7ff, 0xe7ff, 0xdeff, 0xd3ff, 0xe1ff, 0xdeff, 0xd9ff, 0xe0ff, 0xe8ff, -0xf1ff, 0xeaff, 0xe8ff, 0xf5ff, 0xf7ff, 0xf6ff, 0xf7ff, 0xf4ff, 0xf8ff, 0xfcff, 0x0100, 0xfcff, 0xf7ff, 0x0100, 0x0600, 0x0100, -0x0700, 0x0200, 0x0c00, 0x1000, 0x0e00, 0x1c00, 0x1a00, 0x1a00, 0x1800, 0x2200, 0x1f00, 0x1600, 0x1700, 0x0b00, 0xfbff, 0xfcff, -0xeaff, 0xd6ff, 0xdfff, 0xcbff, 0xc0ff, 0xc0ff, 0xbcff, 0xc1ff, 0xc5ff, 0xd1ff, 0xdaff, 0xecff, 0xffff, 0xfeff, 0x1000, 0x2700, -0x2400, 0x2400, 0x3800, 0x3600, 0x3100, 0x3300, 0x2800, 0x2000, 0x1e00, 0x1d00, 0x0800, 0x0400, 0x1600, 0x0900, 0x0000, 0x0d00, -0x0100, 0xefff, 0xf1ff, 0xedff, 0xe0ff, 0xe6ff, 0xf5ff, 0xe1ff, 0xdaff, 0xf3ff, 0xf6ff, 0xeeff, 0xf1ff, 0xf9ff, 0xfbff, 0x0000, -0x0700, 0x0900, 0x0d00, 0x1c00, 0x1d00, 0x1b00, 0x1a00, 0x2500, 0x2500, 0x1a00, 0x1600, 0x0e00, 0x0c00, 0x0b00, 0x0500, 0x0100, -0x0200, 0x0000, 0xfbff, 0xfcff, 0xfdff, 0xfcff, 0xfcff, 0xf9ff, 0xf6ff, 0xf3ff, 0xeaff, 0xe6ff, 0xecff, 0xe8ff, 0xdfff, 0xe6ff, -0xddff, 0xdaff, 0xecff, 0xefff, 0xf2ff, 0xfdff, 0x0100, 0xffff, 0x0800, 0x1700, 0x1000, 0x1300, 0x2100, 0x1b00, 0x1800, 0x1a00, -0x1200, 0x1000, 0x2000, 0x1100, 0x0000, 0x0700, 0x0500, 0xfdff, 0xfcff, 0x0300, 0xf2ff, 0xeaff, 0xe1ff, 0xcdff, 0xd2ff, 0xe0ff, -0xe0ff, 0xd5ff, 0xdfff, 0xf3ff, 0xf7ff, 0xfcff, 0x1100, 0x1800, 0x1900, 0x2100, 0x2600, 0x2800, 0x2900, 0x2d00, 0x2400, 0x1b00, -0x1a00, 0x1000, 0x0800, 0x0500, 0xfcff, 0xf1ff, 0xf4ff, 0xf6ff, 0xf2ff, 0xf6ff, 0xffff, 0xffff, 0x0000, 0x0a00, 0x0a00, 0xfbff, -0x0200, 0x0700, 0xf9ff, 0xf2ff, 0xeaff, 0xedff, 0xdfff, 0xd9ff, 0xe3ff, 0xd8ff, 0xdbff, 0xddff, 0xe2ff, 0xefff, 0xf6ff, 0xffff, -0x0000, 0x0d00, 0x1500, 0x1600, 0x2200, 0x2800, 0x2700, 0x2900, 0x3700, 0x2d00, 0x2500, 0x2c00, 0x2900, 0x1100, 0x0600, 0xfdff, -0xedff, 0xeaff, 0xddff, 0xcfff, 0xc9ff, 0xc0ff, 0xa8ff, 0xa8ff, 0xbeff, 0xceff, 0xd6ff, 0xe1ff, 0xf4ff, 0x1000, 0x1100, 0x1e00, -0x3e00, 0x3c00, 0x3c00, 0x3d00, 0x3e00, 0x3300, 0x3000, 0x2b00, 0x1300, 0x0b00, 0x0600, 0xfaff, 0xf6ff, 0xf4ff, 0xe9ff, 0xedff, -0x0000, 0xf8ff, 0xfbff, 0x0400, 0x0300, 0x0a00, 0x1400, 0x1300, 0x0100, 0x0b00, 0x0400, 0xf9ff, 0xf8ff, 0xeeff, 0xe9ff, 0xdeff, -0xe1ff, 0xdaff, 0xd7ff, 0xe5ff, 0xd2ff, 0xd3ff, 0xe3ff, 0xe7ff, 0xedff, 0xf5ff, 0x0000, 0x0600, 0x1300, 0x1f00, 0x1c00, 0x2600, -0x2b00, 0x3100, 0x2d00, 0x3100, 0x2e00, 0x2600, 0x1900, 0x1100, 0x0400, 0xf3ff, 0xf3ff, 0xdcff, 0xdbff, 0xddff, 0xd2ff, 0xccff, -0xbbff, 0xc3ff, 0xe4ff, 0xf4ff, 0xf6ff, 0xfbff, 0x1600, 0x2100, 0x1600, 0x2000, 0x2500, 0x1b00, 0x2700, 0x2100, 0x1400, 0x0d00, -0x1300, 0x0800, 0xfbff, 0xf8ff, 0xecff, 0xeeff, 0x0000, 0xefff, 0xeeff, 0xfcff, 0x0000, 0xfeff, 0x0600, 0x0700, 0x0200, 0x1400, -0x1600, 0x0700, 0x0d00, 0x1400, 0x0e00, 0x0900, 0x0b00, 0x0500, 0xfaff, 0x0600, 0x0000, 0xf2ff, 0xfaff, 0xf6ff, 0xe9ff, 0xecff, -0xecff, 0xe2ff, 0xe7ff, 0xf3ff, 0xf6ff, 0xf4ff, 0x0000, 0x0000, 0xffff, 0x1400, 0x0f00, 0x0f00, 0x1500, 0x1400, 0x1100, 0x1200, -0x0c00, 0x0400, 0x0500, 0xffff, 0x0200, 0xfbff, 0xf5ff, 0xfeff, 0xf5ff, 0xe5ff, 0xe3ff, 0xe4ff, 0xe6ff, 0x0a00, 0xffff, 0xf3ff, -0x0900, 0x0d00, 0xfbff, 0x0700, 0x0c00, 0xffff, 0x1200, 0x1e00, 0xfdff, 0x0700, 0x1c00, 0x1200, 0x0f00, 0x1200, 0x1500, 0xfbff, -0x1200, 0x2300, 0xf9ff, 0x0300, 0x0d00, 0xf2ff, 0xf2ff, 0xf5ff, 0xd8ff, 0xd0ff, 0xddff, 0xd8ff, 0xc4ff, 0xdbff, 0xe0ff, 0xd6ff, -0xecff, 0xd8ff, 0xf7ff, 0x1100, 0xffff, 0x1500, 0x2a00, 0x1c00, 0x1800, 0x2200, 0x1500, 0x0800, 0x1d00, 0x1600, 0x0800, 0x1300, -0x0500, 0xecff, 0x1100, 0x0a00, 0x1700, 0x0900, 0xffff, 0x2700, 0x1b00, 0x0b00, 0x1400, 0x1200, 0xecff, 0x1000, 0x1800, 0xdfff, -0xfbff, 0xf1ff, 0x9bff, 0x90ff, 0x97ff, 0x81ff, 0xf2ff, 0xf9ff, 0x8cff, 0xcbff, 0x3300, 0x0200, 0x1300, 0x4f00, 0x1600, 0x2700, -0x7400, 0x4000, 0x2a00, 0x4e00, 0x4b00, 0x1800, 0x2b00, 0x3900, 0x1c00, 0x2500, 0x1000, 0xf1ff, 0xf9ff, 0xf5ff, 0xdbff, 0xdbff, -0x0000, 0x0b00, 0xd7ff, 0xcbff, 0xecff, 0xdfff, 0xebff, 0xe5ff, 0xafff, 0xdfff, 0xe5ff, 0xbeff, 0xc9ff, 0x0000, 0xe0ff, 0xcdff, -0x1d00, 0x1b00, 0xefff, 0x1c00, 0x2100, 0x1100, 0x3200, 0x3400, 0x1d00, 0x2d00, 0x2600, 0x3b00, 0x3600, 0x4200, 0x0a00, 0x0000, -0x5f00, 0x4000, 0x0000, 0x1000, 0x2800, 0xeaff, 0xd9ff, 0xcdff, 0xf8ff, 0x8400, 0xc1ff, 0xbefe, 0x56ff, 0x7fff, 0xe5fe, 0xf5ff, -0x3600, 0x4aff, 0x24ff, 0x6800, 0xdf00, 0x1600, 0x6d00, 0x7b00, 0xf200, 0xd500, 0x0700, 0x2300, 0x3500, 0x0600, 0xeaff, 0xd1ff, -0x95ff, 0xd5ff, 0x0300, 0xbcff, 0xe0ff, 0x0000, 0x2500, 0x3100, 0xdf00, 0x6700, 0x0300, 0x6900, 0x2a00, 0x3f00, 0x0400, 0x7dff, -0x58ff, 0xb2ff, 0x7bff, 0x71ff, 0xa1ff, 0x7dff, 0xd0ff, 0x1700, 0x0000, 0x0700, 0x5900, 0x4b00, 0x4b00, 0x4700, 0xf8ff, 0x4300, -0x5e00, 0x0d00, 0xdaff, 0x1300, 0x0e00, 0x0f00, 0x2d00, 0xeaff, 0x1400, 0x6200, 0x3a00, 0xe3ff, 0x0c00, 0x1600, 0xfbff, 0xe8ff, -0xfbff, 0x6700, 0xe3ff, 0x8eff, 0xf2fe, 0x25fe, 0x9bfe, 0x54ff, 0x94ff, 0x94ff, 0x7dff, 0x3000, 0x9401, 0xce01, 0x5601, 0x0e01, -0xd300, 0x4f01, 0xdf00, 0x6fff, 0x25ff, 0x79ff, 0x5eff, 0x51ff, 0xd4ff, 0xbaff, 0x1b00, 0xbe00, 0x4a00, 0xf3ff, 0x2800, 0x4500, -0x5e00, 0x1800, 0x84ff, 0x8aff, 0xc7ff, 0xc2ff, 0x8aff, 0xd7fe, 0x16ff, 0x0000, 0x1300, 0xf7ff, 0xbcff, 0xc3ff, 0x5500, 0x7c00, -0x5a00, 0x5400, 0x2d00, 0x2d00, 0x2b00, 0xf9ff, 0xfcff, 0x0500, 0xddff, 0x1d00, 0x6600, 0x7a00, 0x9200, 0x3700, 0x0e00, 0x5600, -0x2500, 0xcfff, 0xfdff, 0xe3ff, 0xc5ff, 0xcdff, 0x00ff, 0x67ff, 0xb100, 0x3200, 0x3200, 0xc800, 0xcdff, 0xaaff, 0x4dff, 0x42fd, -0xc4fd, 0x3500, 0x2a00, 0x99ff, 0x1d00, 0xe500, 0x4e02, 0xf802, 0x6f01, 0xd4ff, 0x4f00, 0x7300, 0x88ff, 0x20ff, 0x81fe, 0x9afe, -0xb2ff, 0x6800, 0x9100, 0x9700, 0x3001, 0x5500, 0xf4ff, 0xa400, 0xb2ff, 0xdeff, 0x1500, 0x05ff, 0x4fff, 0xe6ff, 0xaaff, 0xc9ff, -0x0000, 0xafff, 0xeeff, 0x8200, 0x1800, 0xc7ff, 0xf1ff, 0xd5ff, 0x3000, 0x1d00, 0x50ff, 0x89ff, 0x82ff, 0x7cff, 0x2000, 0x1d00, -0x0d00, 0x9500, 0x8c00, 0x2d00, 0x5b00, 0x2200, 0xf8ff, 0x6700, 0x7800, 0x3e00, 0xa800, 0x9100, 0xbfff, 0xccff, 0xdaff, 0x9bff, -0x8400, 0x98ff, 0xa4fe, 0xddff, 0x1200, 0x2e00, 0xf100, 0x3500, 0x73ff, 0x99ff, 0xd1fd, 0x97fd, 0x0500, 0x7800, 0x3400, 0xc700, -0xfc00, 0x8201, 0x6002, 0x8201, 0xb5ff, 0xaeff, 0xa5ff, 0x15ff, 0x90ff, 0x53ff, 0xccfe, 0x8eff, 0x9d00, 0xef00, 0x0601, 0xf300, -0xa4ff, 0x5cff, 0x0b00, 0xfcff, 0x0d00, 0xd9ff, 0x3cff, 0x60ff, 0x5400, 0x3400, 0x2b00, 0x4800, 0xbbff, 0x0300, 0x5a00, 0xf5ff, -0xc7ff, 0xe5ff, 0x91ff, 0xfeff, 0x0000, 0x51ff, 0xa8ff, 0x57ff, 0x74ff, 0x3a00, 0x6500, 0x5400, 0x0e00, 0x2900, 0x3800, 0x3d00, -0x3300, 0x1100, 0x4400, 0x7200, 0x5c00, 0x6f00, 0x4c00, 0xc8ff, 0xa6ff, 0xc4ff, 0x9bff, 0x6a00, 0x1000, 0xccfe, 0xc6ff, 0x7e00, -0x8aff, 0x6b00, 0xae00, 0x7bff, 0x71ff, 0xa0fd, 0x05fd, 0xc5ff, 0x5001, 0x1801, 0x9a01, 0x3f01, 0x1701, 0xc102, 0xd901, 0x83ff, -0x35ff, 0xa7fe, 0x52fe, 0x98ff, 0x9eff, 0xcbfe, 0x90ff, 0xe100, 0x4801, 0xa001, 0x5101, 0x59ff, 0x04ff, 0xc3ff, 0x1800, 0x4400, -0xe7ff, 0x22ff, 0x1dff, 0x4000, 0x2c00, 0x4b00, 0x7800, 0xa3ff, 0xd9ff, 0x7b00, 0x1a00, 0xb7ff, 0xb4ff, 0x70ff, 0xb6ff, 0x2200, -0xc9ff, 0x35ff, 0xaeff, 0x2b00, 0x4700, 0x5100, 0xe6ff, 0x1100, 0x5900, 0x0500, 0xf0ff, 0x2300, 0x5b00, 0xbd00, 0xec00, 0xc500, -0x8200, 0x93ff, 0x39ff, 0xafff, 0xbfff, 0x5200, 0x9cff, 0x49fe, 0x7fff, 0xa600, 0xfcff, 0xaa00, 0x7000, 0xf8fe, 0x64fe, 0xf7fc, -0x73fd, 0x2100, 0xa001, 0xe501, 0x4a02, 0x3701, 0xe500, 0x7402, 0x6601, 0xb5ff, 0x5eff, 0x69fe, 0x40fe, 0xc8ff, 0xe6ff, 0x1cff, -0xd1ff, 0xc900, 0x6601, 0xdf01, 0xf300, 0x67ff, 0xdcfe, 0x50ff, 0x2500, 0x7400, 0x0900, 0x42ff, 0x32ff, 0xe2ff, 0x2e00, 0x8700, -0x2800, 0x84ff, 0xd4ff, 0x5a00, 0x1000, 0xc1ff, 0xafff, 0x62ff, 0xa7ff, 0x2700, 0x1100, 0xc5ff, 0xe2ff, 0xeeff, 0xb8ff, 0x3200, -0x8b00, 0x0d00, 0x2600, 0x7b00, 0xf4ff, 0x6dff, 0x3d00, 0x9600, 0x8800, 0x2201, 0xa500, 0xf1ff, 0xe7ff, 0x9fff, 0x70ff, 0xe9ff, -0x3a00, 0x5fff, 0xe8fe, 0x52ff, 0x0f00, 0x8e00, 0xb300, 0x3800, 0x1aff, 0x77fe, 0x13fd, 0x9afc, 0x6dff, 0xe301, 0x5602, 0x9902, -0x3b01, 0xa6ff, 0x1501, 0x1a02, 0xa300, 0xebff, 0x1aff, 0xe6fd, 0x09ff, 0x6700, 0x5800, 0xefff, 0x4500, 0xd100, 0x6601, 0x5301, -0x5600, 0x0eff, 0x9dfe, 0x91ff, 0x2400, 0x8500, 0xd7ff, 0xeffe, 0x39ff, 0xddff, 0x8c00, 0xa500, 0x0c00, 0x86ff, 0xd0ff, 0x2f00, -0x1200, 0xf1ff, 0xbfff, 0x88ff, 0xd1ff, 0x4900, 0x2100, 0xbcff, 0xb1ff, 0x9aff, 0xf1ff, 0x8300, 0x6400, 0x3b00, 0x3e00, 0x2400, -0xa3ff, 0x0000, 0x8200, 0x4b00, 0xa800, 0xe600, 0x0300, 0x2cff, 0x82ff, 0x0b00, 0x4300, 0x5600, 0xa9ff, 0xcdfe, 0x15ff, 0x6700, -0xed00, 0x8a00, 0xe3ff, 0x74fe, 0xe3fc, 0xd1fc, 0x98fe, 0x2601, 0x7b02, 0x8d02, 0x8001, 0x3f00, 0xd300, 0x9501, 0xfe00, 0xeeff, -0x50ff, 0x67fe, 0x81fe, 0xe8ff, 0x4900, 0x1200, 0x6800, 0xc000, 0xc200, 0x0c01, 0xb100, 0x7bff, 0x2fff, 0x91ff, 0xd6ff, 0xfeff, -0xfeff, 0x63ff, 0x35ff, 0x0700, 0x7100, 0x6600, 0x4400, 0xceff, 0x9cff, 0x1100, 0x4500, 0xdfff, 0xabff, 0x96ff, 0x96ff, 0x1000, -0x5b00, 0x0f00, 0xc2ff, 0xe3ff, 0xfdff, 0x3a00, 0x9000, 0x4c00, 0x1400, 0xe6ff, 0xe2ff, 0xc0ff, 0xf3ff, 0x4300, 0x1a00, 0x5100, -0x7300, 0x3100, 0xc2ff, 0xebff, 0x5a00, 0x1e00, 0xafff, 0x3aff, 0x3cff, 0x80ff, 0x5a00, 0xf500, 0xffff, 0x57ff, 0x39ff, 0xe8fd, -0x65fd, 0x65ff, 0x7d01, 0xfb01, 0x5b02, 0x7501, 0x9aff, 0x6000, 0x7701, 0x6b00, 0x94ff, 0x31ff, 0xe2fd, 0x85fe, 0x9300, 0xab00, -0x4900, 0x9300, 0x5900, 0x3b00, 0x0701, 0x9000, 0x47ff, 0x4eff, 0x6cff, 0xedff, 0x5c00, 0x0000, 0x33ff, 0x81ff, 0x6200, 0x7400, -0x9b00, 0x3400, 0x67ff, 0x94ff, 0x3100, 0x2800, 0xfeff, 0xfdff, 0xa3ff, 0x9fff, 0x2100, 0x2400, 0xebff, 0xf5ff, 0xe4ff, 0xe0ff, -0x3f00, 0x5100, 0x1600, 0x1a00, 0xe7ff, 0xe0ff, 0xd4ff, 0x0000, 0x1200, 0x0500, 0x5b00, 0xc200, 0x5000, 0xcbff, 0x3b00, 0xe5ff, -0x9fff, 0xf0ff, 0xd4ff, 0x76ff, 0x40ff, 0x2200, 0x8c00, 0x0f00, 0x5700, 0x5fff, 0xdffc, 0xfbfc, 0xe8ff, 0xc501, 0xa202, 0xbc02, -0x6300, 0x49ff, 0x0b01, 0x7001, 0x6f00, 0xe2ff, 0x72fe, 0x84fd, 0x7dff, 0xcc00, 0x7300, 0x7c00, 0x5e00, 0xf1ff, 0xa200, 0x2101, -0xd4ff, 0x46ff, 0x5eff, 0x82ff, 0x4800, 0x7d00, 0xd2ff, 0x71ff, 0xe3ff, 0x1b00, 0x7b00, 0x5c00, 0xc4ff, 0x84ff, 0x76ff, 0xe5ff, -0x2b00, 0x3500, 0x1500, 0xe2ff, 0x99ff, 0x73ff, 0x9bff, 0xc7ff, 0xc8ff, 0x0000, 0x2d00, 0x4100, 0x3400, 0x2600, 0xf1ff, 0xd6ff, -0x0900, 0x1300, 0xe0ff, 0x5c00, 0xbc00, 0x4700, 0x2500, 0xd5ff, 0x5eff, 0xb5ff, 0x4800, 0x3200, 0x0a00, 0x5bff, 0x91ff, 0x9b00, -0x7000, 0x6400, 0x0800, 0xa7fd, 0x41fc, 0x8dfe, 0x3c01, 0x0102, 0x4b03, 0x0002, 0x58ff, 0x8b00, 0xc401, 0xad00, 0x5c00, 0x7aff, -0x8efd, 0x85fe, 0x5600, 0x4000, 0x5700, 0xd200, 0xa700, 0xd400, 0xbb01, 0x7500, 0x1bff, 0x11ff, 0x47ff, 0x0700, 0x7500, 0x3c00, -0x67ff, 0x05ff, 0x91ff, 0x4300, 0x6700, 0x3300, 0x1200, 0x94ff, 0x8dff, 0x1e00, 0xd6ff, 0x98ff, 0xafff, 0x9bff, 0x55ff, 0x97ff, -0xaeff, 0x86ff, 0xc1ff, 0x2f00, 0x5200, 0x7100, 0x7600, 0xfdff, 0x9fff, 0xc3ff, 0xe5ff, 0xd9ff, 0x1500, 0x7e00, 0x3c00, 0x8200, -0x5900, 0x60ff, 0x8cff, 0x1e00, 0x3400, 0x4300, 0x3800, 0x1dff, 0xbffe, 0xd2ff, 0xcf00, 0xff00, 0x5c00, 0x36ff, 0xd4fd, 0x85fc, -0x18fe, 0xa301, 0x2e02, 0xfc01, 0x9d02, 0xf400, 0x4400, 0xbf01, 0xea00, 0x40ff, 0x83ff, 0x05ff, 0x5afe, 0xc5ff, 0x5100, 0xa4ff, -0x8f00, 0x8501, 0x2501, 0x2e01, 0xd300, 0x21ff, 0xe0fe, 0xd1ff, 0x0400, 0x5a00, 0xd2ff, 0x62ff, 0xcfff, 0xc0ff, 0xfbff, 0x2b00, -0xf9ff, 0xd6ff, 0xf7ff, 0xfbff, 0xb7ff, 0xc6ff, 0x2eff, 0x52ff, 0x3900, 0x1500, 0xc2ff, 0xf0ff, 0xc6ff, 0xccff, 0x7f00, 0x9500, -0x0200, 0x0b00, 0x0000, 0x98ff, 0xa3ff, 0xb9ff, 0xacff, 0x4600, 0x8a00, 0x9300, 0x1300, 0x94ff, 0xd4ff, 0x2a00, 0x1301, 0xce00, -0x78ff, 0xa7fe, 0xa1fe, 0x76ff, 0xe200, 0xfe00, 0xecff, 0xadff, 0x6fff, 0xe4fd, 0x2afd, 0x51ff, 0x3f01, 0x8c01, 0x9202, 0xac01, -0xf4ff, 0x0d01, 0x7601, 0x0800, 0xd5ff, 0xafff, 0x9cfe, 0x2dff, 0x2200, 0x85ff, 0xbdff, 0xd500, 0xc000, 0xd300, 0x2701, 0x0700, -0x12ff, 0xb6ff, 0xf5ff, 0xebff, 0x7900, 0xc7ff, 0x4dff, 0x5c00, 0x9800, 0xf9ff, 0xa4ff, 0xa4ff, 0x6bff, 0xafff, 0x2a00, 0xceff, -0xc2ff, 0xc6ff, 0xb9ff, 0x3600, 0x5a00, 0xdbff, 0xa1ff, 0xe1ff, 0x1500, 0x3e00, 0x5d00, 0x0400, 0xccff, 0x2000, 0x1900, 0xa7ff, -0x77ff, 0x9dff, 0xfdff, 0x4a00, 0xcd00, 0x0300, 0x8bff, 0x0000, 0xf0ff, 0xa100, 0xbf00, 0xdaff, 0x04ff, 0x2aff, 0x76ff, 0xe1ff, -0x8b00, 0x8100, 0x3700, 0x4700, 0x2fff, 0x1ffd, 0xd7fd, 0x6a00, 0x6c01, 0x9301, 0x9c01, 0x5900, 0x3c00, 0x9f01, 0x6201, 0xbfff, -0x28ff, 0x69ff, 0x63ff, 0xf5ff, 0x0a00, 0x2cff, 0x91ff, 0x9e00, 0x1c01, 0x0d01, 0x7900, 0xa9ff, 0x3aff, 0x2b00, 0x3500, 0xc4ff, -0xc5ff, 0x77ff, 0xb8ff, 0x9600, 0xaa00, 0xd4ff, 0x97ff, 0xdfff, 0xc3ff, 0x1a00, 0xf9ff, 0x65ff, 0x81ff, 0xa7ff, 0xd0ff, 0x2a00, -0x0600, 0x0800, 0x2d00, 0xebff, 0x2000, 0x6d00, 0x6a00, 0x5900, 0x5700, 0x0c00, 0x85ff, 0x9bff, 0xe4ff, 0x0400, 0x4000, 0xd7ff, -0x0f00, 0x1f00, 0xf2ff, 0xb800, 0x6c00, 0xacff, 0x59ff, 0x2eff, 0x5fff, 0x1f00, 0x5200, 0x1f00, 0x2700, 0x3e00, 0xcdfe, 0x09fd, -0x87fd, 0x2300, 0x0802, 0x8401, 0x2f01, 0x7c00, 0x9c00, 0x0302, 0xb301, 0x8fff, 0xc2fe, 0x25ff, 0x0000, 0x6e00, 0xabff, 0xedfe, -0x54ff, 0xa800, 0xa301, 0x4801, 0x1900, 0x8eff, 0xf2ff, 0x7000, 0x6c00, 0xc6ff, 0x02ff, 0x34ff, 0x0000, 0x6c00, 0x4f00, 0x55ff, -0x65ff, 0x3c00, 0x4d00, 0x1d00, 0x81ff, 0x49ff, 0xaaff, 0x2300, 0x1600, 0xaaff, 0x92ff, 0xb7ff, 0x7100, 0x4900, 0xf8ff, 0x4900, -0x5700, 0x9f00, 0xa100, 0x5b00, 0xb6ff, 0x8bff, 0x0700, 0x3300, 0x3e00, 0xa2ff, 0x99ff, 0x2e00, 0x1200, 0x9500, 0x9200, 0xceff, -0x99ff, 0xa9ff, 0x77ff, 0x5fff, 0xc7ff, 0x1c00, 0x1b00, 0x5400, 0x9fff, 0xd8fd, 0xe8fc, 0xaefe, 0x7301, 0x8a01, 0xd700, 0x6b00, -0x6600, 0xfa01, 0x9d02, 0x5e00, 0xddfe, 0x75ff, 0x1f00, 0x8500, 0x6dff, 0x3ffe, 0xc4fe, 0x7200, 0x5401, 0xe600, 0x2900, 0xd8ff, -0x6900, 0xe800, 0x9400, 0xd8ff, 0x45ff, 0x6aff, 0xedff, 0xf4ff, 0xf3ff, 0x8cff, 0x7aff, 0x1e00, 0x3a00, 0xfcff, 0xc7ff, 0xbbff, -0xd1ff, 0x1300, 0x1c00, 0xc1ff, 0xbfff, 0xd6ff, 0x1300, 0x5100, 0xf7ff, 0x77ff, 0xe4ff, 0x9000, 0xa400, 0x9a00, 0x5300, 0xacff, -0xa5ff, 0x3a00, 0x3800, 0x0000, 0xe2ff, 0xe3ff, 0x4300, 0xc400, 0x5e00, 0x90ff, 0xb4ff, 0x3a00, 0xf6ff, 0x8eff, 0x86ff, 0xcbfe, -0x49ff, 0xe400, 0x7f00, 0x5cff, 0x80fe, 0x61fd, 0x78fe, 0xf601, 0x4001, 0xabff, 0xc500, 0xe000, 0xf201, 0x0c03, 0x7e00, 0x6ffe, -0xceff, 0x7100, 0xd0ff, 0x6dff, 0x5cfe, 0x4afe, 0x5800, 0x6d01, 0x0e00, 0xc7ff, 0x2e00, 0x2a00, 0xc800, 0xe500, 0x89ff, 0x3cff, -0x5900, 0x1a00, 0xcfff, 0x0b00, 0x71ff, 0x87ff, 0x7000, 0x3100, 0x95ff, 0xe1ff, 0x0000, 0xe9ff, 0x4700, 0x0300, 0x7aff, 0xf1ff, -0x3700, 0xc9ff, 0xfcff, 0x0000, 0xd0ff, 0x6800, 0x9500, 0xdfff, 0xfaff, 0xe7ff, 0xe9ff, 0x9600, 0x1700, 0xbbff, 0x0b00, 0x5300, -0x9000, 0x9c00, 0x1900, 0x97ff, 0xd7ff, 0x6100, 0x2400, 0xbdfe, 0xe0fe, 0xb0ff, 0xb0ff, 0x6400, 0x5500, 0x0dff, 0xdafe, 0x38fe, -0xe1fd, 0x6200, 0x3801, 0xeaff, 0xe200, 0xf901, 0xd901, 0x4802, 0x8001, 0x25ff, 0xd7ff, 0xfa00, 0x7bff, 0xc8fe, 0xe4fe, 0x76fe, -0xb4ff, 0xa800, 0xd5ff, 0xa7ff, 0x4d00, 0x6d00, 0x6e00, 0xb600, 0xe3ff, 0xc3ff, 0x6600, 0x1b00, 0xa3ff, 0xc0ff, 0xbaff, 0x90ff, -0x0a00, 0x1c00, 0x99ff, 0x0900, 0x5000, 0xd6ff, 0x0e00, 0x7400, 0x1f00, 0xf5ff, 0x0d00, 0xc3ff, 0xe6ff, 0x4400, 0xebff, 0x9dff, -0xdfff, 0x5a00, 0x1c00, 0x80ff, 0xd4ff, 0x1f00, 0x1200, 0x4e00, 0x6f00, 0xd900, 0x7d00, 0x9aff, 0xdbff, 0x4000, 0x2300, 0xd1ff, -0xa3ff, 0x89ff, 0x74ff, 0xbdff, 0xb5ff, 0xe8ff, 0x4900, 0x0b00, 0xc6ff, 0x5aff, 0x6dfe, 0xc6fe, 0x3400, 0x6700, 0x2300, 0x9500, -0xa300, 0x2901, 0x0a02, 0xf200, 0x7fff, 0x3800, 0x7e00, 0xedff, 0xb8ff, 0x0fff, 0xeafe, 0xdeff, 0x4500, 0xdcff, 0xcaff, 0x0d00, -0x3d00, 0x7b00, 0x7c00, 0xffff, 0xf5ff, 0x2600, 0x1500, 0xe2ff, 0xd8ff, 0xc6ff, 0xb8ff, 0xf7ff, 0xf6ff, 0xd4ff, 0xf7ff, 0x1300, -0xf7ff, 0x0800, 0xf3ff, 0xbbff, 0xb5ff, 0xfcff, 0xcaff, 0xc4ff, 0xfcff, 0xd2ff, 0xfeff, 0x2500, 0x2000, 0x0400, 0x0000, 0x0200, -0x1000, 0x1e00, 0x1900, 0x2a00, 0x1600, 0x2e00, 0x5500, 0x1b00, 0x1f00, 0x1200, 0x2600, 0x6600, 0x3700, 0xfbff, 0x2200, 0x1300, -0xffff, 0xfbff, 0xcaff, 0x97ff, 0x9eff, 0x95ff, 0x9aff, 0xceff, 0xa2ff, 0x6fff, 0xabff, 0x0000, 0x2400, 0x0c00, 0xf2ff, 0x0f00, -0x6100, 0x7500, 0x4200, 0xfeff, 0x1c00, 0x5a00, 0x4a00, 0x2300, 0x0b00, 0x0f00, 0x0900, 0x1900, 0xfcff, 0xe0ff, 0xfdff, 0x1200, -0x1100, 0x1200, 0x1700, 0x1800, 0x1500, 0x1500, 0x0500, 0xf7ff, 0xf9ff, 0x0800, 0xffff, 0x0300, 0x0000, 0xccff, 0xdaff, 0x0200, -0xe5ff, 0xa7ff, 0x9cff, 0xb4ff, 0xd0ff, 0xcaff, 0xdbff, 0xc9ff, 0xd3ff, 0x0a00, 0x0500, 0x0600, 0x1500, 0x1400, 0x2d00, 0x5900, -0x3000, 0x0900, 0x1300, 0x0800, 0x2000, 0x3600, 0x0500, 0x0000, 0xf6ff, 0x0700, 0x1900, 0xf5ff, 0x1000, 0x1300, 0xcdff, 0xbdff, -0xd7ff, 0xe0ff, 0xd6ff, 0xe6ff, 0xbfff, 0xdfff, 0x3500, 0x1700, 0x0000, 0x2900, 0x4c00, 0x4600, 0x4500, 0x4a00, 0x2100, 0x3c00, -0x4000, 0x0a00, 0xeeff, 0xedff, 0xe6ff, 0xe1ff, 0xe0ff, 0xeeff, 0x0100, 0x0a00, 0x1300, 0x0900, 0x0500, 0x0c00, 0x0600, 0xf2ff, -0xecff, 0xe1ff, 0xe3ff, 0xe2ff, 0xe6ff, 0xe6ff, 0xf8ff, 0x0500, 0x0200, 0x0800, 0xe2ff, 0xdfff, 0x0000, 0x0300, 0xffff, 0x0000, -0x1200, 0x1300, 0x0600, 0x0c00, 0xfcff, 0x1200, 0x1000, 0xfcff, 0x0800, 0x0900, 0xfbff, 0xf6ff, 0xfeff, 0xfbff, 0xfeff, 0xf1ff, -0xfbff, 0x0400, 0x0600, 0x1700, 0x2500, 0x0e00, 0xdbff, 0xb8ff, 0xc9ff, 0xcfff, 0xb2ff, 0xbeff, 0xcdff, 0xc7ff, 0xe2ff, 0x0500, -0x2400, 0x1600, 0x2300, 0x3900, 0x4c00, 0x5400, 0x4200, 0x3a00, 0x3100, 0x3e00, 0x2e00, 0x0800, 0xf6ff, 0xf2ff, 0xf7ff, 0xfaff, -0xf7ff, 0xf3ff, 0x0600, 0x0f00, 0x0300, 0xffff, 0xf9ff, 0xe6ff, 0x0a00, 0x1f00, 0x0a00, 0x0300, 0xf8ff, 0xecff, 0xf2ff, 0xfdff, -0xccff, 0xbbff, 0xe5ff, 0xe6ff, 0xb3ff, 0xc7ff, 0x0000, 0xfaff, 0xf2ff, 0x0d00, 0x1000, 0x0e00, 0x2300, 0x1c00, 0x0f00, 0x1c00, -0x1700, 0x0b00, 0x1000, 0x0c00, 0x0400, 0x0100, 0x0200, 0x0300, 0x0000, 0xfdff, 0x0300, 0x0500, 0x0700, 0x0a00, 0x0600, 0x0400, -0x0100, 0xf5ff, 0xecff, 0xf2ff, 0xf5ff, 0xecff, 0x0200, 0xfdff, 0xe0ff, 0x0800, 0x1b00, 0x0300, 0x0000, 0x0700, 0x0500, 0x0400, -0x0100, 0xf0ff, 0xefff, 0x0100, 0xfcff, 0xfaff, 0x0700, 0x0600, 0x0e00, 0x1500, 0x0800, 0x0500, 0x0d00, 0x1100, 0x0800, 0x0a00, -0x0600, 0xf8ff, 0xfdff, 0x0400, 0x2200, 0x2800, 0x1500, 0x0f00, 0x1800, 0x0e00, 0xfcff, 0xf9ff, 0xefff, 0xe5ff, 0xc5ff, 0xb4ff, -0xc3ff, 0xcfff, 0xcbff, 0xcdff, 0xe4ff, 0xf7ff, 0x0300, 0x1300, 0xffff, 0xf8ff, 0x0e00, 0x0900, 0xfeff, 0xfeff, 0xfeff, 0xfbff, -0x0300, 0x0a00, 0x0a00, 0x0f00, 0x1100, 0x0d00, 0x0800, 0x0e00, 0x1600, 0x0d00, 0x0900, 0x0900, 0x0100, 0x0200, 0x0000, 0xebff, -0xfbff, 0x0200, 0xdeff, 0xf8ff, 0x0c00, 0xf8ff, 0xefff, 0x0100, 0x0000, 0x0200, 0x0500, 0x0f00, 0x1900, 0x2400, 0x2d00, 0x1b00, -0x1500, 0x1b00, 0x1e00, 0x1200, 0x0100, 0x0000, 0xfeff, 0x0200, 0x0400, 0xfeff, 0xfaff, 0x0200, 0x0b00, 0x1d00, 0x2e00, 0x0100, -0xf7ff, 0x0d00, 0x0300, 0xf7ff, 0xfbff, 0xf5ff, 0xeaff, 0xe8ff, 0xc9ff, 0xccff, 0xe2ff, 0xe2ff, 0xdeff, 0xe5ff, 0xf0ff, 0xfaff, -0x0900, 0x0700, 0xe8ff, 0xedff, 0x0300, 0xfdff, 0xf3ff, 0xf8ff, 0x0e00, 0x0b00, 0x1800, 0x1200, 0x0100, 0x0f00, 0x1300, 0x1100, -0x0e00, 0x1700, 0x1500, 0x0800, 0x0500, 0xf1ff, 0xe5ff, 0xe3ff, 0xd9ff, 0xceff, 0xc6ff, 0xbeff, 0xe5ff, 0xf2ff, 0xebff, 0xf1ff, -0x0200, 0xffff, 0x0900, 0x1000, 0x1000, 0x1300, 0x2a00, 0x3700, 0x2c00, 0x3000, 0x3000, 0x2300, 0x2100, 0x2500, 0x1d00, 0x1700, -0x1b00, 0x1800, 0x1800, 0x1900, 0x0f00, 0x0a00, 0x1300, 0x1e00, 0x1600, 0x0f00, 0xffff, 0x0200, 0xf2ff, 0xe3ff, 0xdfff, 0xdbff, -0xd5ff, 0xc2ff, 0xb8ff, 0xb3ff, 0xbaff, 0xc4ff, 0xc9ff, 0xd1ff, 0xe4ff, 0xfcff, 0xfbff, 0xfeff, 0x0c00, 0x0c00, 0x1300, 0x2200, -0x2300, 0x2100, 0x2b00, 0x3700, 0x2c00, 0x2d00, 0x2d00, 0x2300, 0x2800, 0x2300, 0x1300, 0x1800, 0x1000, 0xedff, 0xe1ff, 0xd6ff, -0xbcff, 0xb8ff, 0xb3ff, 0x98ff, 0x9bff, 0xb7ff, 0xcfff, 0xd6ff, 0xe5ff, 0xecff, 0xf5ff, 0x0000, 0x0600, 0x1600, 0x1100, 0x1a00, -0x3100, 0x3700, 0x3800, 0x3700, 0x3b00, 0x3900, 0x3700, 0x3200, 0x3400, 0x3600, 0x2e00, 0x2800, 0x2700, 0x1e00, 0x1800, 0x1800, -0x1000, 0x1400, 0x0900, 0xfcff, 0xf7ff, 0xf1ff, 0xe4ff, 0xd7ff, 0xd7ff, 0xd2ff, 0xc1ff, 0xc1ff, 0xc8ff, 0xc3ff, 0xc5ff, 0xd6ff, -0xddff, 0xdfff, 0xf0ff, 0x0000, 0x0300, 0x0300, 0x0900, 0x0a00, 0x1700, 0x2200, 0x1700, 0x2000, 0x3100, 0x3200, 0x3300, 0x2e00, -0x2800, 0x1d00, 0x2600, 0x2200, 0x1800, 0x1300, 0x0200, 0xf0ff, 0xd3ff, 0xc8ff, 0xc0ff, 0xbbff, 0xbbff, 0xb4ff, 0xaaff, 0xbaff, -0xd7ff, 0xe9ff, 0xf2ff, 0xfcff, 0x0500, 0x1000, 0x1900, 0x1a00, 0x2100, 0x1b00, 0x1d00, 0x2a00, 0x1d00, 0x1000, 0x0b00, 0x0c00, -0x0b00, 0x0600, 0x0100, 0x0400, 0x0900, 0x0900, 0x0600, 0x0500, 0x0800, 0x0f00, 0x1100, 0xfcff, 0x0900, 0x0c00, 0x0400, 0x0500, -0x0000, 0xf8ff, 0xf3ff, 0xf7ff, 0xefff, 0xe7ff, 0xeeff, 0xf1ff, 0xf2ff, 0xf5ff, 0xfbff, 0xfdff, 0xffff, 0x0000, 0x0100, 0x0000, -0xfeff, 0xffff, 0x0000, 0x0000, 0x0100, 0xffff, 0x0000, 0x0400, 0x0500, 0x0200, 0xffff, 0x0000, 0xfeff, 0xfcff, 0xfbff, 0xf7ff, -0xf3ff, 0xf1ff, 0xf6ff, 0xf1ff, 0xf4ff, 0xf7ff, 0xfaff, 0xfeff, 0x0700, 0x0e00, 0x1300, 0x1e00, 0x2000, 0x2200, 0x2000, 0x2200, -0x1d00, 0x1c00, 0x1d00, 0x1b00, 0x1600, 0x1b00, 0x1900, 0x1200, 0x0d00, 0x0a00, 0x0500, 0x0000, 0xebff, 0xddff, 0xe1ff, 0xe0ff, -0xddff, 0xdcff, 0xdeff, 0xdeff, 0xe6ff, 0xebff, 0xeeff, 0xf4ff, 0xffff, 0x0100, 0x0a00, 0x0b00, 0x0100, 0x0600, 0x1600, 0x0e00, -0x0a00, 0x1100, 0x1500, 0x1000, 0x1000, 0x0d00, 0x0b00, 0x0900, 0x0500, 0xfbff, 0xffff, 0x0200, 0x0000, 0x0100, 0x0100, 0x0200, -0xfbff, 0x0000, 0xfaff, 0xf4ff, 0xedff, 0xedff, 0xe9ff, 0xe4ff, 0xe2ff, 0xdeff, 0xdbff, 0xe0ff, 0xe0ff, 0xe3ff, 0xe9ff, 0xf3ff, -0xf7ff, 0x0700, 0x0b00, 0x0000, 0x0f00, 0x1b00, 0x1700, 0x1600, 0x2100, 0x2600, 0x2700, 0x2e00, 0x2600, 0x2300, 0x2000, 0x1800, -0x0e00, 0x0b00, 0x0200, 0x0300, 0xf3ff, 0xe2ff, 0xe0ff, 0xe0ff, 0xe1ff, 0xdeff, 0xe3ff, 0xe4ff, 0xf2ff, 0xf1ff, 0xfcff, 0xf9ff, -0xf8ff, 0x0000, 0x0300, 0x0900, 0x0a00, 0x0e00, 0x0300, 0x0600, 0x0400, 0x0400, 0x0100, 0x0200, 0x0000, 0x0000, 0xffff, 0xfcff, -0x0100, 0x0100, 0x0300, 0x0400, 0x0800, 0x0500, 0x0500, 0x0000, 0xfaff, 0xffff, 0x0100, 0xfcff, 0xfeff, 0x0000, 0xfcff, 0xf6ff, -0xf5ff, 0xf3ff, 0xf3ff, 0xf0ff, 0xf7ff, 0xfcff, 0x0100, 0x0e00, 0x1800, 0x1900, 0x1d00, 0x2800, 0x2400, 0x2000, 0x2400, 0x2000, -0x1400, 0x0d00, 0x0000, 0xf9ff, 0xeeff, 0xe7ff, 0xe6ff, 0xe3ff, 0xe0ff, 0xdbff, 0xe6ff, 0xeeff, 0xf4ff, 0xfdff, 0xfeff, 0xffff, -0x0000, 0x0400, 0x0000, 0x0500, 0x0500, 0x0900, 0x0500, 0x0600, 0x0c00, 0x0d00, 0x1200, 0x0c00, 0x0d00, 0x0a00, 0x0d00, 0x0b00, -0x0500, 0x0100, 0x0100, 0xfeff, 0xfdff, 0xfaff, 0xfaff, 0xfaff, 0xfbff, 0xf9ff, 0xf8ff, 0xf8ff, 0xf7ff, 0xf8ff, 0xf6ff, 0xf3ff, -0xf8ff, 0xf6ff, 0xf4ff, 0xf2ff, 0xf1ff, 0xefff, 0xf5ff, 0xf3ff, 0xf6ff, 0xfcff, 0xfdff, 0xfcff, 0xffff, 0x0100, 0x0000, 0x0000, -0x0400, 0x1000, 0x1000, 0x1300, 0x1700, 0x1e00, 0x1400, 0x1200, 0x1400, 0x0e00, 0x1400, 0x1100, 0x0600, 0xfbff, 0xf3ff, 0xe9ff, -0xebff, 0xe8ff, 0xe2ff, 0xe7ff, 0xebff, 0xf1ff, 0xf5ff, 0xfeff, 0x0100, 0xffff, 0xfaff, 0xfdff, 0xfeff, 0xfeff, 0xfeff, 0xffff, -0x0900, 0x0c00, 0x1100, 0x1400, 0x1100, 0x1200, 0x0d00, 0x0b00, 0x0f00, 0x0f00, 0x0a00, 0x0600, 0xfeff, 0x0000, 0xfeff, 0xf9ff, -0xfcff, 0xfaff, 0xf8ff, 0xfbff, 0xfeff, 0xf9ff, 0xfcff, 0xf7ff, 0xfbff, 0xf5ff, 0xfcff, 0x0900, 0x0000, 0x0a00, 0x0600, 0xfeff, -0xfbff, 0x1700, 0x1000, 0x0800, 0x1100, 0x0800, 0xf2ff, 0x0400, 0x0300, 0x0000, 0x1d00, 0x1b00, 0x0b00, 0xf1ff, 0xd8ff, 0xddff, -0xeeff, 0xdfff, 0xd0ff, 0xf0ff, 0xf3ff, 0xf4ff, 0x0300, 0x1000, 0xf9ff, 0xf3ff, 0x1000, 0x1e00, 0x0e00, 0xfdff, 0xfaff, 0xfdff, -0x1100, 0xfeff, 0x1d00, 0x3100, 0x0300, 0xf8ff, 0x0c00, 0x1700, 0x1300, 0x0200, 0xfdff, 0x0900, 0x0800, 0xf8ff, 0xf9ff, 0xfaff, -0xf3ff, 0x0400, 0xfcff, 0xf5ff, 0x0100, 0xfaff, 0xe3ff, 0xe4ff, 0xf8ff, 0x0000, 0x0300, 0xf1ff, 0xe1ff, 0x0000, 0xf7ff, 0xf4ff, -0xefff, 0xdfff, 0x0900, 0x1600, 0xe0ff, 0xf5ff, 0x1500, 0x0900, 0xfdff, 0x0300, 0x1200, 0x1900, 0xffff, 0x0e00, 0x3e00, 0x3400, -0xe3ff, 0xfbff, 0x2c00, 0xfdff, 0xe5ff, 0x0300, 0x0800, 0x0200, 0xe5ff, 0xe0ff, 0x0900, 0x1500, 0xdeff, 0xe1ff, 0xf8ff, 0xe0ff, -0xddff, 0x1500, 0x1f00, 0xecff, 0x0c00, 0x6aff, 0x0700, 0x2600, 0xecfe, 0xac01, 0x8500, 0xa9fe, 0xa200, 0x6700, 0xb8ff, 0x8f00, -0xf9ff, 0xa1ff, 0xd100, 0xc1fe, 0x8900, 0x4a01, 0x6dfe, 0xf9ff, 0x1301, 0xb1ff, 0xbaff, 0xac00, 0x1401, 0x7bfe, 0x16ff, 0x8e01, -0x92ff, 0x03ff, 0x7202, 0xedff, 0x58fe, 0x6b00, 0x0300, 0xc6ff, 0x5600, 0xadff, 0xd5ff, 0xe800, 0x85ff, 0x16ff, 0xd000, 0x2600, -0xacff, 0x3f00, 0x47fe, 0x6000, 0x3b02, 0xc1fe, 0x56fe, 0x3001, 0xc2ff, 0xfffe, 0xf4ff, 0x2400, 0x5000, 0x1f00, 0x38ff, 0x0200, -0x6800, 0xc800, 0x45ff, 0xb1ff, 0xeb00, 0x0100, 0xaaff, 0x0f00, 0x7f00, 0x2400, 0x8d00, 0xa5ff, 0x0600, 0xa501, 0xa5ff, 0x67ff, -0xb700, 0x0e00, 0xa6ff, 0xe1ff, 0x0c00, 0xf4ff, 0xf1ff, 0x29ff, 0x0cff, 0xb1ff, 0x2fff, 0xfffe, 0xe0ff, 0x1900, 0xe1ff, 0x1600, -0x5b00, 0x6200, 0x7d00, 0x1f00, 0x1300, 0x6100, 0x4500, 0xf3ff, 0xb400, 0x7800, 0x5d00, 0x1600, 0x4500, 0x4700, 0x1200, 0x0a00, -0xd5ff, 0x5a00, 0x3400, 0xf4ff, 0x3600, 0xbeff, 0xe1ff, 0x0300, 0xb6ff, 0xa5ff, 0xc2ff, 0x98ff, 0xc5ff, 0x2100, 0xdbff, 0x2d00, -0x1400, 0xd4ff, 0x2e00, 0x0a00, 0xfaff, 0x0a00, 0x0300, 0xd9ff, 0xc3ff, 0x6600, 0x1d00, 0x80ff, 0x0700, 0x2300, 0x0eff, 0xacff, -0x0500, 0xacff, 0x1400, 0x4600, 0x5000, 0x6400, 0xad00, 0x4900, 0x2c00, 0x7900, 0x3000, 0xc7ff, 0xbbff, 0x8cff, 0xa3ff, 0x5800, -0xcfff, 0xddfe, 0x8fff, 0xc3ff, 0x78fe, 0x51ff, 0xceff, 0x62ff, 0x2b00, 0xbd00, 0x7300, 0xe000, 0x7901, 0x8900, 0x6e00, 0xf000, -0x5100, 0xd5ff, 0xcfff, 0xacff, 0xe1ff, 0xc400, 0x71ff, 0xbffd, 0xacff, 0xfdff, 0x5dfe, 0x43ff, 0xa000, 0x9b00, 0xab00, 0x1f01, -0x0b01, 0x7e01, 0x1f01, 0xddff, 0xfcff, 0x3200, 0x3fff, 0x16ff, 0x1500, 0xc7ff, 0xddfe, 0x64ff, 0xe6fe, 0x4efe, 0x26ff, 0x4dff, -0x30ff, 0x2800, 0x2401, 0xe300, 0x6301, 0xdf01, 0xa801, 0xb001, 0x5701, 0xc500, 0x8100, 0x3600, 0xa7ff, 0xd6ff, 0x6100, 0x0eff, -0x82fe, 0x9eff, 0xa8ff, 0x03ff, 0x97ff, 0x7300, 0x8200, 0x6600, 0x6000, 0x6700, 0x7c00, 0xdeff, 0x2fff, 0x57ff, 0x83ff, 0x26ff, -0xf3fe, 0x37ff, 0x49ff, 0xe6fe, 0x04ff, 0x66ff, 0x8dff, 0xa6ff, 0x0100, 0x8300, 0xbc00, 0xf200, 0x2501, 0x6301, 0x6601, 0x2b01, -0xed00, 0xbe00, 0x6400, 0x2400, 0x2f00, 0x0d00, 0xe0ff, 0xe5ff, 0xbeff, 0xc4ff, 0x0e00, 0x0600, 0xebff, 0xfbff, 0xd1ff, 0xa5ff, -0x7eff, 0x48ff, 0x2dff, 0x35ff, 0x19ff, 0x62ff, 0x30ff, 0x40ff, 0xbfff, 0x6fff, 0x7eff, 0x0600, 0xe4ff, 0xbaff, 0x4000, 0xae00, -0x8f00, 0x8500, 0xab00, 0xd500, 0xa900, 0x5800, 0x4d00, 0x4a00, 0x1f00, 0xe3ff, 0xd5ff, 0x0500, 0x0e00, 0x5eff, 0xbfff, 0x9500 }; diff --git a/codecs/slin_ulaw_ex.h b/codecs/slin_ulaw_ex.h deleted file mode 100644 index 083acef3c..000000000 --- a/codecs/slin_ulaw_ex.h +++ /dev/null @@ -1,25 +0,0 @@ -/*! \file - * \brief slin_ulaw_ex.h -- - * - * Signed 16-bit audio data, 10 milliseconds worth at 8 kHz. - * - * Source: g723.example - * - * Copyright (C) 2001-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static signed short slin_ulaw_ex[] = { - 0xcac0, 0xcdeb, 0xd116, 0xd441, 0xd76c, 0xda97, 0xddc2, 0xe0ed, - 0x0000, 0x032b, 0x0656, 0x0981, 0x0cac, 0x0fd7, 0x1302, 0x162d, - 0x1958, 0x1c83, 0x1fae, 0x22d9, 0x2604, 0x292f, 0x2c5a, 0x2f85, - 0x32b0, 0x35db, 0x3906, 0x3c31, 0x3f5c, 0x4287, 0x45b2, 0x48dd, - 0xb168, 0xb493, 0xb7be, 0xbae9, 0xbe14, 0xc13f, 0xc46a, 0xc795, - 0xe418, 0xe743, 0xea6e, 0xed99, 0xf0c4, 0xf3ef, 0xf71a, 0xfa45, - 0x9810, 0x9b3b, 0x9e66, 0xa191, 0xa4bc, 0xa7e7, 0xab12, 0xae3d, - 0x4c08, 0x4f33, 0x525e, 0x5589, 0x58b4, 0x5bdf, 0x5f0a, 0x6235, - 0x6560, 0x688b, 0x6bb6, 0x6ee1, 0x720c, 0x7537, 0x7862, 0x7b8d, - 0x7eb8, 0x81e3, 0x850e, 0x8839, 0x8b64, 0x8e8f, 0x91ba, 0x94e5, -}; diff --git a/codecs/speex_slin_ex.h b/codecs/speex_slin_ex.h deleted file mode 100644 index 404743799..000000000 --- a/codecs/speex_slin_ex.h +++ /dev/null @@ -1,16 +0,0 @@ -/*! \file - * \brief Random Data data - * - * Source: speex.raw - * - * Copyright (C) 1999-2005, Digium Inc. - * - * Distributed under the terms of the GNU General Public License - * - */ - -static unsigned char speex_slin_ex[] = { -0x2e, 0x8e, 0x0f, 0x9a, 0x20, 0000, 0x01, 0x7f, 0xff, 0xff, -0xff, 0xff, 0xff, 0x91, 0000, 0xbf, 0xff, 0xff, 0xff, 0xff, -0xff, 0xdc, 0x80, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x98, 0x7f, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xf7, 0x80 }; diff --git a/include/asterisk/slin.h b/include/asterisk/slin.h new file mode 100644 index 000000000..c1f33b910 --- /dev/null +++ b/include/asterisk/slin.h @@ -0,0 +1,115 @@ +/* + * Asterisk -- An open source telephony toolkit. + * + * Copyright (C) 2007, Digium, Inc. + * + * Russell Bryant <russell@digium.com> + * + * See http://www.asterisk.org for more information about + * the Asterisk project. Please do not directly contact + * any of the maintainers of this project for assistance; + * the project provides a web site, mailing lists and IRC + * channels for your use. + * + * This program is free software, distributed under the terms of + * the GNU General Public License Version 2. See the LICENSE file + * at the top of the source tree. + */ + +static uint8_t ex_slin8[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static uint8_t ex_slin16[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static inline struct ast_frame *slin8_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass = AST_FORMAT_SLINEAR, + .datalen = sizeof(ex_slin8), + .samples = ARRAY_LEN(ex_slin8) / 2, + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_slin8, + }; + + return &f; +} + +static inline struct ast_frame *slin16_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass = AST_FORMAT_SLINEAR16, + .datalen = sizeof(ex_slin16), + .samples = ARRAY_LEN(ex_slin16) / 2, + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_slin16, + }; + + return &f; +} |