コード例 #1
0
    private void DrawVideoControls(Rect area, AVProQuickTimeGUIDisplay movieGUI)
    {
        AVProQuickTimeMovie movie  = movieGUI._movie;
        AVProQuickTime      player = movie.MovieInstance;

        if (player == null)
        {
            return;
        }

        // Close button
        if (GUI.Button(new Rect(area.x + (area.width - 32), area.y, 32, 32), "X"))
        {
            _removeMovie = movieGUI;
        }

        // Duplicate button
        if (GUI.Button(new Rect(area.x + (area.width - 64), area.y, 32, 32), "+"))
        {
            Add(movie._folder, movie._filename);
        }

        // Video properties
        GUILayout.BeginArea(new Rect(area.x, area.y, area.width / 2, area.height / 2));
        GUILayout.Label(player.Width + "x" + player.Height + "/" + player.FrameRate.ToString("F2") + "hz");
        GUILayout.EndArea();

        GUILayout.BeginArea(new Rect(area.x, area.y + (area.height - 32), area.width, 32));
        GUILayout.BeginHorizontal();
        float position    = player.PositionSeconds;
        float newPosition = GUILayout.HorizontalSlider(position, 0.0f, player.DurationSeconds, GUILayout.ExpandWidth(true));

        if (position != newPosition)
        {
            player.PositionSeconds = newPosition;
        }
        if (player.IsPlaying)
        {
            if (GUILayout.Button("Pause", GUILayout.ExpandWidth(false)))
            {
                player.Pause();
            }
        }
        else
        {
            if (GUILayout.Button("Play", GUILayout.ExpandWidth(false)))
            {
                player.Play();
            }
        }
        GUILayout.EndHorizontal();
        GUILayout.EndArea();
    }
コード例 #2
0
    private void Add(string folder, string filename)
    {
        GameObject go = new GameObject();

        go.transform.parent = _root.transform;

        AVProQuickTimeMovie movie = go.AddComponent <AVProQuickTimeMovie>();

        movie._useStreamingAssetsPath = true;
        movie._folder      = folder;
        movie._filename    = filename;
        movie._loop        = true;
        movie._loadOnStart = false;
        movie._playOnStart = false;

        AVProQuickTimeGUIDisplay gui = go.AddComponent <AVProQuickTimeGUIDisplay>();

        gui._movie      = movie;
        gui._scaleMode  = ScaleMode.StretchToFill;
        gui._fullScreen = false;
        gui._alphaBlend = false;
        gui._depth      = 5;
        gui._color      = new Color(0.8f, 0.8f, 0.8f, 1.0f);

        _movies.Add(gui);

        if (!movie.LoadMovie())
        {
            Remove(gui);
            return;
        }
        else
        {
            movie.Play();
        }

        UpdateLayout();
    }
