changeset 17193:af2051e363ea

Fix return arguments for wavread (...,"size"), bug #39639. * scripts/audio/wavread.m: Return two arguments in two output variables. * scripts/audio/wavwrite.m: Add %!tests for "size", and [N], [N1, N2] inputs to wavread.
author Rik <rik@octave.org>
date Wed, 07 Aug 2013 07:35:01 -0700
parents 755ec7bce733
children aada14bf74ed
files scripts/audio/wavread.m scripts/audio/wavwrite.m
diffstat 2 files changed, 24 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/audio/wavread.m	Wed Aug 07 09:08:55 2013 -0400
+++ b/scripts/audio/wavread.m	Wed Aug 07 07:35:01 2013 -0700
@@ -177,8 +177,8 @@
         length = (param(2)-param(1)+1) * channels;
       elseif (nparams == 4 && char (param) == "size")
         ## Size of the file is requested.
-        tmp = idivide (8 * data_size, channels * bits_per_sample);
-        y = [tmp, channels];
+        y = idivide (8 * data_size, channels * bits_per_sample);
+        samples_per_sec = channels;
         return;
       else
         error ("wavread: invalid PARAM argument");
--- a/scripts/audio/wavwrite.m	Wed Aug 07 09:08:55 2013 -0400
+++ b/scripts/audio/wavwrite.m	Wed Aug 07 07:35:01 2013 -0700
@@ -154,7 +154,7 @@
 %! fname = tmpnam ();
 
 %!test
-%! A = [-1:0.1:1; -1:0.1:1];
+%! A = [-1:0.1:1; -1:0.1:1]';
 %! wavwrite (A, fname);
 %! [B, samples_per_sec, bits_per_sample] = wavread (fname);
 %! unlink (fname);
@@ -163,7 +163,7 @@
 %! assert (bits_per_sample, 16);
 
 %!test
-%! A = [-1:0.1:1; -1:0.1:1];
+%! A = [-1:0.1:1; -1:0.1:1]';
 %! wavwrite (A, 4000, fname);
 %! [B, samples_per_sec, bits_per_sample] = wavread (fname);
 %! unlink (fname);
@@ -172,7 +172,7 @@
 %! assert (bits_per_sample, 16);
 
 %!test
-%! A = [-1:0.1:1; -1:0.1:1];
+%! A = [-1:0.1:1; -1:0.1:1]';
 %! wavwrite (A, 4000, 8, fname);
 %! [B, samples_per_sec, bits_per_sample] = wavread (fname);
 %! unlink (fname);
@@ -197,3 +197,22 @@
 %! assert (samples_per_sec, 8000);
 %! assert (bits_per_sample, 16);
 
+%!test
+%! A = [-1:0.1:1; -1:0.1:1]';
+%! wavwrite (A, fname);
+%! B = wavread (fname, 15);
+%! unlink (fname);
+%! assert (A(1:15,:) ,B, 1/2^15);
+%! wavwrite (A, fname);
+%! B = wavread (fname, [10, 20]);
+%! unlink (fname);
+%! assert (A(10:20,:) ,B, 1/2^15);
+
+%!test
+%! A = [-1:0.1:1; -1:0.1:1]';
+%! wavwrite (A, fname);
+%! [nsamp, nchan] = wavread (fname, "size");
+%! unlink (fname);
+%! assert (nsamp, 21);
+%! assert (nchan, 2);
+