public void ReadWholeClip_ReturnsAllSamples() { var video = m_CreatedVideoPlaybacks[0]; using (AudioSampleProvider provider = video.GetAudioSampleProvider(0)) { Assert.IsNotNull(provider); Assert.That(provider.valid); var sampleFrameCount = video.GetDuration() * video.GetAudioSampleRate(0); long readSampleFrameCount = 0; var channelCount = video.GetAudioChannelCount(0); const int sampleFrameCountPerChunk = 4096; using (var buffer = new NativeArray <float>(sampleFrameCountPerChunk * channelCount, Allocator.Persistent)) { long sampleFrameCountThisTime; do { sampleFrameCountThisTime = provider.ConsumeSampleFrames(buffer); readSampleFrameCount += sampleFrameCountThisTime; }while (sampleFrameCountThisTime == sampleFrameCountPerChunk && readSampleFrameCount < sampleFrameCount); } // Have to be flexible over the number of samples: the decoding may pad with a bit more samples than the file // itself announces. Assert.That(readSampleFrameCount, Is.GreaterThanOrEqualTo(sampleFrameCount)); } }
public AudioSampleProvider GetAudioSampleProvider(ushort trackIndex) { bool flag = trackIndex >= this.GetAudioTrackCount(); if (flag) { throw new ArgumentOutOfRangeException("trackIndex", trackIndex, "VideoPlayback has " + this.GetAudioTrackCount().ToString() + " tracks."); } AudioSampleProvider audioSampleProvider = AudioSampleProvider.Lookup(this.GetAudioSampleProviderId(trackIndex), null, trackIndex); bool flag2 = audioSampleProvider == null; if (flag2) { throw new InvalidOperationException("VideoPlayback.GetAudioSampleProvider got null provider."); } bool flag3 = audioSampleProvider.owner != null; if (flag3) { throw new InvalidOperationException("Internal error: VideoPlayback.GetAudioSampleProvider got unexpected non-null provider owner."); } bool flag4 = audioSampleProvider.trackIndex != trackIndex; if (flag4) { throw new InvalidOperationException("Internal error: VideoPlayback.GetAudioSampleProvider got provider for track " + audioSampleProvider.trackIndex.ToString() + " instead of " + trackIndex.ToString()); } return(audioSampleProvider); }
public AudioSampleProvider GetAudioSampleProvider(ushort trackIndex) { if (trackIndex >= GetAudioTrackCount()) { throw new ArgumentOutOfRangeException( "trackIndex", trackIndex, "VideoPlayback has " + GetAudioTrackCount() + " tracks."); } var provider = AudioSampleProvider.Lookup(GetAudioSampleProviderId(trackIndex), null, trackIndex); if (provider == null) { throw new InvalidOperationException( "VideoPlayback.GetAudioSampleProvider got null provider."); } if (provider.owner != null) { throw new InvalidOperationException( "Internal error: VideoPlayback.GetAudioSampleProvider got unexpected non-null provider owner."); } if (provider.trackIndex != trackIndex) { throw new InvalidOperationException( "Internal error: VideoPlayback.GetAudioSampleProvider got provider for track " + provider.trackIndex + " instead of " + trackIndex); } return(provider); }
static AudioSampleProvider CreateAudioSampleProvider(AudioClip audioClip, long startSampleFrameIndex = 0, long endSampleFrameIndex = 0, bool loop = false, bool allowDrop = false) { return(AudioSampleProvider.Lookup( audioClip.Internal_CreateAudioClipSampleProvider((ulong)startSampleFrameIndex, endSampleFrameIndex, loop, allowDrop), null, 0)); }
public static AudioSampleProvider GetAudioSampleProvider(this VideoPlayer vp, ushort trackIndex) { var count = vp.controlledAudioTrackCount; if (trackIndex >= count) { throw new ArgumentOutOfRangeException( "trackIndex", trackIndex, "VideoPlayer is currently configured with " + count + " tracks."); } var mode = vp.audioOutputMode; if (mode != VideoAudioOutputMode.APIOnly) { throw new InvalidOperationException( "VideoPlayer.GetAudioSampleProvider requires audioOutputMode to be APIOnly. " + "Current: " + mode); } var provider = AudioSampleProvider.Lookup( InternalGetAudioSampleProviderId(vp, trackIndex), vp, trackIndex); if (provider == null) { throw new InvalidOperationException( "VideoPlayer.GetAudioSampleProvider got null provider."); } if (provider.owner != vp) { throw new InvalidOperationException( "Internal error: VideoPlayer.GetAudioSampleProvider got provider used by another object."); } if (provider.trackIndex != trackIndex) { throw new InvalidOperationException( "Internal error: VideoPlayer.GetAudioSampleProvider got provider for track " + provider.trackIndex + " instead of " + trackIndex); } return(provider); }
void AddProviderToNode <TKernel>(DSPCommandBlock block, DSPNode node, int index = -1, float value = kSignalValueA, Providers item = Providers.VariableSizeArray, bool insert = true) where TKernel : struct, IAudioKernel <NoParameters, Providers> { var provider = AudioSampleProvider.Create(kChannelCount, kSampleRate); provider.enableSilencePadding = false; var inputBuff = new NativeArray <float>(2 * kChannelCount * kDspBufferSize, Allocator.Temp, NativeArrayOptions.UninitializedMemory); for (int i = 0; i < inputBuff.Length; ++i) { inputBuff[i] = value; } provider.QueueSampleFrames(inputBuff); inputBuff.Dispose(); if (insert) { block.InsertSampleProvider <NoParameters, Providers, TKernel>(provider.id, node, item, index); } else { block.SetSampleProvider <NoParameters, Providers, TKernel>(provider.id, node, item, index); } }
public static AudioSampleProvider GetAudioSampleProvider(this VideoPlayer vp, ushort trackIndex) { ushort controlledAudioTrackCount = vp.controlledAudioTrackCount; bool flag = trackIndex >= controlledAudioTrackCount; if (flag) { throw new ArgumentOutOfRangeException("trackIndex", trackIndex, "VideoPlayer is currently configured with " + controlledAudioTrackCount.ToString() + " tracks."); } VideoAudioOutputMode audioOutputMode = vp.audioOutputMode; bool flag2 = audioOutputMode != VideoAudioOutputMode.APIOnly; if (flag2) { throw new InvalidOperationException("VideoPlayer.GetAudioSampleProvider requires audioOutputMode to be APIOnly. Current: " + audioOutputMode.ToString()); } AudioSampleProvider audioSampleProvider = AudioSampleProvider.Lookup(vp.InternalGetAudioSampleProviderId(trackIndex), vp, trackIndex); bool flag3 = audioSampleProvider == null; if (flag3) { throw new InvalidOperationException("VideoPlayer.GetAudioSampleProvider got null provider."); } bool flag4 = audioSampleProvider.owner != vp; if (flag4) { throw new InvalidOperationException("Internal error: VideoPlayer.GetAudioSampleProvider got provider used by another object."); } bool flag5 = audioSampleProvider.trackIndex != trackIndex; if (flag5) { throw new InvalidOperationException("Internal error: VideoPlayer.GetAudioSampleProvider got provider for track " + audioSampleProvider.trackIndex.ToString() + " instead of " + trackIndex.ToString()); } return(audioSampleProvider); }
public static AudioSampleProvider GetAudioSampleProvider(this VideoPlayer vp, ushort trackIndex) { ushort controlledAudioTrackCount = vp.controlledAudioTrackCount; if (trackIndex >= controlledAudioTrackCount) { throw new ArgumentOutOfRangeException("trackIndex", trackIndex, "VideoPlayer is currently configured with " + controlledAudioTrackCount + " tracks."); } VideoAudioOutputMode audioOutputMode = vp.audioOutputMode; if (audioOutputMode != VideoAudioOutputMode.APIOnly) { throw new InvalidOperationException("VideoPlayer.GetAudioSampleProvider requires audioOutputMode to be APIOnly. Current: " + audioOutputMode); } AudioSampleProvider audioSampleProvider = AudioSampleProvider.Lookup(VideoPlayerExtensions.InternalGetAudioSampleProviderId(vp, trackIndex), vp, trackIndex); if (audioSampleProvider == null) { throw new InvalidOperationException("VideoPlayer.GetAudioSampleProvider got null provider."); } if (audioSampleProvider.owner != vp) { throw new InvalidOperationException("Internal error: VideoPlayer.GetAudioSampleProvider got provider used by another object."); } if (audioSampleProvider.trackIndex != trackIndex) { throw new InvalidOperationException(string.Concat(new object[] { "Internal error: VideoPlayer.GetAudioSampleProvider got provider for track ", audioSampleProvider.trackIndex, " instead of ", trackIndex })); } return(audioSampleProvider); }
/// <summary> /// Deallocates the sample provider. /// </summary> public void Release() { CheckValidAndThrow(); AudioSampleProvider.InternalRemove(ProviderHandle); }