private void CallbackReadyPlayer(string message)
    {
        // Texture settings
        IntPtr    texPtr  = AVPlayerConnect.AVPlayerGetTexturePtr(avPlayer);
        Texture2D texture = Texture2D.CreateExternalTexture(
            512,
            512,
            TextureFormat.BGRA32,
            false,
            false,
            texPtr);

        texture.UpdateExternalTexture(texPtr);
        if (videoObject != null)
        {
            Renderer renderer = videoObject.GetComponent <Renderer>();
            if (renderer != null)
            {
                Vector2  scale    = new Vector2(2f, -2f);
                Material material = renderer.material;
                material.SetTextureScale("_MainTex", scale);
                material.SetTexture("_MainTex", texture);
                renderer.material = material;
            }
        }
        // Render settings
        StartCoroutine(OnRender());

        // Play settings
        AVPlayerConnect.AVPlayerSetLoop(avPlayer, true);
        AVPlayerConnect.AVPlayerPlay(avPlayer);
    }
 private void OnSeek()
 {
     if (seekSlider != null && !isSeekWaiting)
     {
         float current = seekSlider.value;
         AVPlayerConnect.AVPlayerSeek(avPlayer, current);
         isSeekWaiting    = true;
         seekSlider.value = current;
     }
 }
 public void OnPlayMovie()
 {
     if (AVPlayerConnect.AVPlayerIsPlaying(avPlayer))
     {
         AVPlayerConnect.AVPlayerPause(avPlayer);
     }
     else
     {
         AVPlayerConnect.AVPlayerPlay(avPlayer);
     }
 }
    // Start is called before the first frame update
    void Start()
    {
        avPlayer        = AVPlayerConnect.AVPlayerCreate();
        renderEventId   = AVPlayerConnect.AVPlayerGetEventID(avPlayer);
        renderEventFunc = AVPlayerConnect.AVPlayerGetRenderEventFunc();

        AVPlayerConnect.AVPlayerSetOnReady(
            avPlayer,
            transform.root.gameObject.name,
            ((Action <string>)CallbackReadyPlayer).Method.Name);
        AVPlayerConnect.AVPlayerSetContent(avPlayer, TEST_CONTENT_PATH);
    }
 public void OnPrepareMovie()
 {
     if (avPlayer == IntPtr.Zero)
     {
         avPlayer = AVPlayerConnect.AVPlayerCreate();
     }
     renderEventId   = AVPlayerConnect.AVPlayerGetEventID(avPlayer);
     renderEventFunc = AVPlayerConnect.AVPlayerGetRenderEventFunc();
     AVPlayerConnect.AVPlayerSetOnReady(
         avPlayer,
         transform.root.gameObject.name,
         ((Action <string>)CallbackReadyPlayer).Method.Name);
     AVPlayerConnect.AVPlayerSetContent(avPlayer, TEST_CONTENT_PATH);
 }
    IEnumerator OnUpdateSeekSlider()
    {
        for (;;)
        {
            yield return(null);

            if (seekSlider != null && AVPlayerConnect.AVPlayerIsPlaying(avPlayer))
            {
                if (!isSeekSliderDoing && !isSeekWaiting)
                {
                    float current = AVPlayerConnect.AVPlayerGetCurrentPosition(avPlayer);
                    seekSlider.value = current;
                }
            }
        }
    }
    IEnumerator OnUpdateText()
    {
        for (;;)
        {
            yield return(null);

            float current  = AVPlayerConnect.AVPlayerGetCurrentPosition(avPlayer);
            float duration = videoDuration;
            if (currentTimeText != null)
            {
                currentTimeText.text = "["
                                       + current
                                       + " | "
                                       + duration
                                       + "]";
            }
        }
    }
    private void CallbackReadyPlayer(string message)
    {
        // Texture settings
        IntPtr    texPtr  = AVPlayerConnect.AVPlayerGetTexturePtr(avPlayer);
        Texture2D texture = Texture2D.CreateExternalTexture(
            512,
            512,
            TextureFormat.BGRA32,
            false,
            false,
            texPtr);

        texture.UpdateExternalTexture(texPtr);
        videoSizeWidth  = AVPlayerConnect.AVPlayerGetVideoWidth(avPlayer);
        videoSizeHeight = AVPlayerConnect.AVPlayerGetVideoHeight(avPlayer);
        if (videoObject != null)
        {
            Renderer renderer = videoObject.GetComponent <Renderer>();
            if (renderer != null)
            {
                Material material = renderer.material;
                if (material != null)
                {
                    Vector2 scale = new Vector2(1f, -1f);
                    material.SetTextureScale("_MainTex", scale);
                    material.SetTexture("_MainTex", texture);
                }
            }
        }
        // Render settings
        StartCoroutine(OnRender());

        // Play settings
        AVPlayerConnect.AVPlayerSetLoop(avPlayer, true);
        AVPlayerConnect.AVPlayerPlay(avPlayer);

        // Callbacks
        var videoSizeEvent = new VideoSizeEvent();

        videoSizeEvent.SetCallback(avPlayer, (sender, width, height) =>
        {
            StartCoroutine(OnUpdateVideoSize(width, height));
        });
    }
    private void CallbackReadyPlayer(string message)
    {
        videoDuration = AVPlayerConnect.AVPlayerGetDuration(avPlayer);
        // Texture settings
        IntPtr    texPtr  = AVPlayerConnect.AVPlayerGetTexturePtr(avPlayer);
        Texture2D texture = Texture2D.CreateExternalTexture(
            512,
            512,
            TextureFormat.BGRA32,
            false,
            false,
            texPtr);

        texture.UpdateExternalTexture(texPtr);
        videoSizeWidth  = AVPlayerConnect.AVPlayerGetVideoWidth(avPlayer);
        videoSizeHeight = AVPlayerConnect.AVPlayerGetVideoHeight(avPlayer);
        if (videoImage != null)
        {
            videoImage.texture = texture;
            Vector2 scale = new Vector2(1f, -1f);
            videoImage.material.SetTextureScale("_MainTex", scale);
        }
        StartCoroutine(OnRender());

        // Seek settings
        if (seekSlider != null)
        {
            seekSlider.interactable = true;
            seekSlider.maxValue     = videoDuration;
            seekSlider.minValue     = 0f;
            seekSlider.value        = 0f;
            SliderEventTrigger trigger = seekSlider.GetComponentInChildren <SliderEventTrigger>();
            if (trigger != null)
            {
                trigger.BeginAction  = SeekSliderInitializePointerDrag;
                trigger.MovingAction = SeekSliderDrag;
                trigger.EndAction    = SeekSliderPointerUp;
            }
        }
        StartCoroutine(OnUpdateText());
        StartCoroutine(OnUpdateSeekSlider());

        // Callback settings
        AVPlayerConnect.AVPlayerSetOnEndTime(
            avPlayer,
            transform.root.gameObject.name,
            ((Action <string>)CallbackEndTime).Method.Name);
        AVPlayerConnect.AVPlayerSetOnSeek(
            avPlayer,
            transform.root.gameObject.name,
            ((Action <string>)CallbackSeek).Method.Name);
        VideoSizeEvent videoSizeEvent = new VideoSizeEvent();

        videoSizeEvent.SetCallback(avPlayer, (sender, width, height) =>
        {
            StartCoroutine(OnUpdateVideoSize(width, height));
        });

        // UI settings
        if (prepareButton != null)
        {
            prepareButton.interactable = false;
        }
        if (playButton != null)
        {
            playButton.interactable = true;
        }
    }
 void OnDestroy()
 {
     AVPlayerConnect.AVPlayerClose(avPlayer);
 }