コード例 #3
0
    public override void OnInspectorGUI()
    {
        _movie = (this.target) as AVProQuickTimeMovie;

        EditorGUILayout.Separator();
        EditorGUILayout.LabelField("Load Options", EditorStyles.boldLabel);
        //DrawDefaultInspector();
        _movie._folder = EditorGUILayout.TextField("Folder", _movie._folder);
        _movie._filename = EditorGUILayout.TextField("Filename", _movie._filename);

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Source");
        _movie._source = (AVProQuickTimePlugin.MovieSource)EditorGUILayout.EnumPopup(_movie._source);
        EditorGUILayout.EndHorizontal();
        _movie._allowYUV = EditorGUILayout.Toggle("Allow YUV", _movie._allowYUV);
        if (_movie._allowYUV)
        {
            _movie._useYUVHD = EditorGUILayout.Toggle("Use YUV Rec709", _movie._useYUVHD);
        }

        EditorGUILayout.Separator();
        EditorGUILayout.Separator();
        EditorGUILayout.LabelField("Start Options", EditorStyles.boldLabel);
        _movie._loadOnStart = EditorGUILayout.Toggle("Load On Start", _movie._loadOnStart);
        _movie._playOnStart = EditorGUILayout.Toggle("Play On Start", _movie._playOnStart);
        //_movie._loadFirstFrame = EditorGUILayout.Toggle("Load First Frame", _movie._loadFirstFrame);

        EditorGUILayout.Separator();
        EditorGUILayout.Separator();
        EditorGUILayout.LabelField("Playback Options", EditorStyles.boldLabel);
        _movie._loop = EditorGUILayout.Toggle("Loop", _movie._loop);

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Audio Volume");
        _movie._volume = EditorGUILayout.Slider(_movie._volume, 0.0f, 1.0f);
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Audio Balance");
        _movie._audioBalance = EditorGUILayout.Slider(_movie._audioBalance, -1.0f, 1.0f);
        EditorGUILayout.EndHorizontal();

        GUILayout.Space(8.0f);

        AVProQuickTime media = _movie.MovieInstance;

        _movie._editorPreview = EditorGUILayout.Foldout(_movie._editorPreview, "Video Preview");

        if (_movie._editorPreview)
        {
            {
                Rect textureRect = GUILayoutUtility.GetRect(64.0f, 64.0f, GUILayout.MinWidth(64.0f), GUILayout.MinHeight(64.0f));
                Texture texture = _movie.OutputTexture;
                if (texture == null)
                    texture = EditorGUIUtility.whiteTexture;
                GUI.DrawTexture(textureRect, texture, ScaleMode.ScaleToFit);

                if (Application.isPlaying && media != null)
                {
                    GUILayout.Label(string.Format("{0}x{1} @ {2}fps {3} secs", media.Width, media.Height, media.FrameRate.ToString("F2"), media.DurationSeconds.ToString("F2")));
                }

                if (media != null && media.FramesTotal > 30)
                {
                    GUILayout.Label("Displaying at " + media.DisplayFPS.ToString("F1") + " fps");
                }
                else
                {
                    GUILayout.Label("Displaying at ... fps");
                }
            }

            if (Application.isPlaying)
            {
                if (media != null)
                {
                    GUILayout.Space(8.0f);

                    //EditorGUILayout.LabelField("Drawn:" + AVProQuickTimePlugin.GetNumFramesDrawn(_movie.MovieInstance.Handle));

                    EditorGUILayout.LabelField("Frame:");
                    uint currentFrame = media.Frame;
                    //Debug.Log(currentFrame);

                    int newFrame = EditorGUILayout.IntSlider((int)currentFrame, 0, (int)media.FrameCount);
                    if (newFrame != currentFrame)
                    {
                        media.Frame = (uint)newFrame;
                    }

                    if (!media.IsPlaying)
                    {
                        if (GUILayout.Button("Unpause Stream"))
                        {
                            _movie.Play();
                        }
                    }
                    else
                    {
                        if (GUILayout.Button("Pause Stream"))
                        {
                            _movie.Pause();
                        }
                    }

                    if (media.IsPlaying)
                    {
                        this.Repaint();
                    }
                }
            }
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(_movie);
        }
    }
