コード例 #1
0
ファイル: codec_ulaw.c プロジェクト: Djcd/asterisk-opus
static int load_module(void)
{
	int res;

	ast_format_set(&lintoulaw.src_format, AST_FORMAT_SLINEAR, 0);
	ast_format_set(&lintoulaw.dst_format, AST_FORMAT_ULAW, 0);

	ast_format_set(&lintotestlaw.src_format, AST_FORMAT_SLINEAR, 0);
	ast_format_set(&lintotestlaw.dst_format, AST_FORMAT_TESTLAW, 0);

	ast_format_set(&ulawtolin.src_format, AST_FORMAT_ULAW, 0);
	ast_format_set(&ulawtolin.dst_format, AST_FORMAT_SLINEAR, 0);

	ast_format_set(&testlawtolin.src_format, AST_FORMAT_TESTLAW, 0);
	ast_format_set(&testlawtolin.dst_format, AST_FORMAT_SLINEAR, 0);

	res = ast_register_translator(&ulawtolin);
	if (!res) {
		res = ast_register_translator(&lintoulaw);
		res |= ast_register_translator(&lintotestlaw);
		res |= ast_register_translator(&testlawtolin);
	} else
		ast_unregister_translator(&ulawtolin);
	if (res)
		return AST_MODULE_LOAD_FAILURE;
	return AST_MODULE_LOAD_SUCCESS;
}
コード例 #2
0
int load_module(void)
{
	int res;
	res=ast_register_translator(&gsmtolin);
	if (!res) 
		res=ast_register_translator(&lintogsm);
	else
		ast_unregister_translator(&gsmtolin);
	return res;
}
コード例 #3
0
static int load_module(void) {
	USC_CODEC_Fxns = USC_GetCodecByName ();
	int res;
	res = ast_register_translator(&g729tolin);
	if(!res)
		res = ast_register_translator(&lintog729);
	else
		ast_unregister_translator(&g729tolin);
	return res;
}
コード例 #4
0
static int load_module(void *mod)
{
	int res;
	parse_config();
	res = ast_register_translator(&gsmtolin, mod);
	if (!res) 
		res=ast_register_translator(&lintogsm, mod);
	else
		ast_unregister_translator(&gsmtolin);
	return res;
}
コード例 #5
0
ファイル: codec_ilbc.c プロジェクト: commshare/squeezeterisk
static int load_module(void)
{
	int res;

	res = ast_register_translator(&ilbctolin);
	if (!res) 
		res=ast_register_translator(&lintoilbc);
	else
		ast_unregister_translator(&ilbctolin);

	return res;
}
コード例 #6
0
ファイル: codec_ilbc.c プロジェクト: abieuzent/iaxproxy
static int load_module(void)
{
	int res;

	res = ast_register_translator(&ilbctolin);
	if (!res) 
		res=ast_register_translator(&lintoilbc);
	else
		ast_unregister_translator(&ilbctolin);
	if (res)
		return AST_MODULE_LOAD_FAILURE;
	return AST_MODULE_LOAD_SUCCESS;
}
コード例 #7
0
ファイル: codec_alaw.c プロジェクト: commshare/squeezeterisk
static int load_module(void)
{
	int res;

	parse_config();
	res = ast_register_translator(&alawtolin);
	if (!res)
		res = ast_register_translator(&lintoalaw);
	else
		ast_unregister_translator(&alawtolin);

	return res;
}
コード例 #8
0
static int load_module(void) {
	int res;

	/* We should read this from a config file */
	defaultSendRate = DEFAULT_SEND_RATE;

	res = ast_register_translator(&g723tolin);
	if(!res)
		res = ast_register_translator(&lintog723);
	else
		ast_unregister_translator(&g723tolin);
	return res;
}
コード例 #9
0
ファイル: codec_gsm.c プロジェクト: lyx2014/Asterisk
static int load_module(void)
{
	int res;

	res = ast_register_translator(&gsmtolin);
	res |= ast_register_translator(&lintogsm);

	if (res) {
		unload_module();
		return AST_MODULE_LOAD_FAILURE;
	}

	return AST_MODULE_LOAD_SUCCESS;
}
コード例 #10
0
ファイル: codec_alaw.c プロジェクト: boylubis/ctsoft
static int load_module(void)
{
	int res;

	if (parse_config(0))
		return AST_MODULE_LOAD_DECLINE;
	res = ast_register_translator(&alawtolin);
	if (!res)
		res = ast_register_translator(&lintoalaw);
	else
		ast_unregister_translator(&alawtolin);
	if (res)
		return AST_MODULE_LOAD_FAILURE;
	return AST_MODULE_LOAD_SUCCESS;
}
コード例 #11
0
ファイル: codec_ulaw.c プロジェクト: Evangileon/asterisk
static int load_module(void)
{
	int res;

	res = ast_register_translator(&ulawtolin);
	if (!res) {
		res = ast_register_translator(&lintoulaw);
		res |= ast_register_translator(&lintotestlaw);
		res |= ast_register_translator(&testlawtolin);
	} else
		ast_unregister_translator(&ulawtolin);
	if (res)
		return AST_MODULE_LOAD_FAILURE;
	return AST_MODULE_LOAD_SUCCESS;
}
コード例 #12
0
static int load_module(void)
{
	int res = 0;
	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 = 0;
			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;
}
コード例 #13
0
ファイル: codec_g722.c プロジェクト: coreyfarrell/asterisk
static int load_module(void)
{
	int res = 0;

	res |= ast_register_translator(&g722tolin);
	res |= ast_register_translator(&lintog722);
	res |= ast_register_translator(&g722tolin16);
	res |= ast_register_translator(&lin16tog722);

	if (res) {
		unload_module();
		return AST_MODULE_LOAD_DECLINE;
	}	

	return AST_MODULE_LOAD_SUCCESS;
}
コード例 #14
0
ファイル: codec_ulaw.c プロジェクト: asterisk/asterisk
static int load_module(void)
{
	int res;

	res = ast_register_translator(&ulawtolin);
	res |= ast_register_translator(&lintoulaw);
	res |= ast_register_translator(&lintotestlaw);
	res |= ast_register_translator(&testlawtolin);

	if (res) {
		unload_module();
		return AST_MODULE_LOAD_DECLINE;
	}

	return AST_MODULE_LOAD_SUCCESS;
}
コード例 #15
0
ファイル: codec_gsm.c プロジェクト: mtulio/mtulio
static int load_module(void)
{
	int res;

	ast_format_set(&gsmtolin.src_format, AST_FORMAT_GSM, 0);
	ast_format_set(&gsmtolin.dst_format, AST_FORMAT_SLINEAR, 0);

	ast_format_set(&lintogsm.src_format, AST_FORMAT_SLINEAR, 0);
	ast_format_set(&lintogsm.dst_format, AST_FORMAT_GSM, 0);

	res = ast_register_translator(&gsmtolin);
	if (!res) 
		res=ast_register_translator(&lintogsm);
	else
		ast_unregister_translator(&gsmtolin);
	if (res) 
		return AST_MODULE_LOAD_FAILURE;
	return AST_MODULE_LOAD_SUCCESS;
}
コード例 #16
0
static int load_module(void)
{
	int res;

	res = ast_register_translator(&opustolin);
	res |= ast_register_translator(&lintoopus);
	res |= ast_register_translator(&opustolin12);
	res |= ast_register_translator(&lin12toopus);
	res |= ast_register_translator(&opustolin16);
	res |= ast_register_translator(&lin16toopus);
	res |= ast_register_translator(&opustolin24);
	res |= ast_register_translator(&lin24toopus);
	res |= ast_register_translator(&opustolin48);
	res |= ast_register_translator(&lin48toopus);

	ast_cli_register_multiple(cli, ARRAY_LEN(cli));

	return res;
}
コード例 #17
0
static int load_module(void)
{
	int res;
	int x;

	for (x=0;x<256;x++) {
		mu2a[x] = AST_LIN2A(AST_MULAW(x));
		a2mu[x] = AST_LIN2MU(AST_ALAW(x));
	}

	res = ast_register_translator(&alawtoulaw);
	res |= ast_register_translator(&ulawtoalaw);

	if (res) {
		unload_module();
		return AST_MODULE_LOAD_FAILURE;
	}

	return AST_MODULE_LOAD_SUCCESS;
}
コード例 #18
0
ファイル: codec_a_mu.c プロジェクト: Djcd/asterisk-opus
static int load_module(void)
{
	int res;
	int x;

	ast_format_set(&alawtoulaw.src_format, AST_FORMAT_ALAW, 0);
	ast_format_set(&alawtoulaw.dst_format, AST_FORMAT_ULAW, 0);

	ast_format_set(&ulawtoalaw.src_format, AST_FORMAT_ULAW, 0);
	ast_format_set(&ulawtoalaw.dst_format, AST_FORMAT_ALAW, 0);

	for (x=0;x<256;x++) {
		mu2a[x] = AST_LIN2A(AST_MULAW(x));
		a2mu[x] = AST_LIN2MU(AST_ALAW(x));
	}
	res = ast_register_translator(&alawtoulaw);
	if (!res)
		res = ast_register_translator(&ulawtoalaw);
	else
		ast_unregister_translator(&alawtoulaw);
	if (res)
		return AST_MODULE_LOAD_FAILURE;
	return AST_MODULE_LOAD_SUCCESS;
}
コード例 #19
0
ファイル: codec_resample.c プロジェクト: litnimax/asterisk
static int load_module(void)
{
	int res = 0;
	int x, y, idx = 0;

	trans_size = ARRAY_LEN(codec_list) * (ARRAY_LEN(codec_list) - 1);
	if (!(translators = ast_calloc(1, sizeof(struct ast_translator) * trans_size))) {
		return AST_MODULE_LOAD_FAILURE;
	}

	for (x = 0; x < ARRAY_LEN(codec_list); x++) {
		for (y = 0; y < ARRAY_LEN(codec_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 = 0;
			translators[idx].buffer_samples = OUTBUF_SAMPLES;
			translators[idx].buf_size = (OUTBUF_SAMPLES * sizeof(int16_t));
			memcpy(&translators[idx].src_codec, &codec_list[x], sizeof(struct ast_codec));
			memcpy(&translators[idx].dst_codec, &codec_list[y], sizeof(struct ast_codec));
			snprintf(translators[idx].name, sizeof(translators[idx].name), "slin %ukhz -> %ukhz",
				translators[idx].src_codec.sample_rate, translators[idx].dst_codec.sample_rate);
			res |= ast_register_translator(&translators[idx]);
			idx++;
		}

	}
	/* in case ast_register_translator() failed, we call unload_module() and
	ast_unregister_translator won't fail.*/
	if (res) {
		unload_module();
		return AST_MODULE_LOAD_FAILURE;
	}

	return AST_MODULE_LOAD_SUCCESS;
}
コード例 #20
0
static int load_module(void)
{
	int res = 0;

	if (parse_config(0))
		return AST_MODULE_LOAD_DECLINE;

	res |= ast_register_translator(&speextolin);
	res |= ast_register_translator(&lintospeex);
	res |= ast_register_translator(&speexwbtolin16);
	res |= ast_register_translator(&lin16tospeexwb);
	res |= ast_register_translator(&speexuwbtolin32);
	res |= ast_register_translator(&lin32tospeexuwb);

	if (res) {
		unload_module();
		return res;
	}

	return res;
}
コード例 #21
0
ファイル: codec_speex.c プロジェクト: mtulio/mtulio
static int load_module(void)
{
	int res = 0;

	if (parse_config(0))
		return AST_MODULE_LOAD_DECLINE;


	ast_format_set(&speextolin.src_format, AST_FORMAT_SPEEX, 0);
	ast_format_set(&speextolin.dst_format, AST_FORMAT_SLINEAR, 0);

	ast_format_set(&lintospeex.src_format, AST_FORMAT_SLINEAR, 0);
	ast_format_set(&lintospeex.dst_format, AST_FORMAT_SPEEX, 0);

	ast_format_set(&speexwbtolin16.src_format, AST_FORMAT_SPEEX16, 0);
	ast_format_set(&speexwbtolin16.dst_format, AST_FORMAT_SLINEAR16, 0);

	ast_format_set(&lin16tospeexwb.src_format, AST_FORMAT_SLINEAR16, 0);
	ast_format_set(&lin16tospeexwb.dst_format, AST_FORMAT_SPEEX16, 0);

	ast_format_set(&speexuwbtolin32.src_format, AST_FORMAT_SPEEX32, 0);
	ast_format_set(&speexuwbtolin32.dst_format, AST_FORMAT_SLINEAR32, 0);

	ast_format_set(&lin32tospeexuwb.src_format, AST_FORMAT_SLINEAR32, 0);
	ast_format_set(&lin32tospeexuwb.dst_format, AST_FORMAT_SPEEX32, 0);

	res |= ast_register_translator(&speextolin);
	res |= ast_register_translator(&lintospeex);
	res |= ast_register_translator(&speexwbtolin16);
	res |= ast_register_translator(&lin16tospeexwb);
	res |= ast_register_translator(&speexuwbtolin32);
	res |= ast_register_translator(&lin32tospeexuwb);


	return res;
}
コード例 #22
0
static int load_module(void)
{
  SKP_int32 ret = 0;;
  int res = 0;
  char format_string[100];
  char* format;
  char* pointer = format_string;
  struct ast_format format_struct;
  struct ast_format* format_def = &format_struct;
  int attr_samp_rate = 0;

  /* print the skype version */
  ast_log(LOG_NOTICE, "SILK Version : %s\n", SKP_Silk_SDK_get_version());

  /* get the encoder / decoder sizes */
  ret = SKP_Silk_SDK_Get_Encoder_Size(&encSizeBytes);
  if (ret) {
    ast_log(LOG_WARNING, "SKP_Silk_SDK_Get_Encoder_size returned %d", ret);
  }
  ret = SKP_Silk_SDK_Get_Decoder_Size(&decSizeBytes);
  if (ret) {
    ast_log(LOG_WARNING, "SKP_Silk_SDK_Get_Decoder_size returned %d", ret);
  }

  /* Finish the setup of the encoders / decoders */
  /* silk8 */
  ast_format_set(&silk8tolin.src_format, AST_FORMAT_SILK,1,
                SILK_ATTR_KEY_SAMP_RATE,
                SILK_ATTR_VAL_SAMP_8KHZ,
                AST_FORMAT_ATTR_END);
  ast_format_set(&silk8tolin.dst_format, AST_FORMAT_SLINEAR,0);

  ast_format_set(&lintosilk8.src_format, AST_FORMAT_SLINEAR,0);
  ast_format_set(&lintosilk8.dst_format, AST_FORMAT_SILK,1,
                SILK_ATTR_KEY_SAMP_RATE,
                SILK_ATTR_VAL_SAMP_8KHZ,
                AST_FORMAT_ATTR_END);
  /* silk12 */
  ast_format_set(&silk12tolin.src_format, AST_FORMAT_SILK,1,
                SILK_ATTR_KEY_SAMP_RATE,
                SILK_ATTR_VAL_SAMP_12KHZ,
                AST_FORMAT_ATTR_END);
  ast_format_set(&silk12tolin.dst_format, AST_FORMAT_SLINEAR12,0);

  ast_format_set(&lintosilk12.src_format, AST_FORMAT_SLINEAR12,0);
  ast_format_set(&lintosilk12.dst_format, AST_FORMAT_SILK,1,
                SILK_ATTR_KEY_SAMP_RATE,
                SILK_ATTR_VAL_SAMP_12KHZ,
                AST_FORMAT_ATTR_END);

  /* silk16 */
  ast_format_set(&silk16tolin.src_format, AST_FORMAT_SILK,1,
                SILK_ATTR_KEY_SAMP_RATE,
                SILK_ATTR_VAL_SAMP_16KHZ,
                AST_FORMAT_ATTR_END);
  ast_format_set(&silk16tolin.dst_format, AST_FORMAT_SLINEAR16,0);

  ast_format_set(&lintosilk16.src_format, AST_FORMAT_SLINEAR16,0);
  ast_format_set(&lintosilk16.dst_format, AST_FORMAT_SILK,1,
                SILK_ATTR_KEY_SAMP_RATE,
                SILK_ATTR_VAL_SAMP_16KHZ,
                AST_FORMAT_ATTR_END);

  /* silk24 */
  ast_format_set(&silk24tolin.src_format, AST_FORMAT_SILK,1,
                SILK_ATTR_KEY_SAMP_RATE,
                SILK_ATTR_VAL_SAMP_24KHZ,
                AST_FORMAT_ATTR_END);
  ast_format_set(&silk24tolin.dst_format, AST_FORMAT_SLINEAR24,0);

  ast_format_set(&lintosilk24.src_format, AST_FORMAT_SLINEAR24,0);
  ast_format_set(&lintosilk24.dst_format, AST_FORMAT_SILK,1,
                SILK_ATTR_KEY_SAMP_RATE,
                SILK_ATTR_VAL_SAMP_24KHZ,
                AST_FORMAT_ATTR_END);


  /* Get the names of the silk codecs */
  ast_getformatname_multiple_byid(format_string, sizeof(format_string), AST_FORMAT_SILK);
  ast_log(LOG_NOTICE, "Defined silk codecs are: %s\n", format_string);

  while ((format = strsep(&pointer, "(|)"))){
    if(strlen(format) > 0){
      if((format_def = ast_getformatbyname(format, format_def))){
        /* now pull out the format attributes */
        ret = ast_format_get_value(format_def, SILK_ATTR_KEY_SAMP_RATE, &attr_samp_rate);
        if(!ret) {
          switch (attr_samp_rate) {
            case SILK_ATTR_VAL_SAMP_8KHZ:
              res |= ast_register_translator(&silk8tolin);
              res |= ast_register_translator(&lintosilk8);
              silk8_reg = 1;
              break;
            case SILK_ATTR_VAL_SAMP_12KHZ:
              res |= ast_register_translator(&silk12tolin);
              res |= ast_register_translator(&lintosilk12);
              silk12_reg = 1;
              break;
            case SILK_ATTR_VAL_SAMP_16KHZ:
              res |= ast_register_translator(&silk16tolin);
              res |= ast_register_translator(&lintosilk16);
              silk16_reg = 1;
              break;
            case SILK_ATTR_VAL_SAMP_24KHZ:
              res |= ast_register_translator(&silk24tolin);
              res |= ast_register_translator(&lintosilk24);
              silk24_reg = 1;
              break;
          }
        }
      }
    }
  }


  /* register the encoder / decoder */
  if(res){
    return AST_MODULE_LOAD_FAILURE;
  }

  return AST_MODULE_LOAD_SUCCESS;
}
コード例 #23
0
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 = 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 = slin8_slin16_ex,
	};

	return &f;
}

static struct ast_translator slin16_to_slin8 = {
	.name = "slin16_to_slin8",
	.srcfmt = AST_FORMAT_SLINEAR16,
	.dstfmt = AST_FORMAT_SLINEAR,
	.newpvt = slin16_to_slin8_new,
	.destroy = slin16_to_slin8_destroy,
	.framein = slin16_to_slin8_framein,
	.sample = slin16_to_slin8_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",
	.srcfmt = AST_FORMAT_SLINEAR,
	.dstfmt = AST_FORMAT_SLINEAR16,
	.newpvt = slin8_to_slin16_new,
	.destroy = slin8_to_slin16_destroy,
	.framein = slin8_to_slin16_framein,
	.sample = slin8_to_slin16_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);

	return res;
}

static int load_module(void)
{
	int res = 0;

	res |= ast_register_translator(&slin16_to_slin8);
	res |= ast_register_translator(&slin8_to_slin16);

	return AST_MODULE_LOAD_SUCCESS;
}

AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "SLIN Resampling Codec");