[asterisk-commits] dvossel: branch dvossel/fixtheworld_phase2 r307064 - in /team/dvossel/fixthew...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Feb 8 15:09:54 CST 2011
Author: dvossel
Date: Tue Feb 8 15:09:49 2011
New Revision: 307064
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=307064
Log:
Asterisk now supports, super, super, super wideband codecs with translation.
Introduction of 192khz, 96khz, 48khz, 44.1khz, 32khz, 24khz, 12khz
16-bit signed linear formats with translation using codec_resample.
Modified:
team/dvossel/fixtheworld_phase2/codecs/codec_resample.c
team/dvossel/fixtheworld_phase2/include/asterisk/format.h
team/dvossel/fixtheworld_phase2/include/asterisk/frame.h
team/dvossel/fixtheworld_phase2/include/asterisk/time.h
team/dvossel/fixtheworld_phase2/include/asterisk/translate.h
team/dvossel/fixtheworld_phase2/main/channel.c
team/dvossel/fixtheworld_phase2/main/format.c
team/dvossel/fixtheworld_phase2/main/translate.c
team/dvossel/fixtheworld_phase2/res/res_rtp_asterisk.c
Modified: team/dvossel/fixtheworld_phase2/codecs/codec_resample.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase2/codecs/codec_resample.c?view=diff&rev=307064&r1=307063&r2=307064
==============================================================================
--- team/dvossel/fixtheworld_phase2/codecs/codec_resample.c (original)
+++ team/dvossel/fixtheworld_phase2/codecs/codec_resample.c Tue Feb 8 15:09:49 2011
@@ -55,51 +55,42 @@
#define OUTBUF_SIZE 8096
-struct slin16_to_slin8_pvt {
+struct ast_translator *translators;
+int trans_size;
+int id_list[] = {
+ AST_FORMAT_SLINEAR,
+ AST_FORMAT_SLINEAR12,
+ AST_FORMAT_SLINEAR16,
+ AST_FORMAT_SLINEAR24,
+ AST_FORMAT_SLINEAR32,
+ AST_FORMAT_SLINEAR44,
+ AST_FORMAT_SLINEAR48,
+ AST_FORMAT_SLINEAR96,
+ AST_FORMAT_SLINEAR192,
+};
+
+struct resamp_pvt {
void *resampler;
float resample_factor;
};
-struct slin8_to_slin16_pvt {
- void *resampler;
- float resample_factor;
-};
-
-static int slin16_to_slin8_new(struct ast_trans_pvt *pvt)
-{
- struct slin16_to_slin8_pvt *resamp_pvt = pvt->pvt;
-
- resamp_pvt->resample_factor = 8000.0 / 16000.0;
-
- if (!(resamp_pvt->resampler = resample_open(RESAMPLER_QUALITY, resamp_pvt->resample_factor, resamp_pvt->resample_factor)))
+static int resamp_new(struct ast_trans_pvt *pvt)
+{
+ struct resamp_pvt *resamp_pvt = pvt->pvt;
+
+ resamp_pvt->resample_factor = (float) ast_format_rate(&pvt->t->dst_format) / ast_format_rate(&pvt->t->src_format);
+
+ if (!(resamp_pvt->resampler = resample_open(RESAMPLER_QUALITY, resamp_pvt->resample_factor, resamp_pvt->resample_factor))) {
+ ast_log(LOG_WARNING, "Failed to create resample translator from %d to %d resamp factor %f\n", ast_format_rate(&pvt->t->dst_format), ast_format_rate(&pvt->t->src_format), resamp_pvt->resample_factor);
return -1;
+ }
return 0;
}
-static int slin8_to_slin16_new(struct ast_trans_pvt *pvt)
-{
- struct slin8_to_slin16_pvt *resamp_pvt = pvt->pvt;
-
- resamp_pvt->resample_factor = 16000.0 / 8000.0;
-
- if (!(resamp_pvt->resampler = resample_open(RESAMPLER_QUALITY, resamp_pvt->resample_factor, resamp_pvt->resample_factor)))
- return -1;
-
- return 0;
-}
-
-static void slin16_to_slin8_destroy(struct ast_trans_pvt *pvt)
-{
- struct slin16_to_slin8_pvt *resamp_pvt = pvt->pvt;
-
- if (resamp_pvt->resampler)
- resample_close(resamp_pvt->resampler);
-}
-
-static void slin8_to_slin16_destroy(struct ast_trans_pvt *pvt)
-{
- struct slin8_to_slin16_pvt *resamp_pvt = pvt->pvt;
+static void resamp_destroy(struct ast_trans_pvt *pvt)
+{
+ struct resamp_pvt *resamp_pvt = pvt->pvt;
if (resamp_pvt->resampler)
resample_close(resamp_pvt->resampler);
@@ -150,52 +141,24 @@
return res;
}
-static int slin16_to_slin8_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
-{
- struct slin16_to_slin8_pvt *resamp_pvt = pvt->pvt;
+static int resamp_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
+{
+ struct resamp_pvt *resamp_pvt = pvt->pvt;
void *resampler = resamp_pvt->resampler;
float resample_factor = resamp_pvt->resample_factor;
return resample_frame(pvt, resampler, resample_factor, f);
}
-static int slin8_to_slin16_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
-{
- struct slin8_to_slin16_pvt *resamp_pvt = pvt->pvt;
- void *resampler = resamp_pvt->resampler;
- float resample_factor = resamp_pvt->resample_factor;
-
- return resample_frame(pvt, resampler, resample_factor, f);
-}
-
-static struct ast_translator slin16_to_slin8 = {
- .name = "slin16_to_slin8",
- .newpvt = slin16_to_slin8_new,
- .destroy = slin16_to_slin8_destroy,
- .framein = slin16_to_slin8_framein,
- .sample = slin16_sample,
- .desc_size = sizeof(struct slin16_to_slin8_pvt),
- .buffer_samples = (OUTBUF_SIZE / sizeof(int16_t)),
- .buf_size = OUTBUF_SIZE,
-};
-
-static struct ast_translator slin8_to_slin16 = {
- .name = "slin8_to_slin16",
- .newpvt = slin8_to_slin16_new,
- .destroy = slin8_to_slin16_destroy,
- .framein = slin8_to_slin16_framein,
- .sample = slin8_sample,
- .desc_size = sizeof(struct slin8_to_slin16_pvt),
- .buffer_samples = (OUTBUF_SIZE / sizeof(int16_t)),
- .buf_size = OUTBUF_SIZE,
-};
-
static int unload_module(void)
{
int res = 0;
-
- res |= ast_unregister_translator(&slin16_to_slin8);
- res |= ast_unregister_translator(&slin8_to_slin16);
+ int idx;
+
+ for (idx = 0; idx < ARRAY_LEN(translators); idx++) {
+ res |= ast_unregister_translator(&translators[idx]);
+ }
+ ast_free(translators);
return res;
}
@@ -203,15 +166,33 @@
static int load_module(void)
{
int res = 0;
-
- ast_format_set(&slin16_to_slin8.src_format, AST_FORMAT_SLINEAR16, 0);
- ast_format_set(&slin16_to_slin8.dst_format, AST_FORMAT_SLINEAR, 0);
-
- ast_format_set(&slin8_to_slin16.src_format, AST_FORMAT_SLINEAR, 0);
- ast_format_set(&slin8_to_slin16.dst_format, AST_FORMAT_SLINEAR16, 0);
-
- res |= ast_register_translator(&slin16_to_slin8);
- res |= ast_register_translator(&slin8_to_slin16);
+ int x, y, idx = 0;
+
+ trans_size = ARRAY_LEN(id_list) * ARRAY_LEN(id_list);
+ if (!(translators = ast_calloc(1, sizeof(struct ast_translator) * trans_size))) {
+ return AST_MODULE_LOAD_FAILURE;
+ }
+
+ for (x = 0; x < ARRAY_LEN(id_list); x++) {
+ for (y = 0; y < ARRAY_LEN(id_list); y++) {
+ if (x == y) {
+ continue;
+ }
+ translators[idx].newpvt = resamp_new;
+ translators[idx].destroy = resamp_destroy;
+ translators[idx].framein = resamp_framein;
+ translators[idx].desc_size = sizeof(struct resamp_pvt);
+ translators[idx].buffer_samples = (OUTBUF_SIZE / sizeof(int16_t));
+ translators[idx].buf_size = OUTBUF_SIZE;
+ ast_format_set(&translators[idx].src_format, id_list[x], 0);
+ ast_format_set(&translators[idx].dst_format, id_list[y], 0);
+ snprintf(translators[idx].name, sizeof(translators[idx].name), "slin %dkhz -> %dkhz",
+ ast_format_rate(&translators[idx].src_format), ast_format_rate(&translators[idx].dst_format));
+ res |= ast_register_translator(&translators[idx]);
+ idx++;
+ }
+
+ }
return AST_MODULE_LOAD_SUCCESS;
}
Modified: team/dvossel/fixtheworld_phase2/include/asterisk/format.h
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase2/include/asterisk/format.h?view=diff&rev=307064&r1=307063&r2=307064
==============================================================================
--- team/dvossel/fixtheworld_phase2/include/asterisk/format.h (original)
+++ team/dvossel/fixtheworld_phase2/include/asterisk/format.h Tue Feb 8 15:09:49 2011
@@ -55,34 +55,49 @@
AST_FORMAT_G726_AAL2 = 5 + AST_FORMAT_TYPE_AUDIO,
/*! ADPCM (IMA) */
AST_FORMAT_ADPCM = 6 + AST_FORMAT_TYPE_AUDIO,
+ /*! LPC10, 180 samples/frame */
+ AST_FORMAT_LPC10 = 7 + AST_FORMAT_TYPE_AUDIO,
+ /*! G.729A audio */
+ AST_FORMAT_G729A = 8 + AST_FORMAT_TYPE_AUDIO,
+ /*! SpeeX Free Compression */
+ AST_FORMAT_SPEEX = 9 + AST_FORMAT_TYPE_AUDIO,
+ /*! iLBC Free Compression */
+ AST_FORMAT_ILBC = 10 + AST_FORMAT_TYPE_AUDIO,
+ /*! ADPCM (G.726, 32kbps, RFC3551 codeword packing) */
+ AST_FORMAT_G726 = 11 + AST_FORMAT_TYPE_AUDIO,
+ /*! G.722 */
+ AST_FORMAT_G722 = 12 + AST_FORMAT_TYPE_AUDIO,
+ /*! G.722.1 (also known as Siren7, 32kbps assumed) */
+ AST_FORMAT_SIREN7 = 13 + AST_FORMAT_TYPE_AUDIO,
+ /*! G.722.1 Annex C (also known as Siren14, 48kbps assumed) */
+ AST_FORMAT_SIREN14 = 14 + AST_FORMAT_TYPE_AUDIO,
+ /*! G.719 (64 kbps assumed) */
+ AST_FORMAT_G719 = 15 + AST_FORMAT_TYPE_AUDIO,
+ /*! SpeeX Wideband (16kHz) Free Compression */
+ AST_FORMAT_SPEEX16 = 16 + AST_FORMAT_TYPE_AUDIO,
+ /*! Raw mu-law data (G.711) */
+ AST_FORMAT_TESTLAW = 17 + AST_FORMAT_TYPE_AUDIO,
+ /*! SILK format */
+ AST_FORMAT_SILK = 18 + AST_FORMAT_TYPE_AUDIO,
+
/*! Raw 16-bit Signed Linear (8000 Hz) PCM */
- AST_FORMAT_SLINEAR = 7 + AST_FORMAT_TYPE_AUDIO,
- /*! LPC10, 180 samples/frame */
- AST_FORMAT_LPC10 = 8 + AST_FORMAT_TYPE_AUDIO,
- /*! G.729A audio */
- AST_FORMAT_G729A = 9 + AST_FORMAT_TYPE_AUDIO,
- /*! SpeeX Free Compression */
- AST_FORMAT_SPEEX = 10 + AST_FORMAT_TYPE_AUDIO,
- /*! iLBC Free Compression */
- AST_FORMAT_ILBC = 11 + AST_FORMAT_TYPE_AUDIO,
- /*! ADPCM (G.726, 32kbps, RFC3551 codeword packing) */
- AST_FORMAT_G726 = 12 + AST_FORMAT_TYPE_AUDIO,
- /*! G.722 */
- AST_FORMAT_G722 = 13 + AST_FORMAT_TYPE_AUDIO,
- /*! G.722.1 (also known as Siren7, 32kbps assumed) */
- AST_FORMAT_SIREN7 = 14 + AST_FORMAT_TYPE_AUDIO,
- /*! G.722.1 Annex C (also known as Siren14, 48kbps assumed) */
- AST_FORMAT_SIREN14 = 15 + AST_FORMAT_TYPE_AUDIO,
+ AST_FORMAT_SLINEAR = 19 + AST_FORMAT_TYPE_AUDIO,
+ /*! Raw 16-bit Signed Linear (12000 Hz) PCM */
+ AST_FORMAT_SLINEAR12 = 20 + AST_FORMAT_TYPE_AUDIO,
/*! Raw 16-bit Signed Linear (16000 Hz) PCM */
- AST_FORMAT_SLINEAR16 = 16 + AST_FORMAT_TYPE_AUDIO,
- /*! G.719 (64 kbps assumed) */
- AST_FORMAT_G719 = 17 + AST_FORMAT_TYPE_AUDIO,
- /*! SpeeX Wideband (16kHz) Free Compression */
- AST_FORMAT_SPEEX16 = 18 + AST_FORMAT_TYPE_AUDIO,
- /*! Raw mu-law data (G.711) */
- AST_FORMAT_TESTLAW = 19 + AST_FORMAT_TYPE_AUDIO,
- /*! SILK format */
- AST_FORMAT_SILK = 20 + AST_FORMAT_TYPE_AUDIO,
+ AST_FORMAT_SLINEAR16 = 21 + AST_FORMAT_TYPE_AUDIO,
+ /*! Raw 16-bit Signed Linear (24000 Hz) PCM */
+ AST_FORMAT_SLINEAR24 = 22 + AST_FORMAT_TYPE_AUDIO,
+ /*! Raw 16-bit Signed Linear (32000 Hz) PCM */
+ AST_FORMAT_SLINEAR32 = 23 + AST_FORMAT_TYPE_AUDIO,
+ /*! Raw 16-bit Signed Linear (44100 Hz) PCM just because we can. */
+ AST_FORMAT_SLINEAR44 = 24 + AST_FORMAT_TYPE_AUDIO,
+ /*! Raw 16-bit Signed Linear (48000 Hz) PCM */
+ AST_FORMAT_SLINEAR48 = 25 + AST_FORMAT_TYPE_AUDIO,
+ /*! Raw 16-bit Signed Linear (96000 Hz) PCM */
+ AST_FORMAT_SLINEAR96 = 26 + AST_FORMAT_TYPE_AUDIO,
+ /*! Raw 16-bit Signed Linear (192000 Hz) PCM. maybe we're taking this too far. */
+ AST_FORMAT_SLINEAR192 = 27 + AST_FORMAT_TYPE_AUDIO,
/*! H.261 Video */
AST_FORMAT_H261 = 1 + AST_FORMAT_TYPE_VIDEO,
@@ -108,6 +123,7 @@
/*! Determine what type of media a ast_format_id is. */
#define AST_FORMAT_GET_TYPE(id) (((int) (id / AST_FORMAT_INC)) * AST_FORMAT_INC)
+
/*! SILK format attribute key value pairs */
enum silk_attr_keys {
@@ -374,4 +390,23 @@
*/
int ast_format_list_init(void);
+/*!
+ * \brief Determine if a format is 16bit signed linear of any sample rate.
+ */
+static force_inline int ast_format_is_slinear(const struct ast_format *format)
+{
+ if (format->id == AST_FORMAT_SLINEAR ||
+ format->id == AST_FORMAT_SLINEAR12 ||
+ format->id == AST_FORMAT_SLINEAR16 ||
+ format->id == AST_FORMAT_SLINEAR24 ||
+ format->id == AST_FORMAT_SLINEAR32 ||
+ format->id == AST_FORMAT_SLINEAR44 ||
+ format->id == AST_FORMAT_SLINEAR48 ||
+ format->id == AST_FORMAT_SLINEAR96 ||
+ format->id == AST_FORMAT_SLINEAR192) {
+ return 1;
+ }
+ return 0;
+}
+
#endif /* _AST_FORMAT_H */
Modified: team/dvossel/fixtheworld_phase2/include/asterisk/frame.h
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase2/include/asterisk/frame.h?view=diff&rev=307064&r1=307063&r2=307064
==============================================================================
--- team/dvossel/fixtheworld_phase2/include/asterisk/frame.h (original)
+++ team/dvossel/fixtheworld_phase2/include/asterisk/frame.h Tue Feb 8 15:09:49 2011
@@ -577,6 +577,20 @@
static force_inline int ast_format_rate(const struct ast_format *format)
{
switch (format->id) {
+ case AST_FORMAT_SLINEAR12:
+ return 12000;
+ case AST_FORMAT_SLINEAR24:
+ return 24000;
+ case AST_FORMAT_SLINEAR32:
+ return 32000;
+ case AST_FORMAT_SLINEAR44:
+ return 44100;
+ case AST_FORMAT_SLINEAR48:
+ return 48000;
+ case AST_FORMAT_SLINEAR96:
+ return 96000;
+ case AST_FORMAT_SLINEAR192:
+ return 192000;
case AST_FORMAT_G722:
case AST_FORMAT_SLINEAR16:
case AST_FORMAT_SIREN7:
Modified: team/dvossel/fixtheworld_phase2/include/asterisk/time.h
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase2/include/asterisk/time.h?view=diff&rev=307064&r1=307063&r2=307064
==============================================================================
--- team/dvossel/fixtheworld_phase2/include/asterisk/time.h (original)
+++ team/dvossel/fixtheworld_phase2/include/asterisk/time.h Tue Feb 8 15:09:49 2011
@@ -171,7 +171,7 @@
AST_INLINE_API(
struct timeval ast_samp2tv(unsigned int _nsamp, unsigned int _rate),
{
- return ast_tv(_nsamp / _rate, ((_nsamp % _rate) * (4000000 / _rate)) / 4); /* this calculation is accurate up to 32000Hz. */
+ return ast_tv(_nsamp / _rate, (_nsamp % _rate) * (1000000 / (float) _rate));
}
)
Modified: team/dvossel/fixtheworld_phase2/include/asterisk/translate.h
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase2/include/asterisk/translate.h?view=diff&rev=307064&r1=307063&r2=307064
==============================================================================
--- team/dvossel/fixtheworld_phase2/include/asterisk/translate.h (original)
+++ team/dvossel/fixtheworld_phase2/include/asterisk/translate.h Tue Feb 8 15:09:49 2011
@@ -133,7 +133,7 @@
* Generic plc is only available for dstfmt = SLINEAR
*/
struct ast_translator {
- const char name[80]; /*!< Name of translator */
+ char name[80]; /*!< Name of translator */
struct ast_format src_format; /*!< Source format */
struct ast_format dst_format; /*!< Destination format */
Modified: team/dvossel/fixtheworld_phase2/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase2/main/channel.c?view=diff&rev=307064&r1=307063&r2=307064
==============================================================================
--- team/dvossel/fixtheworld_phase2/main/channel.c (original)
+++ team/dvossel/fixtheworld_phase2/main/channel.c Tue Feb 8 15:09:49 2011
@@ -1006,7 +1006,14 @@
/*! G.722 is better then all below, but not as common as the above... so give ulaw and alaw priority */
AST_FORMAT_G722,
/*! Okay, well, signed linear is easy to translate into other stuff */
+ AST_FORMAT_SLINEAR192,
+ AST_FORMAT_SLINEAR96,
+ AST_FORMAT_SLINEAR48,
+ AST_FORMAT_SLINEAR44,
+ AST_FORMAT_SLINEAR32,
+ AST_FORMAT_SLINEAR24,
AST_FORMAT_SLINEAR16,
+ AST_FORMAT_SLINEAR12,
AST_FORMAT_SLINEAR,
/*! G.726 is standard ADPCM, in RFC3551 packing order */
AST_FORMAT_G726,
@@ -5780,7 +5787,7 @@
* no direct conversion available. If generic PLC is
* desired, then transcoding via SLINEAR is a requirement
*/
- use_slin = (best_src_fmt.id == AST_FORMAT_SLINEAR || best_dst_fmt.id == AST_FORMAT_SLINEAR);
+ use_slin = ast_format_is_slinear(&best_src_fmt) || ast_format_is_slinear(&best_dst_fmt) ? 1 : 0;
if ((ast_format_cmp(&best_src_fmt, &best_dst_fmt) == AST_FORMAT_CMP_NOT_EQUAL) &&
(ast_opt_generic_plc || ast_opt_transcode_via_slin) &&
(ast_translate_path_steps(&best_dst_fmt, &best_src_fmt) != 1 || use_slin)) {
@@ -5789,8 +5796,22 @@
ast_format_rate(&best_src_fmt) : ast_format_rate(&best_dst_fmt);
/* pick the best signed linear format based upon what preserves the sample rate the best. */
- if (best_sample_rate >= 16000) {
+ if (best_sample_rate >= 192000) {
+ ast_format_set(&best_dst_fmt, AST_FORMAT_SLINEAR192, 0);
+ } else if (best_sample_rate >= 96000) {
+ ast_format_set(&best_dst_fmt, AST_FORMAT_SLINEAR96, 0);
+ } else if (best_sample_rate >= 48000) {
+ ast_format_set(&best_dst_fmt, AST_FORMAT_SLINEAR48, 0);
+ } else if (best_sample_rate >= 44100) {
+ ast_format_set(&best_dst_fmt, AST_FORMAT_SLINEAR44, 0);
+ } else if (best_sample_rate >= 32000) {
+ ast_format_set(&best_dst_fmt, AST_FORMAT_SLINEAR32, 0);
+ } else if (best_sample_rate >= 24000) {
+ ast_format_set(&best_dst_fmt, AST_FORMAT_SLINEAR24, 0);
+ } else if (best_sample_rate >= 16000) {
ast_format_set(&best_dst_fmt, AST_FORMAT_SLINEAR16, 0);
+ } else if (best_sample_rate >= 12000) {
+ ast_format_set(&best_dst_fmt, AST_FORMAT_SLINEAR12, 0);
} else {
ast_format_set(&best_dst_fmt, AST_FORMAT_SLINEAR, 0);
}
Modified: team/dvossel/fixtheworld_phase2/main/format.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase2/main/format.c?view=diff&rev=307064&r1=307063&r2=307064
==============================================================================
--- team/dvossel/fixtheworld_phase2/main/format.c (original)
+++ team/dvossel/fixtheworld_phase2/main/format.c Tue Feb 8 15:09:49 2011
@@ -409,7 +409,7 @@
/*! T.140 Text format - ITU T.140, RFC 4103 */
case AST_FORMAT_T140:
return (1ULL << 27);
- case AST_FORMAT_SILK:
+ default:
return 0; /* SILK IS NOT SUPPORTED BY OLD BITFIELD */
}
@@ -905,6 +905,15 @@
format_list_add_static(ast_format_set(&tmpfmt, AST_FORMAT_TESTLAW, 0), "testlaw", 8000, "G.711 test-law", 80, 10, 150, 10, 20, 0, 0); /*!< codec_ulaw.c */
format_list_add_static(ast_format_set(&tmpfmt, AST_FORMAT_G719, 0), "g719", 48000, "ITU G.719", 160, 20, 80, 20, 20, 0, 0);
+ /* ORDER MAY CHANGE AFTER THIS POINT IN THE LIST */
+ format_list_add_static(ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR12, 0), "slin12", 12000, "16 bit Signed Linear PCM (12kHz)", 240, 10, 70, 10, 20, AST_SMOOTHER_FLAG_BE, 0);/*!< Signed linear (12kHz) */
+ format_list_add_static(ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR24, 0), "slin24", 24000, "16 bit Signed Linear PCM (24kHz)", 480, 10, 70, 10, 20, AST_SMOOTHER_FLAG_BE, 0);/*!< Signed linear (24kHz) */
+ format_list_add_static(ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR32, 0), "slin32", 32000, "16 bit Signed Linear PCM (32kHz)", 640, 10, 70, 10, 20, AST_SMOOTHER_FLAG_BE, 0);/*!< Signed linear (32kHz) */
+ format_list_add_static(ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR44, 0), "slin44", 44100, "16 bit Signed Linear PCM (44kHz)", 882, 10, 70, 10, 20, AST_SMOOTHER_FLAG_BE, 0);/*!< Signed linear (44.1kHz) */
+ format_list_add_static(ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR48, 0), "slin48", 48000, "16 bit Signed Linear PCM (48kHz)", 960, 10, 70, 10, 20, AST_SMOOTHER_FLAG_BE, 0);/*!< Signed linear (48kHz) */
+ format_list_add_static(ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR96, 0), "slin96", 96000, "16 bit Signed Linear PCM (96kHz)", 1920, 10, 70, 10, 20, AST_SMOOTHER_FLAG_BE, 0);/*!< Signed linear (96kHz) */
+ format_list_add_static(ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR192, 0), "slin192", 192000, "16 bit Signed Linear PCM (192kHz)", 3840, 10, 70, 10, 20, AST_SMOOTHER_FLAG_BE, 0);/*!< Signed linear (192kHz) */
+
return 0;
}
Modified: team/dvossel/fixtheworld_phase2/main/translate.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase2/main/translate.c?view=diff&rev=307064&r1=307063&r2=307064
==============================================================================
--- team/dvossel/fixtheworld_phase2/main/translate.c (original)
+++ team/dvossel/fixtheworld_phase2/main/translate.c Tue Feb 8 15:09:49 2011
@@ -652,13 +652,8 @@
* table cost. */
return 0;
}
- if ((src->id == AST_FORMAT_SLINEAR) || (src->id == AST_FORMAT_SLINEAR16)) {
- src_ll = 1;
- }
- if ((dst->id == AST_FORMAT_SLINEAR) || (dst->id == AST_FORMAT_SLINEAR16)) {
- dst_ll = 1;
- }
-
+ src_ll = ast_format_is_slinear(src);
+ dst_ll = ast_format_is_slinear(dst);
if (src_ll) {
if (dst_ll && (src_rate == dst_rate)) {
return AST_TRANS_COST_LL_LL_ORIGSAMP;
Modified: team/dvossel/fixtheworld_phase2/res/res_rtp_asterisk.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/fixtheworld_phase2/res/res_rtp_asterisk.c?view=diff&rev=307064&r1=307063&r2=307064
==============================================================================
--- team/dvossel/fixtheworld_phase2/res/res_rtp_asterisk.c (original)
+++ team/dvossel/fixtheworld_phase2/res/res_rtp_asterisk.c Tue Feb 8 15:09:49 2011
@@ -2293,7 +2293,7 @@
if (AST_FORMAT_GET_TYPE(rtp->f.subclass.format.id) == AST_FORMAT_TYPE_AUDIO) {
rtp->f.samples = ast_codec_get_samples(&rtp->f);
- if ((rtp->f.subclass.format.id == AST_FORMAT_SLINEAR) || (rtp->f.subclass.format.id == AST_FORMAT_SLINEAR16)) {
+ if (ast_format_is_slinear(&rtp->f.subclass.format)) {
ast_frame_byteswap_be(&rtp->f);
}
calc_rxstamp(&rtp->f.delivery, rtp, timestamp, mark);
More information about the asterisk-commits
mailing list