# VideoTimeUpdateMode

> Defines the time source the VideoPlayer uses to update the timing of the video playback.

## Definition

* **Type:** Enum
* **Namespace:** [UnityEngine.Video](/engine/6000.0/script-reference/unityengine/video.md)
* **Assembly:** UnityEngine.VideoModule

```csharp
public enum VideoTimeUpdateMode
```

## Remarks

Use these settings to synchronize your video with audio, gameplay scaled time or unscaled time.

## Examples

```csharp
// This script switches between the time update modes when you press the Spacebar.
// It also creates a slider that you can use to change the timescale of the game. 
// The changes are visible on your video when you enter the GameTime time update mode.

// To set up your project for this script: 
// 1. Attach this script to a GameObject in your Scene. 
// 2. Add a VideoPlayer component to your GameObject.
// 3. Assign a VideoClip to your VideoPlayer. 

using UnityEngine;
using UnityEngine.Video;

public class VideoRenderModeExample : MonoBehaviour
{
    VideoPlayer videoPlayer;

    void Start()
    {
        videoPlayer = GetComponent<VideoPlayer>();

        // Make video play in background of Scene. 
        videoPlayer.renderMode = VideoRenderMode.CameraFarPlane;
        Camera mainCamera = Camera.main;
        videoPlayer.targetCamera = mainCamera;

        // Loop the video.
        videoPlayer.isLooping = true;

        // Play the video.
        videoPlayer.Play();
    }

    private void OnGUI()
    {
        // Slider to alter the time scale of the game. 
        GUI.Label(new Rect(0, 20, 300, 300), $"Time scale: {Time.timeScale:F1}");
        Time.timeScale = GUI.HorizontalSlider(new Rect(100, 20, 300, 1000), Time.timeScale, 0.0f, 5.0f);
    }

    private void Update()
    {
        // If you press the Spacebar, cycle through the time update modes.
        if (Input.GetKeyDown(KeyCode.Space))
        {
            VideoTimeUpdateMode currentVideoTimeUpdateMode = videoPlayer.timeUpdateMode;
            // Cycle through the enum values and loop back around. 
            int nextTimeUpdate = ((int)currentVideoTimeUpdateMode + 1) % System.Enum.GetValues(typeof(VideoTimeUpdateMode)).Length;

            videoPlayer.timeUpdateMode = (VideoTimeUpdateMode)nextTimeUpdate;

            Debug.Log($"Switched time update to: {videoPlayer.timeUpdateMode}");

            if (!videoPlayer.isPlaying)
            {
                videoPlayer.Play();
            }
        }
    }
}
```

## Fields

| Value                                                                                                         | Description                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| [DSPTime](/engine/6000.0/script-reference/unityengine/video/videotimeupdatemode/dsptime.md)                   | Update time based on the DSP (Digital Signal Processing) clock. Use this value to synchronize playback with Audio.            |
| [GameTime](/engine/6000.0/script-reference/unityengine/video/videotimeupdatemode/gametime.md)                 | Update the VideoPlayer's time based on [Time.time](/engine/6000.0/script-reference/unityengine/time/time.md).                 |
| [UnscaledGameTime](/engine/6000.0/script-reference/unityengine/video/videotimeupdatemode/unscaledgametime.md) | Update the VideoPlayer's time based on [Time.unscaledTime](/engine/6000.0/script-reference/unityengine/time/unscaledtime.md). |