コード例 #4
0
    public override void OnInspectorGUI()
    {
        _movie = (this.target) as AVProQuickTimeMovie;

        EditorGUILayout.Separator();
        EditorGUILayout.LabelField("Load Options", EditorStyles.boldLabel);
        //DrawDefaultInspector();
        _movie._folder   = EditorGUILayout.TextField("Folder", _movie._folder);
        _movie._filename = EditorGUILayout.TextField("Filename", _movie._filename);

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Source");
        _movie._source = (AVProQuickTimePlugin.MovieSource)EditorGUILayout.EnumPopup(_movie._source);
        EditorGUILayout.EndHorizontal();
        _movie._allowYUV = EditorGUILayout.Toggle("Allow YUV", _movie._allowYUV);
        if (_movie._allowYUV)
        {
            _movie._useYUVHD = EditorGUILayout.Toggle("Use YUV Rec709", _movie._useYUVHD);
        }


        EditorGUILayout.Separator();
        EditorGUILayout.Separator();
        EditorGUILayout.LabelField("Start Options", EditorStyles.boldLabel);
        _movie._loadOnStart = EditorGUILayout.Toggle("Load On Start", _movie._loadOnStart);
        _movie._playOnStart = EditorGUILayout.Toggle("Play On Start", _movie._playOnStart);
        //_movie._loadFirstFrame = EditorGUILayout.Toggle("Load First Frame", _movie._loadFirstFrame);

        EditorGUILayout.Separator();
        EditorGUILayout.Separator();
        EditorGUILayout.LabelField("Playback Options", EditorStyles.boldLabel);
        _movie._loop = EditorGUILayout.Toggle("Loop", _movie._loop);

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Audio Volume");
        _movie._volume = EditorGUILayout.Slider(_movie._volume, 0.0f, 1.0f);
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Audio Balance");
        _movie._audioBalance = EditorGUILayout.Slider(_movie._audioBalance, -1.0f, 1.0f);
        EditorGUILayout.EndHorizontal();


        GUILayout.Space(8.0f);

        AVProQuickTime media = _movie.MovieInstance;

        _movie._editorPreview = EditorGUILayout.Foldout(_movie._editorPreview, "Video Preview");

        if (_movie._editorPreview)
        {
            {
                Rect    textureRect = GUILayoutUtility.GetRect(64.0f, 64.0f, GUILayout.MinWidth(64.0f), GUILayout.MinHeight(64.0f));
                Texture texture     = _movie.OutputTexture;
                if (texture == null)
                {
                    texture = EditorGUIUtility.whiteTexture;
                }
                GUI.DrawTexture(textureRect, texture, ScaleMode.ScaleToFit);

                if (Application.isPlaying && media != null)
                {
                    GUILayout.Label(string.Format("{0}x{1} @ {2}fps {3} secs", media.Width, media.Height, media.FrameRate.ToString("F2"), media.DurationSeconds.ToString("F2")));
                }

                if (media != null && media.FramesTotal > 30)
                {
                    GUILayout.Label("Displaying at " + media.DisplayFPS.ToString("F1") + " fps");
                }
                else
                {
                    GUILayout.Label("Displaying at ... fps");
                }
            }

            if (Application.isPlaying)
            {
                if (media != null)
                {
                    GUILayout.Space(8.0f);

                    //EditorGUILayout.LabelField("Drawn:" + AVProQuickTimePlugin.GetNumFramesDrawn(_movie.MovieInstance.Handle));

                    EditorGUILayout.LabelField("Frame:");
                    uint currentFrame = media.Frame;
                    //Debug.Log(currentFrame);

                    int newFrame = EditorGUILayout.IntSlider((int)currentFrame, 0, (int)media.FrameCount);
                    if (newFrame != currentFrame)
                    {
                        media.Frame = (uint)newFrame;
                    }

                    if (!media.IsPlaying)
                    {
                        if (GUILayout.Button("Unpause Stream"))
                        {
                            _movie.Play();
                        }
                    }
                    else
                    {
                        if (GUILayout.Button("Pause Stream"))
                        {
                            _movie.Pause();
                        }
                    }

                    if (media.IsPlaying)
                    {
                        this.Repaint();
                    }
                }
            }
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(_movie);
        }
    }
