OSDN Git Service

処理が早くなりました
authoryamat0jp <yamat0jp@yahoo.co.jp>
Sat, 19 May 2018 21:49:43 +0000 (06:49 +0900)
committeryamat0jp <yamat0jp@yahoo.co.jp>
Sat, 19 May 2018 21:49:43 +0000 (06:49 +0900)
無駄なループがございました

effect.pas
wav.pas

index 3977703..315fd2d 100644 (file)
@@ -110,22 +110,22 @@ begin
     offset0 := sp.posOfData;
     offset1 := sp.posOfData;
     rate := 0.66;
-    k := sp.sizeOfData div sp.channels;
+    k := (sp.sizeOfData - sp.posOfData) div sp.channels;
+    for b := 0 to pmax - pmin - 1 do
+    begin
+      r[b] := 0.0;
+      for a := sp.posOfData to sp.posOfData + temp_size do
+        r[b] := r[b] + pCpy[a] * pCpy[a + b];
+      if r[b] > ma then
+      begin
+        ma := r[b];
+        p := b;
+      end;
+    end;
     while offset1 + 2 * pmax < k do
     begin
       ma := 0.0;
       p := pmin;
-      for b := 0 to pmax - pmin - 1 do
-      begin
-        r[b] := 0.0;
-        for a := sp.posOfData to sp.posOfData + temp_size do
-          r[b] := r[b] + pCpy[a] * pCpy[a + b];
-        if r[b] > ma then
-        begin
-          ma := r[b];
-          p := b;
-        end;
-      end;
       for i := 0 to p do
       begin
         pMem[offset1 + i] := pCpy[offset0 + i];
@@ -180,7 +180,7 @@ begin
   if sp.channels = 1 then
   begin
     Writeln('\83X\83e\83\8c\83I\83t\83@\83C\83\8b\82É\82µ\82Ä\82­\82¾\82³\82¢');
-    result := -1;
+    // result := -1;
   end;
   if sp.bitsPerSample = 8 then
     result := effect8BitWav(sp)
diff --git a/wav.pas b/wav.pas
index c765bad..bd0d562 100644 (file)
--- a/wav.pas
+++ b/wav.pas
@@ -27,7 +27,7 @@ begin
       begin
         Writeln('\83X\83e\83\8c\83I\83t\83@\83C\83\8b\82ð\91Î\8fÛ\82Æ\82µ\82Ä\82¢\82Ü\82·');
         Writeln('\83`\83\83\83\93\83l\83\8b\90\94\82Í', channels);
-        result := -1;
+//        result := -1;
       end;
       if formatTag <> 1 then
       begin