From 5bbab86675b1a9bcc540aecd923363371b7b9b6e Mon Sep 17 00:00:00 2001 From: dvossel Date: Mon, 21 Jun 2010 21:58:33 +0000 Subject: [PATCH] add speex 16khz sample frame so codec cost can be calculated (closes issue #17534) Reported by: fabled Patches: speex-wb-sample.diff uploaded by fabled (license 448) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@271625 f38db490-d61c-443f-a65b-d21fe96a405b --- codecs/codec_speex.c | 4 ++-- codecs/ex_speex.h | 37 +++++++++++++++++++++++++++++++++--- contrib/editors/asterisk.vim | 2 +- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/codecs/codec_speex.c b/codecs/codec_speex.c index 85f231f9b..2bfdec228 100644 --- a/codecs/codec_speex.c +++ b/codecs/codec_speex.c @@ -363,7 +363,7 @@ static struct ast_translator speexwbtolin16 = { .newpvt = speexwbtolin16_new, .framein = speextolin_framein, .destroy = speextolin_destroy, - .sample = speex_sample, + .sample = speex16_sample, .desc_size = sizeof(struct speex_coder_pvt), .buffer_samples = BUFFER_SAMPLES, .buf_size = BUFFER_SAMPLES * 2, @@ -378,7 +378,7 @@ static struct ast_translator lin16tospeexwb = { .framein = lintospeex_framein, .frameout = lintospeex_frameout, .destroy = lintospeex_destroy, - .sample = slin8_sample, + .sample = slin16_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/ex_speex.h b/codecs/ex_speex.h index 36c91ae4c..60ccf092e 100644 --- a/codecs/ex_speex.h +++ b/codecs/ex_speex.h @@ -8,9 +8,9 @@ */ 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, + 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, }; @@ -30,3 +30,34 @@ static struct ast_frame *speex_sample(void) return &f; } + +static uint8_t ex_speex16[] = { + 0x3f, 0x78, 0x89, 0x14, 0x4a, 0x00, 0x00, 0x7f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, + 0x06, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xc0, 0x30, 0x5f, 0xff, 0xfd, 0xbb, 0xee, + 0x30, 0x56, 0xff, 0xf8, 0x74, 0x54, 0x31, 0xe6, 0xfe, 0x71, + 0xdc, 0xca, 0x44, 0x6a, 0x43, 0x75, 0xae, 0x31, 0x7a, 0x50, + 0xd9, 0xfc, 0x93, 0x13, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, + 0xab, 0xab, 0xab, 0xab, 0x3a, 0xba, 0xba, 0xba, 0xba, 0xba, + 0xba, 0xba, 0xba, 0xba, 0xb0, 0xab, 0xab, 0xab, 0xd9, 0x37, + 0xab, 0xab, 0xb4, 0x34, 0xe9, 0x0b, 0xd4, 0x2f, 0x13, 0x4c, + 0xf0, 0xef, 0x8d, 0xdd, 0x99, 0xc7 +}; + +static struct ast_frame *speex16_sample(void) +{ + static struct ast_frame f = { + .frametype = AST_FRAME_VOICE, + .subclass.codec = AST_FORMAT_SPEEX16, + .datalen = sizeof(ex_speex16), + /* All frames are 20 ms long */ + .samples = SPEEX_SAMPLES, + .mallocd = 0, + .offset = 0, + .src = __PRETTY_FUNCTION__, + .data.ptr = ex_speex16, + }; + + return &f; +} diff --git a/contrib/editors/asterisk.vim b/contrib/editors/asterisk.vim index 452510f6d..217fe809c 100644 --- a/contrib/editors/asterisk.vim +++ b/contrib/editors/asterisk.vim @@ -37,7 +37,7 @@ syn match asteriskFunction "\${_\{0,2}[[:alpha:]][[:alnum:]_]*(.*)} syn match asteriskFunction "(\zs[[:alpha:]][[:alnum:]_]*(.\{-})\ze=" contains=asteriskVar,asteriskFunction,asteriskExp syn region asteriskExp matchgroup=asteriskExpStart start="\$\[" end="]" contains=asteriskVar,asteriskFunction,asteriskExp syn match asteriskCodecsPermit "^\s*\(allow\|disallow\)\s*=\s*.*$" contains=asteriskCodecs -syn match asteriskCodecs "\(g723\|gsm\|ulaw\|alaw\|g726\|adpcm\|slin\|lpc10\|g729\|speex\|ilbc\|all\s*$\)" +syn match asteriskCodecs "\(g723\|gsm\|ulaw\|alaw\|g726\|adpcm\|slin\|lpc10\|g729\|speex\|speex16\|ilbc\|all\s*$\)" syn match asteriskError "^\(type\|auth\|permit\|deny\|bindaddr\|host\)\s*=.*$" syn match asteriskType "^\zstype=\ze\<\(peer\|user\|friend\)\>$" contains=asteriskTypeType syn match asteriskTypeType "\<\(peer\|user\|friend\)\>" contained