aboutsummaryrefslogtreecommitdiffstats
path: root/formats/format_wav.c
diff options
context:
space:
mode:
authormartinp <martinp@f38db490-d61c-443f-a65b-d21fe96a405b>2003-08-28 20:02:10 +0000
committermartinp <martinp@f38db490-d61c-443f-a65b-d21fe96a405b>2003-08-28 20:02:10 +0000
commit0f7540708770a2ddd4c5afcb057e9ab89e658d3b (patch)
tree457a4a3e8dec7fcff81b0a750356704758734e0c /formats/format_wav.c
parenta5c52defec739c228fbc6e9c9bbfd79bbf57c04e (diff)
Fix synchronization of recorded files when using Monitor application
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1446 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'formats/format_wav.c')
-rwxr-xr-xformats/format_wav.c14
1 files changed, 8 insertions, 6 deletions
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);
}