diff options
Diffstat (limited to 'funcs')
-rw-r--r-- | funcs/func_channel.c | 37 | ||||
-rw-r--r-- | funcs/func_frame_trace.c | 4 | ||||
-rw-r--r-- | funcs/func_pitchshift.c | 6 |
3 files changed, 25 insertions, 22 deletions
diff --git a/funcs/func_channel.c b/funcs/func_channel.c index c0f85d372..548d0590f 100644 --- a/funcs/func_channel.c +++ b/funcs/func_channel.c @@ -265,27 +265,30 @@ static int func_channel_read(struct ast_channel *chan, const char *function, char *data, char *buf, size_t len) { int ret = 0; + char tmp[512]; + struct ast_format_cap *tmpcap; - if (!strcasecmp(data, "audionativeformat")) - /* use the _multiple version when chan->nativeformats holds multiple formats */ - /* ast_getformatname_multiple(buf, len, chan->nativeformats & AST_FORMAT_AUDIO_MASK); */ - ast_copy_string(buf, ast_getformatname(chan->nativeformats & AST_FORMAT_AUDIO_MASK), len); - else if (!strcasecmp(data, "videonativeformat")) - /* use the _multiple version when chan->nativeformats holds multiple formats */ - /* ast_getformatname_multiple(buf, len, chan->nativeformats & AST_FORMAT_VIDEO_MASK); */ - ast_copy_string(buf, ast_getformatname(chan->nativeformats & AST_FORMAT_VIDEO_MASK), len); - else if (!strcasecmp(data, "audioreadformat")) - ast_copy_string(buf, ast_getformatname(chan->readformat), len); - else if (!strcasecmp(data, "audiowriteformat")) - ast_copy_string(buf, ast_getformatname(chan->writeformat), len); + if (!strcasecmp(data, "audionativeformat")) { + if ((tmpcap = ast_format_cap_get_type(chan->nativeformats, AST_FORMAT_TYPE_AUDIO))) { + ast_copy_string(buf, ast_getformatname_multiple(tmp, sizeof(tmp), tmpcap), len); + tmpcap = ast_format_cap_destroy(tmpcap); + } + } else if (!strcasecmp(data, "videonativeformat")) { + if ((tmpcap = ast_format_cap_get_type(chan->nativeformats, AST_FORMAT_TYPE_VIDEO))) { + ast_copy_string(buf, ast_getformatname_multiple(tmp, sizeof(tmp), tmpcap), len); + tmpcap = ast_format_cap_destroy(tmpcap); + } + } else if (!strcasecmp(data, "audioreadformat")) { + ast_copy_string(buf, ast_getformatname(&chan->readformat), len); + } else if (!strcasecmp(data, "audiowriteformat")) { + ast_copy_string(buf, ast_getformatname(&chan->writeformat), len); #ifdef CHANNEL_TRACE - else if (!strcasecmp(data, "trace")) { + } else if (!strcasecmp(data, "trace")) { ast_channel_lock(chan); ast_copy_string(buf, ast_channel_trace_is_enabled(chan) ? "1" : "0", len); ast_channel_unlock(chan); - } #endif - else if (!strcasecmp(data, "tonezone") && chan->zone) + } else if (!strcasecmp(data, "tonezone") && chan->zone) locked_copy_string(chan, buf, chan->zone->country, len); else if (!strcasecmp(data, "language")) locked_copy_string(chan, buf, chan->language, len); @@ -349,9 +352,9 @@ static int func_channel_read(struct ast_channel *chan, const char *function, ast_channel_unlock(chan); } else if (!strcasecmp(data, "uniqueid")) { locked_copy_string(chan, buf, chan->uniqueid, len); - } else if (!strcasecmp(data, "transfercapability")) + } else if (!strcasecmp(data, "transfercapability")) { locked_copy_string(chan, buf, transfercapability_table[chan->transfercapability & 0x1f], len); - else if (!strcasecmp(data, "callgroup")) { + } else if (!strcasecmp(data, "callgroup")) { char groupbuf[256]; locked_copy_string(chan, buf, ast_print_group(groupbuf, sizeof(groupbuf), chan->callgroup), len); } else if (!strcasecmp(data, "amaflags")) { diff --git a/funcs/func_frame_trace.c b/funcs/func_frame_trace.c index c4c8d3978..5863b27e8 100644 --- a/funcs/func_frame_trace.c +++ b/funcs/func_frame_trace.c @@ -209,14 +209,14 @@ static void print_frame(struct ast_frame *frame) break; case AST_FRAME_VOICE: ast_verbose("FrameType: VOICE\n"); - ast_verbose("Codec: %s\n", ast_getformatname(frame->subclass.codec)); + ast_verbose("Codec: %s\n", ast_getformatname(&frame->subclass.format)); ast_verbose("MS: %ld\n", frame->len); ast_verbose("Samples: %d\n", frame->samples); ast_verbose("Bytes: %d\n", frame->datalen); break; case AST_FRAME_VIDEO: ast_verbose("FrameType: VIDEO\n"); - ast_verbose("Codec: %s\n", ast_getformatname(frame->subclass.codec)); + ast_verbose("Codec: %s\n", ast_getformatname(&frame->subclass.format)); ast_verbose("MS: %ld\n", frame->len); ast_verbose("Samples: %d\n", frame->samples); ast_verbose("Bytes: %d\n", frame->datalen); diff --git a/funcs/func_pitchshift.c b/funcs/func_pitchshift.c index 7b7c9a2ca..36fa2f6c4 100644 --- a/funcs/func_pitchshift.c +++ b/funcs/func_pitchshift.c @@ -170,8 +170,8 @@ static int pitchshift_cb(struct ast_audiohook *audiohook, struct ast_channel *ch } if ((audiohook->status == AST_AUDIOHOOK_STATUS_DONE) || (f->frametype != AST_FRAME_VOICE) || - ((f->subclass.codec != AST_FORMAT_SLINEAR) && - (f->subclass.codec != AST_FORMAT_SLINEAR16))) { + ((f->subclass.format.id != AST_FORMAT_SLINEAR) && + (f->subclass.format.id != AST_FORMAT_SLINEAR16))) { return -1; } @@ -481,7 +481,7 @@ static int pitch_shift(struct ast_frame *f, float amount, struct fft_data *fft) return 0; } for (samples = 0; samples < f->samples; samples += 32) { - smb_pitch_shift(amount, 32, MAX_FRAME_LENGTH, 32, ast_format_rate(f->subclass.codec), fun+samples, fun+samples, fft); + smb_pitch_shift(amount, 32, MAX_FRAME_LENGTH, 32, ast_format_rate(&f->subclass.format), fun+samples, fun+samples, fft); } return 0; |