コード例 #5
0
    public void ControlWindow(int id)
    {
        if (_demo == null)
        {
            return;
        }

        GUILayout.Space(16f);

        GUILayout.BeginVertical("box");


        AVProQuickTimeMovie movie = _demo.PlayingMovie;

        if (movie != null)
        {
            AVProQuickTime moviePlayer = movie.MovieInstance;
            if (moviePlayer != null)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("Playing", GUILayout.Width(80));
                GUILayout.Label(movie._filename + " (" + moviePlayer.Width + "x" + moviePlayer.Height + " @ " + moviePlayer.FrameRate.ToString("F2") + ")");
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("Time ", GUILayout.Width(80));
                GUILayout.HorizontalSlider(moviePlayer.PositionSeconds, 0.0f, moviePlayer.DurationSeconds, GUILayout.ExpandWidth(true));
                GUILayout.Label(moviePlayer.PositionSeconds.ToString("F1") + "/" + moviePlayer.DurationSeconds.ToString("F1") + "s", GUILayout.ExpandWidth(false));
                GUILayout.EndHorizontal();
            }
        }

        GUILayout.BeginHorizontal();
        //GUILayout.Space(80);
        GUILayout.Label(string.Empty, GUILayout.Width(80));
        if (GUILayout.Button("Prev"))
        {
            _demo.Previous();
        }

        if (_demo.IsPaused)
        {
            if (GUILayout.Button("Play"))
            {
                _demo.Unpause();
            }
        }
        else
        {
            if (GUILayout.Button("Pause"))
            {
                _demo.Pause();
            }
        }

        if (GUILayout.Button("Next"))
        {
            _demo.Next();
        }
        GUILayout.EndHorizontal();
        GUILayout.Space(32f);


        GUILayout.BeginHorizontal();
        GUILayout.Label("Folder: ", GUILayout.Width(80));
        _demo._folder = GUILayout.TextField(_demo._folder, 192);
        GUILayout.EndHorizontal();
        GUILayout.Space(32f);


        int removeIndex = -1;
        int cloneIndex  = -1;
        int upIndex     = -1;
        int downIndex   = -1;

        GUILayout.Label("Playlist");
        for (int movieIndex = 0; movieIndex < _demo._filenames.Count; movieIndex++)
        {
            Color prevBackCol = GUI.backgroundColor;
            if (movieIndex == _demo.PlayingItemIndex)
            {
                GUI.backgroundColor = Color.green;
            }

            GUILayout.BeginHorizontal();
            GUILayout.Label((movieIndex + 1).ToString(), GUILayout.Width(80));
            _demo._filenames[movieIndex] = GUILayout.TextField(_demo._filenames[movieIndex], 192, GUILayout.MinWidth(256f));
            if (GUILayout.Button("X", GUILayout.Width(24)))
            {
                removeIndex = movieIndex;
            }
            if (GUILayout.Button("Clone", GUILayout.Width(64)))
            {
                cloneIndex = movieIndex;
            }
            if (GUILayout.Button("Up", GUILayout.Width(32)))
            {
                upIndex = movieIndex;
            }
            if (GUILayout.Button("Down", GUILayout.Width(48)))
            {
                downIndex = movieIndex;
            }
            GUILayout.EndHorizontal();

            if (movieIndex == _demo.PlayingItemIndex)
            {
                GUI.backgroundColor = prevBackCol;
            }
        }

        if (removeIndex >= 0)
        {
            _demo._filenames.RemoveAt(removeIndex);
            removeIndex = -1;
        }
        if (cloneIndex >= 0)
        {
            _demo._filenames.Insert(cloneIndex + 1, _demo._filenames[cloneIndex]);
        }

        if (upIndex > 0)
        {
            int    indexA = upIndex - 1;
            int    indexB = upIndex;
            string old    = _demo._filenames[indexA];
            _demo._filenames[indexA] = _demo._filenames[indexB];
            _demo._filenames[indexB] = old;
        }
        if (downIndex > 0 && downIndex + 1 < _demo._filenames.Count)
        {
            int    indexA = downIndex + 1;
            int    indexB = downIndex;
            string old    = _demo._filenames[indexA];
            _demo._filenames[indexA] = _demo._filenames[indexB];
            _demo._filenames[indexB] = old;
        }

        if (GUILayout.Button("+"))
        {
            _demo._filenames.Add(string.Empty);
        }



        GUILayout.EndVertical();
    }
コード例 #6
0
ファイル: BillBoardRenderer.cs プロジェクト: fdu5526/LibViz
    void Awake()
    {
        model = transform.parent.GetComponent<SpriteModel> ();
        movie = GetComponent<AVProQuickTimeMovie> ();
        billboardRenderer = GetComponent<Renderer>();
        movie._folder = model.videoFolderPath;
        movie._filename = model.videoFileName;
        currentVideoType = VideoType.None;

        fullscreenSelectionUI = GameObject.Find("FullscreenSelectionUI").GetComponent<FullscreenSelectionUI>();
        prevFrameCount = 0;
        isPlaying = false;
        nextFrameTimer = new Timer(1f / 20f);
    }
