add StaticSound.FromQOA
							parent
							
								
									6cd44c6f24
								
							
						
					
					
						commit
						8829b7bcc3
					
				| 
						 | 
				
			
			@ -197,6 +197,39 @@ namespace MoonWorks.Audio
 | 
			
		|||
			return sound;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static unsafe StaticSound FromQOA(AudioDevice device, string path)
 | 
			
		||||
		{
 | 
			
		||||
			var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
 | 
			
		||||
			var fileDataPtr = NativeMemory.Alloc((nuint) fileStream.Length);
 | 
			
		||||
			var fileDataSpan = new Span<byte>(fileDataPtr, (int) fileStream.Length);
 | 
			
		||||
			fileStream.ReadExactly(fileDataSpan);
 | 
			
		||||
			fileStream.Close();
 | 
			
		||||
 | 
			
		||||
			var qoaHandle = FAudio.qoa_open((char*) fileDataPtr, (uint) fileDataSpan.Length);
 | 
			
		||||
			if (qoaHandle == 0)
 | 
			
		||||
			{
 | 
			
		||||
				NativeMemory.Free(fileDataPtr);
 | 
			
		||||
				Logger.LogError("Error opening QOA file!");
 | 
			
		||||
				throw new AudioLoadException("Error opening QOA file!");
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			FAudio.qoa_attributes(qoaHandle, out var channels, out var samplerate, out var samples_per_channel_per_frame, out var total_samples_per_channel);
 | 
			
		||||
 | 
			
		||||
			var buffer = FAudio.qoa_load(qoaHandle);
 | 
			
		||||
 | 
			
		||||
			return new StaticSound(
 | 
			
		||||
				device,
 | 
			
		||||
				1,
 | 
			
		||||
				16,
 | 
			
		||||
				(ushort) (channels * 2),
 | 
			
		||||
				(ushort) channels,
 | 
			
		||||
				samplerate,
 | 
			
		||||
				(nint) buffer,
 | 
			
		||||
				total_samples_per_channel * channels * sizeof(short),
 | 
			
		||||
				true
 | 
			
		||||
			);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public StaticSound(
 | 
			
		||||
			AudioDevice device,
 | 
			
		||||
			ushort formatTag,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue