Esempio n. 1
0
 private void HandleAudio()
 {
     EditorGUILayout.Space();
     EditorGUILayout.PropertyField(this.m_AudioOutputMode, VideoPlayerEditor.s_Styles.audioOutputModeContent, new GUILayoutOption[0]);
     this.m_ShowAudioControls.target = (this.m_AudioOutputMode.intValue != 0);
     if (EditorGUILayout.BeginFadeGroup(this.m_ShowAudioControls.faded))
     {
         if (base.serializedObject.isEditingMultipleObjects)
         {
             EditorGUILayout.HelpBox(VideoPlayerEditor.s_Styles.audioControlsNotEditableHelp, MessageType.Warning, false);
         }
         else if (this.m_AudioOutputMode.hasMultipleDifferentValues)
         {
             EditorGUILayout.HelpBox(VideoPlayerEditor.s_Styles.selectUniformAudioOutputModeHelp, MessageType.Warning, false);
         }
         else
         {
             ushort val = (ushort)this.m_ControlledAudioTrackCount.intValue;
             this.HandleControlledAudioTrackCount();
             if (this.m_ControlledAudioTrackCount.hasMultipleDifferentValues)
             {
                 EditorGUILayout.HelpBox(VideoPlayerEditor.s_Styles.selectUniformAudioTracksHelp, MessageType.Warning, false);
             }
             else
             {
                 VideoAudioOutputMode intValue = (VideoAudioOutputMode)this.m_AudioOutputMode.intValue;
                 ushort num = Math.Min((ushort)this.m_ControlledAudioTrackCount.intValue, val);
                 num = (ushort)Math.Min((int)num, this.m_EnabledAudioTracks.arraySize);
                 for (ushort num2 = 0; num2 < num; num2 += 1)
                 {
                     EditorGUILayout.PropertyField(this.m_EnabledAudioTracks.GetArrayElementAtIndex((int)num2), this.GetAudioTrackEnabledContent(num2), new GUILayoutOption[0]);
                     EditorGUI.indentLevel++;
                     if (intValue == VideoAudioOutputMode.AudioSource)
                     {
                         EditorGUILayout.PropertyField(this.m_TargetAudioSources.GetArrayElementAtIndex((int)num2), VideoPlayerEditor.s_Styles.audioSourceContent, new GUILayoutOption[0]);
                     }
                     else if (intValue == VideoAudioOutputMode.Direct)
                     {
                         EditorGUILayout.PropertyField(this.m_DirectAudioMutes.GetArrayElementAtIndex((int)num2), VideoPlayerEditor.s_Styles.muteLabel, new GUILayoutOption[0]);
                         EditorGUILayout.Slider(this.m_DirectAudioVolumes.GetArrayElementAtIndex((int)num2), 0f, 1f, VideoPlayerEditor.s_Styles.volumeLabel, new GUILayoutOption[0]);
                     }
                     EditorGUI.indentLevel--;
                 }
             }
         }
     }
     EditorGUILayout.EndFadeGroup();
 }
Esempio n. 2
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);
        }
Esempio n. 3
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);
        }
Esempio n. 4
0
        private void HandleAudio()
        {
            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(m_AudioOutputMode, s_Styles.audioOutputModeContent);

            m_ShowAudioControls.target = (VideoAudioOutputMode)m_AudioOutputMode.intValue != VideoAudioOutputMode.None;
            if (EditorGUILayout.BeginFadeGroup(m_ShowAudioControls.faded))
            {
                // FIXME: Due to a bug in the behaviour of the widgets used in
                // this multi-selection-capable code, we are disabling
                // multi-select editing for now.  The array of widgets being
                // constructed ends up being garbled (no crash, just incorrect
                // content).  After discussing with @shawn, it was agreed to
                // handle this bug separately and disable multi-editing here for
                // the time being.
                if (serializedObject.isEditingMultipleObjects)
                {
                    EditorGUILayout.HelpBox(s_Styles.audioControlsNotEditableHelp, MessageType.Warning, false);
                }
                else if (m_AudioOutputMode.hasMultipleDifferentValues)
                {
                    EditorGUILayout.HelpBox(s_Styles.selectUniformAudioOutputModeHelp, MessageType.Warning, false);
                }
                else
                {
                    ushort trackCountBefore             = (ushort)m_ControlledAudioTrackCount.intValue;
                    bool   useControlledAudioTrackCount = HandleControlledAudioTrackCount();
                    if (useControlledAudioTrackCount && m_ControlledAudioTrackCount.hasMultipleDifferentValues)
                    {
                        EditorGUILayout.HelpBox(s_Styles.selectUniformAudioTracksHelp, MessageType.Warning, false);
                    }
                    else
                    {
                        VideoAudioOutputMode audioOutputMode = (VideoAudioOutputMode)m_AudioOutputMode.intValue;

                        // VideoPlayer::CheckConsistency keeps the array sizes in
                        // sync with the (possible) change done in
                        // HandleControlledAudioTrackCount().  But this adjustment is
                        // only done later so we conservatively only iterate over the
                        // smallest known number of tracks we know are initialized.
                        ushort trackCount = 0;
                        if (useControlledAudioTrackCount)
                        {
                            trackCount = (ushort)Math.Min(
                                (ushort)m_ControlledAudioTrackCount.intValue, trackCountBefore);
                            trackCount = (ushort)Math.Min(trackCount, m_EnabledAudioTracks.arraySize);
                        }
                        else
                        {
                            var clip = ((VideoPlayer)target).clip;
                            if (clip != null)
                            {
                                trackCount = clip.audioTrackCount;
                            }
                        }

                        for (ushort trackIdx = 0; trackIdx < trackCount; ++trackIdx)
                        {
                            EditorGUILayout.PropertyField(
                                m_EnabledAudioTracks.GetArrayElementAtIndex(trackIdx),
                                GetAudioTrackEnabledContent(trackIdx));

                            EditorGUI.indentLevel++;
                            if (audioOutputMode == VideoAudioOutputMode.AudioSource)
                            {
                                EditorGUILayout.PropertyField(
                                    m_TargetAudioSources.GetArrayElementAtIndex(trackIdx),
                                    s_Styles.audioSourceContent);
                            }
                            else if (audioOutputMode == VideoAudioOutputMode.Direct)
                            {
                                EditorGUILayout.PropertyField(
                                    m_DirectAudioMutes.GetArrayElementAtIndex(trackIdx),
                                    s_Styles.muteLabel);
                                EditorGUILayout.Slider(
                                    m_DirectAudioVolumes.GetArrayElementAtIndex(trackIdx), 0.0f, 1.0f,
                                    s_Styles.volumeLabel);
                            }
                            EditorGUI.indentLevel--;
                        }
                    }
                }
            }
            EditorGUILayout.EndFadeGroup();
        }