# HG changeset patch # User Rik # Date 1375886101 25200 # Node ID af2051e363ea2a65ff6a7dbec8e9c59c7a12cd99 # Parent 755ec7bce733e094a325fa4d8eac301d4bb348da 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. diff --git a/scripts/audio/wavread.m b/scripts/audio/wavread.m --- a/scripts/audio/wavread.m +++ b/scripts/audio/wavread.m @@ -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"); diff --git a/scripts/audio/wavwrite.m b/scripts/audio/wavwrite.m --- a/scripts/audio/wavwrite.m +++ b/scripts/audio/wavwrite.m @@ -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); +