From f14004abfd974a328736442971caee22053cfeec Mon Sep 17 00:00:00 2001 From: Martin Pycko Date: Thu, 28 Aug 2003 20:02:10 +0000 Subject: Fix synchronization of recorded files when using Monitor application git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1446 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- formats/format_g729.c | 12 +++++++----- formats/format_gsm.c | 10 ++++++---- formats/format_mp3.c | 3 ++- formats/format_pcm.c | 12 +++++++----- formats/format_pcm_alaw.c | 12 +++++++----- formats/format_wav.c | 14 ++++++++------ formats/format_wav_gsm.c | 10 ++++++---- 7 files changed, 43 insertions(+), 30 deletions(-) (limited to 'formats') diff --git a/formats/format_g729.c b/formats/format_g729.c index b35ff966f..23a3c5a6d 100755 --- a/formats/format_g729.c +++ b/formats/format_g729.c @@ -174,14 +174,16 @@ static int g729_seek(struct ast_filestream *fs, long sample_offset, int whence) max = lseek(fs->fd, 0, SEEK_END); bytes = 20 * (sample_offset / 160); - if(whence == SEEK_SET) + if (whence == SEEK_SET) offset = bytes; - if(whence == SEEK_CUR) + else if (whence == SEEK_CUR || whence == SEEK_FORCECUR) offset = cur + bytes; - if(whence == SEEK_END) + else if (whence == SEEK_END) offset = max - bytes; - offset = (offset > max)?max:offset; - offset = (offset < min)?min:offset; + if (whence != SEEK_FORCECUR) { + offset = (offset > max)?max:offset; + offset = (offset < min)?min:offset; + } if (lseek(fs->fd, offset, SEEK_SET) < 0) return -1; return 0; diff --git a/formats/format_gsm.c b/formats/format_gsm.c index 078d79d33..ad39c0a0f 100755 --- a/formats/format_gsm.c +++ b/formats/format_gsm.c @@ -185,12 +185,14 @@ static int gsm_seek(struct ast_filestream *fs, long sample_offset, int whence) distance = (sample_offset/160) * 33; if(whence == SEEK_SET) offset = distance; - if(whence == SEEK_CUR) + else if(whence == SEEK_CUR || whence == SEEK_FORCECUR) offset = distance + cur; - if(whence == SEEK_END) + else if(whence == SEEK_END) offset = max - distance; - offset = (offset > max)?max:offset; - offset = (offset < min)?min:offset; + if (whence != SEEK_FORCECUR) { + offset = (offset > max)?max:offset; + offset = (offset < min)?min:offset; + } return lseek(fs->fd, offset, SEEK_SET); } diff --git a/formats/format_mp3.c b/formats/format_mp3.c index bff51d686..832110e67 100755 --- a/formats/format_mp3.c +++ b/formats/format_mp3.c @@ -41,8 +41,9 @@ struct ast_filestream { struct timeval last; }; - +#if 0 static struct ast_filestream *glist = NULL; +#endif static ast_mutex_t mp3_lock = AST_MUTEX_INITIALIZER; static int glistcnt = 0; diff --git a/formats/format_pcm.c b/formats/format_pcm.c index ebc9bf87a..038de171d 100755 --- a/formats/format_pcm.c +++ b/formats/format_pcm.c @@ -163,14 +163,16 @@ static int pcm_seek(struct ast_filestream *fs, long sample_offset, int whence) min = 0; cur = lseek(fs->fd, 0, SEEK_CUR); max = lseek(fs->fd, 0, SEEK_END); - if(whence == SEEK_SET) + if (whence == SEEK_SET) offset = sample_offset; - if(whence == SEEK_CUR) + else if (whence == SEEK_CUR || whence == SEEK_FORCECUR) offset = sample_offset + cur; - if(whence == SEEK_END) + else if (whence == SEEK_END) offset = max - sample_offset; - offset = (offset > max)?max:offset; - offset = (offset < min)?min:offset; + if (whence != SEEK_FORCECUR) { + offset = (offset > max)?max:offset; + offset = (offset < min)?min:offset; + } return lseek(fs->fd, offset, SEEK_SET); } diff --git a/formats/format_pcm_alaw.c b/formats/format_pcm_alaw.c index 8e96b41af..54d79bb29 100755 --- a/formats/format_pcm_alaw.c +++ b/formats/format_pcm_alaw.c @@ -242,14 +242,16 @@ static int pcm_seek(struct ast_filestream *fs, long sample_offset, int whence) min = 0; cur = lseek(fs->fd, 0, SEEK_CUR); max = lseek(fs->fd, 0, SEEK_END); - if(whence == SEEK_SET) + if (whence == SEEK_SET) offset = sample_offset; - if(whence == SEEK_CUR) + else if (whence == SEEK_CUR || whence == SEEK_FORCECUR) offset = sample_offset + cur; - if(whence == SEEK_END) + else if (whence == SEEK_END) offset = max - sample_offset; - offset = (offset > max)?max:offset; - offset = (offset < min)?min:offset; + if (whence != SEEK_FORCECUR) { + offset = (offset > max)?max:offset; + offset = (offset < min)?min:offset; + } return lseek(fs->fd, offset, SEEK_SET); } diff --git a/formats/format_wav.c b/formats/format_wav.c index 3771df354..2a549b710 100755 --- a/formats/format_wav.c +++ b/formats/format_wav.c @@ -499,14 +499,16 @@ static int wav_seek(struct ast_filestream *fs, long sample_offset, int whence) min = 44; /* wav header is 44 bytes */ cur = lseek(fs->fd, 0, SEEK_CUR); max = lseek(fs->fd, 0, SEEK_END); - if(whence == SEEK_SET) + if (whence == SEEK_SET) offset = samples + min; - if(whence == SEEK_CUR) + else if (whence == SEEK_CUR || whence == SEEK_FORCECUR) offset = samples + cur; - if(whence == SEEK_END) - offset = max - samples; - offset = (offset > max)?max:offset; - offset = (offset < min)?min:offset; + else if (whence == SEEK_END) + offset = max - samples; + if (whence != SEEK_FORCECUR) { + offset = (offset > max)?max:offset; + offset = (offset < min)?min:offset; + } return lseek(fs->fd,offset,SEEK_SET); } diff --git a/formats/format_wav_gsm.c b/formats/format_wav_gsm.c index fbb97d6ab..55a607d2f 100755 --- a/formats/format_wav_gsm.c +++ b/formats/format_wav_gsm.c @@ -478,12 +478,14 @@ static int wav_seek(struct ast_filestream *fs, long sample_offset, int whence) distance = (sample_offset/320) * 65; if(whence == SEEK_SET) offset = distance + min; - if(whence == SEEK_CUR) + else if(whence == SEEK_CUR || whence == SEEK_FORCECUR) offset = distance + cur; - if(whence == SEEK_END) + else if(whence == SEEK_END) offset = max - distance; - offset = (offset < min)?min:offset; - offset = (offset > max)?max:offset; + if (whence != SEEK_FORCECUR) { + offset = (offset < min)?min:offset; + offset = (offset > max)?max:offset; + } fs->secondhalf = 0; return lseek(fs->fd, offset, SEEK_SET); } -- cgit v1.2.3