فهرست منبع

Merge pull request #15377 from mrcdk/wav_correct_loop

Fixed loop mode values when importing a wav file.
Rémi Verschelde 7 سال پیش
والد
کامیت
0edca99361
1فایلهای تغییر یافته به همراه9 افزوده شده و 3 حذف شده
  1. 9 3
      editor/import/resource_importer_wav.cpp

+ 9 - 3
editor/import/resource_importer_wav.cpp

@@ -268,9 +268,15 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
 			for (int i = 0; i < 10; i++)
 				file->get_32(); // i wish to know why should i do this... no doc!
 
-			loop = file->get_32() ? AudioStreamSample::LOOP_PING_PONG : AudioStreamSample::LOOP_FORWARD;
-			loop_begin = file->get_32();
-			loop_end = file->get_32();
+			// only read 0x00 (loop forward) and 0x01 (loop ping-pong) and skip anything else because
+			// it's not supported (loop backward), reserved for future uses or sampler specific
+			// from https://sites.google.com/site/musicgapi/technical-documents/wav-file-format#smpl (loop type values table)
+			int loop_type = file->get_32();
+			if (loop_type == 0x00 || loop_type == 0x01) {
+				loop = loop_type ? AudioStreamSample::LOOP_PING_PONG : AudioStreamSample::LOOP_FORWARD;
+				loop_begin = file->get_32();
+				loop_end = file->get_32();
+			}
 		}
 		file->seek(file_pos + chunksize);
 	}