#define G723_SAMPLES 240
#define G729_SAMPLES 160
-static unsigned int global_useplc = 0;
-
static struct channel_usage {
int total;
int encoders;
{
struct codec_dahdi_pvt *dahdip = pvt->pvt;
- if (!f->subclass) {
+ if (!f->subclass.codec) {
/* We're just faking a return for calculation purposes. */
dahdip->fake = 2;
pvt->samples = f->samples;
if (2 == dahdip->fake) {
dahdip->fake = 1;
pvt->f.frametype = AST_FRAME_VOICE;
- pvt->f.subclass = 0;
+ pvt->f.subclass.codec = 0;
pvt->f.samples = dahdip->required_samples;
pvt->f.data.ptr = NULL;
pvt->f.offset = 0;
pvt->f.datalen = 0;
pvt->f.mallocd = 0;
- ast_set_flag(&pvt->f, AST_FRFLAG_FROM_TRANSLATOR);
pvt->samples = 0;
- return &pvt->f;
+ return ast_frisolate(&pvt->f);
} else if (1 == dahdip->fake) {
dahdip->fake = 0;
pvt->f.datalen = res;
pvt->f.samples = dahdip->required_samples;
pvt->f.frametype = AST_FRAME_VOICE;
- pvt->f.subclass = 1 << (pvt->t->dstfmt);
+ pvt->f.subclass.codec = 1 << (pvt->t->dstfmt);
pvt->f.mallocd = 0;
pvt->f.offset = AST_FRIENDLY_OFFSET;
pvt->f.src = pvt->t->name;
pvt->f.data.ptr = pvt->outbuf.c;
- ast_set_flag(&pvt->f, AST_FRFLAG_FROM_TRANSLATOR);
pvt->samples = 0;
pvt->datalen = 0;
- return &pvt->f;
+ return ast_frisolate(&pvt->f);
}
/* Shouldn't get here... */
{
struct codec_dahdi_pvt *dahdip = pvt->pvt;
- if (!f->subclass) {
+ if (!f->subclass.codec) {
/* We're just faking a return for calculation purposes. */
dahdip->fake = 2;
pvt->samples = f->samples;
if (2 == dahdip->fake) {
dahdip->fake = 1;
pvt->f.frametype = AST_FRAME_VOICE;
- pvt->f.subclass = 0;
+ pvt->f.subclass.codec = 0;
pvt->f.samples = dahdip->required_samples;
pvt->f.data.ptr = NULL;
pvt->f.offset = 0;
pvt->f.datalen = 0;
pvt->f.mallocd = 0;
- ast_set_flag(&pvt->f, AST_FRFLAG_FROM_TRANSLATOR);
pvt->samples = 0;
- return &pvt->f;
+ return ast_frisolate(&pvt->f);
} else if (1 == dahdip->fake) {
pvt->samples = 0;
dahdip->fake = 0;
}
pvt->datalen = 0;
pvt->f.frametype = AST_FRAME_VOICE;
- pvt->f.subclass = 1 << (pvt->t->dstfmt);
+ pvt->f.subclass.codec = 1 << (pvt->t->dstfmt);
pvt->f.mallocd = 0;
pvt->f.offset = AST_FRIENDLY_OFFSET;
pvt->f.src = pvt->t->name;
pvt->f.data.ptr = pvt->outbuf.c;
pvt->f.samples = dahdip->required_samples;
- ast_set_flag(&pvt->f, AST_FRFLAG_FROM_TRANSLATOR);
pvt->samples = 0;
- return &pvt->f;
+ return ast_frisolate(&pvt->f);
}
/* Shouldn't get here... */
dahdip->fmts.srcfmt = (1 << source);
dahdip->fmts.dstfmt = (1 << dest);
- ast_log(LOG_DEBUG, "Opening transcoder channel from %d to %d.\n", source, dest);
+ ast_debug(1, "Opening transcoder channel from %d to %d.\n", source, dest);
retry:
if (ioctl(fd, DAHDI_TC_ALLOCATE, &dahdip->fmts)) {
* we'll just convert from ulaw to signed linear in
* software. */
if (AST_FORMAT_SLINEAR == dahdip->fmts.srcfmt) {
- ast_log(LOG_DEBUG, "Using soft_slin support on source\n");
+ ast_debug(1, "Using soft_slin support on source\n");
dahdip->softslin = 1;
dahdip->fmts.srcfmt = AST_FORMAT_ULAW;
} else if (AST_FORMAT_SLINEAR == dahdip->fmts.dstfmt) {
- ast_log(LOG_DEBUG, "Using soft_slin support on destination\n");
+ ast_debug(1, "Using soft_slin support on destination\n");
dahdip->softslin = 1;
dahdip->fmts.dstfmt = AST_FORMAT_ULAW;
}
if (is_encoder(zt)) {
zt->t.framein = dahdi_encoder_framein;
zt->t.frameout = dahdi_encoder_frameout;
-#if 0
- zt->t.buffer_samples = 0;
-#endif
} else {
zt->t.framein = dahdi_decoder_framein;
zt->t.frameout = dahdi_decoder_frameout;
-#if 0
- if (AST_FORMAT_G723_1 == zt->t.srcfmt) {
- zt->t.plc_samples = G723_SAMPLES;
- } else {
- zt->t.plc_samples = G729_SAMPLES;
- }
- zt->t.buffer_samples = zt->t.plc_samples * 8;
-#endif
}
zt->t.destroy = dahdi_destroy;
zt->t.buffer_samples = 0;
zt->t.newpvt = dahdi_new;
zt->t.sample = fakesrc_sample;
-#if 0
- zt->t.useplc = global_useplc;
-#endif
- zt->t.useplc = 0;
zt->t.native_plc = 0;
zt->t.desc_size = sizeof(struct codec_dahdi_pvt);
AST_LIST_UNLOCK(&translators);
}
-static int parse_config(int reload)
-{
- struct ast_variable *var;
- struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
- struct ast_config *cfg = ast_config_load("codecs.conf", config_flags);
-
- if (cfg == CONFIG_STATUS_FILEMISSING || cfg == CONFIG_STATUS_FILEUNCHANGED || cfg == CONFIG_STATUS_FILEINVALID)
- return 0;
-
- for (var = ast_variable_browse(cfg, "plc"); var; var = var->next) {
- if (!strcasecmp(var->name, "genericplc")) {
- global_useplc = ast_true(var->value);
- ast_verb(3, "codec_dahdi: %susing generic PLC\n",
- global_useplc ? "" : "not ");
- }
- }
-
- ast_config_destroy(cfg);
- return 0;
-}
-
static void build_translators(struct format_map *map, unsigned int dstfmts, unsigned int srcfmts)
{
unsigned int src, dst;
{
struct translator *cur;
- if (parse_config(1))
- return AST_MODULE_LOAD_DECLINE;
-
- AST_LIST_LOCK(&translators);
- AST_LIST_TRAVERSE(&translators, cur, entry)
- cur->t.useplc = global_useplc;
- AST_LIST_UNLOCK(&translators);
-
return AST_MODULE_LOAD_SUCCESS;
}
static int load_module(void)
{
ast_ulaw_init();
- if (parse_config(0))
- return AST_MODULE_LOAD_DECLINE;
find_transcoders();
ast_cli_register_multiple(cli, ARRAY_LEN(cli));
return AST_MODULE_LOAD_SUCCESS;