diff options
author | martinp <martinp@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-02-03 16:57:00 +0000 |
---|---|---|
committer | martinp <martinp@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-02-03 16:57:00 +0000 |
commit | f38bc8131c9eda8d0b0eabaafbaa53f4247989c4 (patch) | |
tree | 737412e9d633692be843c8429cc62df22fc5cfd7 /formats/format_wav_gsm.c | |
parent | 30674920f6b94533e355a87eaf823cf14bcba9ef (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-x | formats/format_wav_gsm.c | 15 |
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); |