コード例 #7
0
	public override void OnInspectorGUI()
	{
		_movie = (this.target) as AVProQuickTimeMovie;

		EditorGUILayout.Separator();
		EditorGUILayout.LabelField("Load Options", EditorStyles.boldLabel);
		//DrawDefaultInspector();
		_movie._folder = EditorGUILayout.TextField("Folder", _movie._folder);
		_movie._filename = EditorGUILayout.TextField("Filename", _movie._filename);

		EditorGUILayout.BeginHorizontal();
		EditorGUILayout.PrefixLabel("Source");
		_movie._source = (AVProQuickTimePlugin.MovieSource)EditorGUILayout.EnumPopup(_movie._source);
		EditorGUILayout.EndHorizontal();
		_movie._allowYUV = EditorGUILayout.Toggle("Allow YUV", _movie._allowYUV);
		if (_movie._allowYUV)
		{
			_movie._useYUVHD = EditorGUILayout.Toggle("Use YUV Rec709", _movie._useYUVHD);
		}

		EditorGUILayout.Separator();
		EditorGUILayout.Separator();
		EditorGUILayout.LabelField("Performance", EditorStyles.boldLabel);
		_movie._ignoreFlips = EditorGUILayout.Toggle("Ignore Flips", _movie._ignoreFlips);


		EditorGUILayout.Separator();
		EditorGUILayout.Separator();
		EditorGUILayout.LabelField("Start Options", EditorStyles.boldLabel);
		_movie._loadOnStart = EditorGUILayout.Toggle("Load On Start", _movie._loadOnStart);
		_movie._playOnStart = EditorGUILayout.Toggle("Play On Start", _movie._playOnStart);
		//_movie._loadFirstFrame = EditorGUILayout.Toggle("Load First Frame", _movie._loadFirstFrame);

		EditorGUILayout.Separator();
		EditorGUILayout.Separator();
		EditorGUILayout.LabelField("Playback Options", EditorStyles.boldLabel);
		_movie._loop = EditorGUILayout.Toggle("Loop", _movie._loop);

		EditorGUILayout.BeginHorizontal();
		EditorGUILayout.PrefixLabel("Audio Volume");
		_movie._volume = EditorGUILayout.Slider(_movie._volume, 0.0f, 1.0f);
		EditorGUILayout.EndHorizontal();
		EditorGUILayout.BeginHorizontal();
		EditorGUILayout.PrefixLabel("Audio Balance");
		_movie._audioBalance = EditorGUILayout.Slider(_movie._audioBalance, -1.0f, 1.0f);
		EditorGUILayout.EndHorizontal();


		GUILayout.Space(8.0f);

		AVProQuickTime media = _movie.MovieInstance;
		
		GUI.enabled = (_movie != null && _movie.MovieInstance != null);
		_movie._editorPreview = EditorGUILayout.Foldout(_movie._editorPreview, "Video Preview");
		
		GUI.enabled = true;
		if (_movie._editorPreview && _movie.MovieInstance != null)
		{
			{
				Texture texture = _movie.OutputTexture;
				if (texture == null)
					texture = EditorGUIUtility.whiteTexture;

                float ratio = (float)texture.width / (float)texture.height;

                GUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                Rect textureRect = GUILayoutUtility.GetRect(Screen.width / 2, Screen.width / 2, (Screen.width / 2) / ratio, (Screen.width / 2) / ratio);
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();

				_showAlpha = GUILayout.Toggle(_showAlpha, "Show Alpha Channel");
				
				Matrix4x4 prevMatrix = GUI.matrix;
                if (_movie.MovieInstance.RequiresFlipY)
                {
                    GUIUtility.ScaleAroundPivot(new Vector2(1f, -1f), new Vector2(0, textureRect.y + (textureRect.height / 2)));
                }
				
				if (!_showAlpha)
					GUI.DrawTexture(textureRect, texture, ScaleMode.ScaleToFit);
				else
					EditorGUI.DrawTextureAlpha(textureRect, texture, ScaleMode.ScaleToFit);

				GUI.matrix = prevMatrix;
				
				GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
				GUILayout.FlexibleSpace();
				if (GUILayout.Button("Select Texture", GUILayout.ExpandWidth(false)))
				{
					Selection.activeObject = texture;
				}
				GUILayout.FlexibleSpace();
				GUILayout.EndHorizontal();

				if (Application.isPlaying && media != null)
				{
					GUILayout.Label(string.Format("{0}x{1} @ {2}fps {3} secs", media.Width, media.Height, media.FrameRate.ToString("F2"), media.DurationSeconds.ToString("F2")));
				}

				if (media != null && media.FramesTotal > 30)
				{
					GUILayout.Label("Displaying at " + media.DisplayFPS.ToString("F1") + " fps");
				}
				else
				{
					GUILayout.Label("Displaying at ... fps");	
				}
			}

			if (Application.isPlaying)
			{
				if (media != null)
				{
					GUILayout.Space(8.0f);
					
					//EditorGUILayout.LabelField("Drawn:" + AVProQuickTimePlugin.GetNumFramesDrawn(_movie.MovieInstance.Handle));

					EditorGUILayout.LabelField("Frame:");
					EditorGUILayout.BeginHorizontal();
					if (GUILayout.Button("<", GUILayout.ExpandWidth(false)))
					{
						media.Frame--;
					}
					uint currentFrame = media.Frame;
					if (currentFrame != uint.MaxValue)
					{
						int newFrame = EditorGUILayout.IntSlider((int)currentFrame, 0, (int)media.FrameCount);
						if (newFrame != currentFrame)
						{
							media.Frame = (uint)newFrame;
						}
					}
					if (GUILayout.Button(">", GUILayout.ExpandWidth(false)))
					{
						media.Frame++;
					}
					EditorGUILayout.EndHorizontal();			
					
					if (!media.IsPlaying)
					{
						if (GUILayout.Button("Unpause Stream"))
						{
							_movie.Play();
						}
					}
					else
					{
						if (GUILayout.Button("Pause Stream"))
						{
							_movie.Pause();
						}
					}
#if !AVPROQUICKTIME_UNITYFEATURE_EDITORAUTOREFRESH
					if (media.IsPlaying)
					{
						this.Repaint();
					}
#endif
				}
			}
		}

		if (GUI.changed)
		{
			EditorUtility.SetDirty(_movie);
		}
	}
