public void ProcessAudio(float left, float right)
        {
            if (!m_isCapturing || !m_isCapturingAudio)
            {
                return;
            }

            try {
                // Audio may not be required yet, but buffer the value to avoid dropping samples.
                m_audioBuffer.Add(left, right);
                CaptureAudio();
            } catch (System.Exception e) {
                UnityEngine.Debug.LogException(e);
            }
        }
        void SingleBlockNotificationStreamOnSingleBlockRead(object sender, SingleBlockReadEventArgs e)
        {
            // Normalize incoming values.
            m_SourcePeak = Mathf.Max(m_SourcePeak, e.Left);
            m_SourcePeak = Mathf.Max(m_SourcePeak, e.Right);

            float renormalizationMultiplier = 1.0f / m_SourcePeak;

            renormalizationMultiplier = Mathf.Min(renormalizationMultiplier, m_NormalizationMaxMultiplier);
            float leftNormalized  = e.Left * renormalizationMultiplier;
            float rightNormalized = e.Right * renormalizationMultiplier;

            m_HotValues.Add(leftNormalized, rightNormalized);
            if (VideoRecorderUtils.ActiveVideoRecording != null)
            {
                VideoRecorderUtils.ActiveVideoRecording.ProcessAudio(leftNormalized, rightNormalized);
            }
        }