[asterisk-commits] tilghman: trunk r112564 - in /trunk: formats/ include/asterisk/ main/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Apr 3 02:49:07 CDT 2008
Author: tilghman
Date: Thu Apr 3 02:49:05 2008
New Revision: 112564
URL: http://svn.digium.com/view/asterisk?view=rev&rev=112564
Log:
Use a 32k file buffer on recordings, which increases the efficiency of file recording.
(closes issue #11962)
Reported by: garlew
Patches:
recording.patch uploaded by garlew (license 376)
bug-11962.diff uploaded by snuffy (license 35)
Modified:
trunk/formats/format_wav.c
trunk/include/asterisk/mod_format.h
trunk/main/file.c
Modified: trunk/formats/format_wav.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_wav.c?view=diff&rev=112564&r1=112563&r2=112564
==============================================================================
--- trunk/formats/format_wav.c (original)
+++ trunk/formats/format_wav.c Thu Apr 3 02:49:05 2008
@@ -328,6 +328,11 @@
{
char zero = 0;
struct wav_desc *fs = (struct wav_desc *)s->_private;
+
+ if (s->filename) {
+ update_header(s->f);
+ }
+
/* Pad to even length */
if (fs->bytes & 0x1)
fwrite(&zero, 1, 1, s->f);
@@ -416,7 +421,6 @@
}
s->bytes += f->datalen;
- update_header(fs->f);
return 0;
Modified: trunk/include/asterisk/mod_format.h
URL: http://svn.digium.com/view/asterisk/trunk/include/asterisk/mod_format.h?view=diff&rev=112564&r1=112563&r2=112564
==============================================================================
--- trunk/include/asterisk/mod_format.h (original)
+++ trunk/include/asterisk/mod_format.h Thu Apr 3 02:49:05 2008
@@ -117,6 +117,7 @@
char *buf; /*!< buffer pointed to by ast_frame; */
void *_private; /*!< pointer to private buffer */
const char *orig_chan_name;
+ char *write_buffer;
};
/*!
Modified: trunk/main/file.c
URL: http://svn.digium.com/view/asterisk/trunk/main/file.c?view=diff&rev=112564&r1=112563&r2=112564
==============================================================================
--- trunk/main/file.c (original)
+++ trunk/main/file.c Thu Apr 3 02:49:05 2008
@@ -817,17 +817,22 @@
ast_safe_system(cmd);
}
+ if (f->fmt->close) {
+ f->fmt->close(f);
+ }
if (f->filename)
ast_free(f->filename);
if (f->realfilename)
ast_free(f->realfilename);
- if (f->fmt->close)
- f->fmt->close(f);
fclose(f->f);
if (f->vfs)
ast_closestream(f->vfs);
if (f->orig_chan_name)
free((void *) f->orig_chan_name);
+ if (f->write_buffer) {
+ ast_free(f->write_buffer);
+ }
+
ast_module_unref(f->fmt->module);
ast_free(f);
return 0;
@@ -1051,6 +1056,11 @@
}
fs->vfs = NULL;
/* If truncated, we'll be at the beginning; if not truncated, then append */
+
+ if ((fs->write_buffer = ast_malloc(32768))){
+ setvbuf(fs->f, fs->write_buffer, _IOFBF, 32768);
+ }
+
f->seek(fs, 0, SEEK_END);
} else if (errno != EEXIST) {
ast_log(LOG_WARNING, "Unable to open file %s: %s\n", fn, strerror(errno));
More information about the asterisk-commits
mailing list