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(); }
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); }
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(); }