summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorMark Michelson <mmichelson@digium.com>2013-10-03 14:58:16 +0000
committerMark Michelson <mmichelson@digium.com>2013-10-03 14:58:16 +0000
commitee21eee7e067573ad83bd0df492036094b4dbaca (patch)
tree024e25a92079bc7e5348bd55cc29eff2f3c38dec /apps
parentc977f73e136eca1f2aaccd0ea0fe45c350906374 (diff)
Cache string values of formats on ast_format_cap() to save processing.
Channel snapshots have string representations of the channel's native formats. Prior to this change, the format strings were re-created on ever channel snapshot creation. Since channel native formats rarely change, this was very wasteful. Now, string representations of formats may optionally be stored on the ast_format_cap for cases where string representations may be requested frequently. When formats are altered, the string cache is marked as invalid. When strings are requested, the cache validity is checked. If the cache is valid, then the cached strings are copied. If the cache is invalid, then the string cache is rebuilt and copied, and the cache is marked as being valid again. Review: https://reviewboard.asterisk.org/r/2879 ........ Merged revisions 400356 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@400363 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps')
-rw-r--r--apps/app_confbridge.c6
-rw-r--r--apps/app_meetme.c4
-rw-r--r--apps/app_originate.c2
3 files changed, 6 insertions, 6 deletions
diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c
index d9db7ab5b..47cfa0b8b 100644
--- a/apps/app_confbridge.c
+++ b/apps/app_confbridge.c
@@ -662,7 +662,7 @@ static int conf_start_record(struct confbridge_conference *conference)
return -1;
}
- cap = ast_format_cap_alloc_nolock();
+ cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK);
if (!cap) {
return -1;
}
@@ -1327,7 +1327,7 @@ static int alloc_playback_chan(struct confbridge_conference *conference)
struct ast_format_cap *cap;
struct ast_format format;
- cap = ast_format_cap_alloc_nolock();
+ cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK);
if (!cap) {
return -1;
}
@@ -3094,7 +3094,7 @@ static void unregister_channel_tech(struct ast_channel_tech *tech)
*/
static int register_channel_tech(struct ast_channel_tech *tech)
{
- tech->capabilities = ast_format_cap_alloc();
+ tech->capabilities = ast_format_cap_alloc(0);
if (!tech->capabilities) {
return -1;
}
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index cd6a4f72c..ffd55e70d 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -1611,7 +1611,7 @@ static struct ast_conference *build_conf(const char *confno, const char *pin,
struct ast_conference *cnf;
struct dahdi_confinfo dahdic = { 0, };
int confno_int = 0;
- struct ast_format_cap *cap_slin = ast_format_cap_alloc_nolock();
+ struct ast_format_cap *cap_slin = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK);
struct ast_format tmp_fmt;
AST_LIST_LOCK(&confs);
@@ -3216,7 +3216,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, struc
int setusercount = 0;
int confsilence = 0, totalsilence = 0;
char *mailbox, *context;
- struct ast_format_cap *cap_slin = ast_format_cap_alloc_nolock();
+ struct ast_format_cap *cap_slin = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK);
struct ast_format tmpfmt;
if (!cap_slin) {
diff --git a/apps/app_originate.c b/apps/app_originate.c
index 8eb8ba329..f924921d4 100644
--- a/apps/app_originate.c
+++ b/apps/app_originate.c
@@ -113,7 +113,7 @@ static int originate_exec(struct ast_channel *chan, const char *data)
unsigned int timeout = 30;
static const char default_exten[] = "s";
struct ast_format tmpfmt;
- struct ast_format_cap *cap_slin = ast_format_cap_alloc_nolock();
+ struct ast_format_cap *cap_slin = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_NOLOCK);
ast_autoservice_start(chan);
if (!cap_slin) {