aboutsummaryrefslogtreecommitdiffstats
path: root/formats/format_wav_gsm.c
diff options
context:
space:
mode:
authormartinp <martinp@f38db490-d61c-443f-a65b-d21fe96a405b>2004-02-03 16:57:00 +0000
committermartinp <martinp@f38db490-d61c-443f-a65b-d21fe96a405b>2004-02-03 16:57:00 +0000
commitf38bc8131c9eda8d0b0eabaafbaa53f4247989c4 (patch)
tree737412e9d633692be843c8429cc62df22fc5cfd7 /formats/format_wav_gsm.c
parent30674920f6b94533e355a87eaf823cf14bcba9ef (diff)
Add recording agent's calls patch. Basically the call starts recording when the agent picks up and the file is stamped with the agent's id and the timestamp. Also optionally a URL link to that file may be inserted in the userfield of the CDR record. By default the recorded file will be mixed if soxmix is available.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2121 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'formats/format_wav_gsm.c')
-rwxr-xr-xformats/format_wav_gsm.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/formats/format_wav_gsm.c b/formats/format_wav_gsm.c
index 009c576bb..5b502ff32 100755
--- a/formats/format_wav_gsm.c
+++ b/formats/format_wav_gsm.c
@@ -37,6 +37,15 @@
/* Portions of the conversion code are by guido@sienanet.it */
+/* begin binary data: */
+char msgsm_silence[] = /* 65 */
+{0x48,0x17,0xD6,0x84,0x02,0x80,0x24,0x49,0x92,0x24,0x89,0x02,0x80,0x24,0x49
+,0x92,0x24,0x89,0x02,0x80,0x24,0x49,0x92,0x24,0x89,0x02,0x80,0x24,0x49,0x92
+,0x24,0x09,0x82,0x74,0x61,0x4D,0x28,0x00,0x48,0x92,0x24,0x49,0x92,0x28,0x00
+,0x48,0x92,0x24,0x49,0x92,0x28,0x00,0x48,0x92,0x24,0x49,0x92,0x28,0x00,0x48
+,0x92,0x24,0x49,0x92,0x00};
+/* end binary data. size = 65 bytes */
+
struct ast_filestream {
void *reserved[AST_RESERVED_POINTERS];
/* Believe it or not, we must decode/recode to account for the
@@ -487,6 +496,12 @@ static int wav_seek(struct ast_filestream *fs, long sample_offset, int whence)
if (whence != SEEK_FORCECUR) {
offset = (offset < min)?min:offset;
offset = (offset > max)?max:offset;
+ } else if (offset > max) {
+ int i;
+ lseek(fs->fd, 0, SEEK_END);
+ for (i=0; i< (offset - max) / 65; i++) {
+ write(fs->fd, msgsm_silence, 65);
+ }
}
fs->secondhalf = 0;
return lseek(fs->fd, offset, SEEK_SET);