buffer size tweaks
							parent
							
								
									c5b9ff1677
								
							
						
					
					
						commit
						3e0fcdedb1
					
				|  | @ -14,7 +14,7 @@ namespace MoonWorks.Audio | |||
| 		private readonly IntPtr[] buffers; | ||||
| 		private int nextBufferIndex = 0; | ||||
| 		private uint queuedBufferCount = 0; | ||||
| 		public abstract int BUFFER_SIZE { get; } | ||||
| 		protected abstract int BUFFER_SIZE { get; } | ||||
| 
 | ||||
| 		public unsafe StreamingSound( | ||||
| 			AudioDevice device, | ||||
|  | @ -147,8 +147,8 @@ namespace MoonWorks.Audio | |||
| 
 | ||||
| 		protected unsafe abstract void FillBuffer( | ||||
| 			void* buffer, | ||||
| 			int bufferLength, /* in bytes */ | ||||
| 			out int filledLength, /* in bytes */ | ||||
| 			int bufferLengthInBytes, /* in bytes */ | ||||
| 			out int filledLengthInBytes, /* in bytes */ | ||||
| 			out bool reachedEnd | ||||
| 		); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,20 +1,16 @@ | |||
| using System; | ||||
| using System.IO; | ||||
| using System.Runtime.CompilerServices; | ||||
| using System.Runtime.InteropServices; | ||||
| 
 | ||||
| namespace MoonWorks.Audio | ||||
| { | ||||
| 	public class StreamingSoundOgg : StreamingSoundSeekable | ||||
| 	{ | ||||
| 		// FIXME: what should this value be? | ||||
| 		public override int BUFFER_SIZE => 1024 * 128; | ||||
| 
 | ||||
| 		private IntPtr VorbisHandle; | ||||
| 		private IntPtr FileDataPtr; | ||||
| 		private FAudio.stb_vorbis_info Info; | ||||
| 
 | ||||
| 		private readonly float[] buffer; // currently decoded bytes | ||||
| 		protected override int BUFFER_SIZE => 32768; | ||||
| 
 | ||||
| 		public unsafe static StreamingSoundOgg Load(AudioDevice device, string filePath) | ||||
| 		{ | ||||
|  | @ -56,7 +52,6 @@ namespace MoonWorks.Audio | |||
| 			FileDataPtr = fileDataPtr; | ||||
| 			VorbisHandle = vorbisHandle; | ||||
| 			Info = info; | ||||
| 			buffer = new float[BUFFER_SIZE]; | ||||
| 		} | ||||
| 
 | ||||
| 		public override void Seek(uint sampleFrame) | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| using System; | ||||
| using System; | ||||
| using MoonWorks.Audio; | ||||
| 
 | ||||
| namespace MoonWorks.Video | ||||
|  | @ -6,8 +6,7 @@ namespace MoonWorks.Video | |||
| 	public unsafe class StreamingSoundTheora : StreamingSound | ||||
| 	{ | ||||
| 		private IntPtr VideoHandle; | ||||
| 
 | ||||
| 		public override int BUFFER_SIZE => 4096 * 2; | ||||
| 		protected override int BUFFER_SIZE => 8192; | ||||
| 
 | ||||
| 		internal StreamingSoundTheora( | ||||
| 			AudioDevice device, | ||||
|  | @ -27,17 +26,19 @@ namespace MoonWorks.Video | |||
| 
 | ||||
| 		protected override unsafe void FillBuffer( | ||||
| 			void* buffer, | ||||
| 			int bufferLength, | ||||
| 			out int filledLength, | ||||
| 			int bufferLengthInBytes, | ||||
| 			out int filledLengthInBytes, | ||||
| 			out bool reachedEnd | ||||
| 		) { | ||||
| 			var lengthInFloats = bufferLengthInBytes / sizeof(float); | ||||
| 
 | ||||
| 			int samples = Theorafile.tf_readaudio( | ||||
| 				VideoHandle, | ||||
| 				(IntPtr) buffer, | ||||
| 				bufferLength | ||||
| 				lengthInFloats | ||||
| 			); | ||||
| 
 | ||||
| 			filledLength = samples * sizeof(float); | ||||
| 			filledLengthInBytes = samples * sizeof(float); | ||||
| 			reachedEnd = Theorafile.tf_eos(VideoHandle) == 1; | ||||
| 		} | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue