[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