diff options
Diffstat (limited to 'apps/app_record.c')
-rw-r--r-- | apps/app_record.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/apps/app_record.c b/apps/app_record.c index 64e635018..a192b1adc 100644 --- a/apps/app_record.c +++ b/apps/app_record.c @@ -154,7 +154,7 @@ static int record_exec(struct ast_channel *chan, const char *data) int maxduration = 0; /* max duration of recording in milliseconds */ int gottimeout = 0; /* did we timeout for maxduration exceeded? */ int terminator = '#'; - int rfmt = 0; + struct ast_format rfmt; int ioflags; int waitres; struct ast_silence_generator *silgen = NULL; @@ -165,7 +165,8 @@ static int record_exec(struct ast_channel *chan, const char *data) AST_APP_ARG(maxduration); AST_APP_ARG(options); ); - + + ast_format_clear(&rfmt); /* The next few lines of code parse out the filename and header from the input string */ if (ast_strlen_zero(data)) { /* no data implies no filename or anything is present */ ast_log(LOG_WARNING, "Record requires an argument (filename)\n"); @@ -286,8 +287,8 @@ static int record_exec(struct ast_channel *chan, const char *data) /* The end of beep code. Now the recording starts */ if (silence > 0) { - rfmt = chan->readformat; - res = ast_set_read_format(chan, AST_FORMAT_SLINEAR); + ast_format_copy(&rfmt, &chan->readformat); + res = ast_set_read_format_by_id(chan, AST_FORMAT_SLINEAR); if (res < 0) { ast_log(LOG_WARNING, "Unable to set to linear mode, giving up\n"); pbx_builtin_setvar_helper(chan, "RECORD_STATUS", "ERROR"); @@ -408,8 +409,8 @@ static int record_exec(struct ast_channel *chan, const char *data) ast_channel_stop_silence_generator(chan, silgen); out: - if ((silence > 0) && rfmt) { - res = ast_set_read_format(chan, rfmt); + if ((silence > 0) && rfmt.id) { + res = ast_set_read_format(chan, &rfmt); if (res) ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name); if (sildet) |