]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 179469 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Mon, 2 Mar 2009 23:12:15 +0000 (23:12 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Mon, 2 Mar 2009 23:12:15 +0000 (23:12 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

................
  r179469 | tilghman | 2009-03-02 17:10:18 -0600 (Mon, 02 Mar 2009) | 17 lines

  Merged revisions 179468 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.4

  ........
    r179468 | tilghman | 2009-03-02 17:09:01 -0600 (Mon, 02 Mar 2009) | 10 lines

    When ending a recording with silence detection, remember to reduce the duration.
    The end of the recording is correspondingly trimmed, but the duration was not
    trimmed by the number of seconds trimmed, so the saved duration was necessarily
    longer than the actual soundfile duration.
    (closes issue #14406)
     Reported by: sasargen
     Patches:
           20090226__bug14406.diff.txt uploaded by tilghman (license 14)
     Tested by: sasargen
  ........
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@179471 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/app.c

index 2384a7d336e0595dbf6056435d8f64a9fc2e063f..a810388048f9d3207399806da22c73abf94dad08 100644 (file)
@@ -830,8 +830,16 @@ static int __ast_play_and_record(struct ast_channel *chan, const char *playfile,
                         * off the recording.  However, if we ended with '#', we don't want
                         * to trim ANY part of the recording.
                         */
-                       if (res > 0 && totalsilence)
+                       if (res > 0 && totalsilence) {
                                ast_stream_rewind(others[x], totalsilence - 200);
+                               /* Reduce duration by a corresponding amount */
+                               if (x == 0 && *duration) {
+                                       *duration -= (totalsilence - 200) / 1000;
+                                       if (*duration < 0) {
+                                               *duration = 0;
+                                       }
+                               }
+                       }
                        ast_truncstream(others[x]);
                        ast_closestream(others[x]);
                }