Ejemplo n.º 1
0
    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));
        }
    }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 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));
 }
Ejemplo n.º 5
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);
        }
Ejemplo n.º 6
0
    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);
        }
    }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
 }