コード例 #8
0
    public override void OnInspectorGUI()
    {
        _movie = (this.target) as AVProQuickTimeMovie;

        EditorGUILayout.Separator();
        EditorGUILayout.LabelField("Load Options", EditorStyles.boldLabel);
        //DrawDefaultInspector();
        _movie._useStreamingAssetsPath = EditorGUILayout.Toggle("Use StreamingAssets", _movie._useStreamingAssetsPath);
        _movie._folder   = EditorGUILayout.TextField("Folder", _movie._folder);
        _movie._filename = EditorGUILayout.TextField("Filename", _movie._filename);

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Source");
        _movie._source = (AVProQuickTimePlugin.MovieSource)EditorGUILayout.EnumPopup(_movie._source);
        EditorGUILayout.EndHorizontal();
        _movie._allowYUV = EditorGUILayout.Toggle("Allow YUV", _movie._allowYUV);
        if (_movie._allowYUV)
        {
            _movie._useYUVHD = EditorGUILayout.Toggle("Use YUV Rec709", _movie._useYUVHD);
        }

        EditorGUILayout.Separator();
        EditorGUILayout.Separator();
        EditorGUILayout.LabelField("Performance", EditorStyles.boldLabel);
        _movie._ignoreFlips = EditorGUILayout.Toggle("Ignore Flips", _movie._ignoreFlips);


        EditorGUILayout.Separator();
        EditorGUILayout.Separator();
        EditorGUILayout.LabelField("Start Options", EditorStyles.boldLabel);
        _movie._loadOnStart = EditorGUILayout.Toggle("Load On Start", _movie._loadOnStart);
        _movie._playOnStart = EditorGUILayout.Toggle("Play On Start", _movie._playOnStart);
        //_movie._loadFirstFrame = EditorGUILayout.Toggle("Load First Frame", _movie._loadFirstFrame);

        EditorGUILayout.Separator();
        EditorGUILayout.Separator();
        EditorGUILayout.LabelField("Playback Options", EditorStyles.boldLabel);
        _movie._loop = EditorGUILayout.Toggle("Loop", _movie._loop);

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Audio Volume");
        _movie._volume = EditorGUILayout.Slider(_movie._volume, 0.0f, 1.0f);
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.PrefixLabel("Audio Balance");
        _movie._audioBalance = EditorGUILayout.Slider(_movie._audioBalance, -1.0f, 1.0f);
        EditorGUILayout.EndHorizontal();


        GUILayout.Space(8.0f);

        AVProQuickTime media = _movie.MovieInstance;

        GUI.enabled           = (_movie != null && _movie.MovieInstance != null);
        _movie._editorPreview = EditorGUILayout.Foldout(_movie._editorPreview, "Video Preview");

        GUI.enabled = true;
        if (_movie._editorPreview && _movie.MovieInstance != null)
        {
            {
                Texture texture = _movie.OutputTexture;
                if (texture == null)
                {
                    texture = EditorGUIUtility.whiteTexture;
                }

                float ratio = (float)texture.width / (float)texture.height;

                GUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                Rect textureRect = GUILayoutUtility.GetRect(Screen.width / 2, Screen.width / 2, (Screen.width / 2) / ratio, (Screen.width / 2) / ratio);
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();

                _showAlpha = GUILayout.Toggle(_showAlpha, "Show Alpha Channel");

                Matrix4x4 prevMatrix = GUI.matrix;
                if (_movie.MovieInstance.RequiresFlipY)
                {
                    GUIUtility.ScaleAroundPivot(new Vector2(1f, -1f), new Vector2(0, textureRect.y + (textureRect.height / 2)));
                }

                if (!_showAlpha)
                {
                    GUI.DrawTexture(textureRect, texture, ScaleMode.ScaleToFit);
                }
                else
                {
                    EditorGUI.DrawTextureAlpha(textureRect, texture, ScaleMode.ScaleToFit);
                }

                GUI.matrix = prevMatrix;

                GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
                GUILayout.FlexibleSpace();
                if (GUILayout.Button("Select Texture", GUILayout.ExpandWidth(false)))
                {
                    Selection.activeObject = texture;
                }
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();

                if (Application.isPlaying && media != null)
                {
                    GUILayout.Label(string.Format("{0}x{1} @ {2}fps {3} secs", media.Width, media.Height, media.FrameRate.ToString("F2"), media.DurationSeconds.ToString("F2")));
                }

                if (media != null && media.FramesTotal > 30)
                {
                    GUILayout.Label("Displaying at " + media.DisplayFPS.ToString("F1") + " fps");
                }
                else
                {
                    GUILayout.Label("Displaying at ... fps");
                }
            }

            if (Application.isPlaying)
            {
                if (media != null)
                {
                    GUILayout.Space(8.0f);

                    //EditorGUILayout.LabelField("Drawn:" + AVProQuickTimePlugin.GetNumFramesDrawn(_movie.MovieInstance.Handle));

                    EditorGUILayout.LabelField("Frame:");
                    EditorGUILayout.BeginHorizontal();
                    if (GUILayout.Button("<", GUILayout.ExpandWidth(false)))
                    {
                        media.Frame--;
                    }
                    uint currentFrame = media.Frame;
                    if (currentFrame != uint.MaxValue)
                    {
                        int newFrame = EditorGUILayout.IntSlider((int)currentFrame, 0, (int)media.FrameCount);
                        if (newFrame != currentFrame)
                        {
                            media.Frame = (uint)newFrame;
                        }
                    }
                    if (GUILayout.Button(">", GUILayout.ExpandWidth(false)))
                    {
                        media.Frame++;
                    }
                    EditorGUILayout.EndHorizontal();

                    if (!media.IsPlaying)
                    {
                        if (GUILayout.Button("Unpause Stream"))
                        {
                            _movie.Play();
                        }
                    }
                    else
                    {
                        if (GUILayout.Button("Pause Stream"))
                        {
                            _movie.Pause();
                        }
                    }
#if !AVPROQUICKTIME_UNITYFEATURE_EDITORAUTOREFRESH
                    if (media.IsPlaying)
                    {
                        this.Repaint();
                    }
#endif
                }
            }
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(_movie);
        }
    }