You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.6 KiB
61 lines
1.6 KiB
2 years ago
|
using System;
|
||
|
using System.Runtime.InteropServices;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace FFmpeg.Demo.IOS
|
||
|
{
|
||
|
//Should be placed in the scene for callbacks initialization
|
||
|
public class IOSVideoPicker : MonoBehaviour
|
||
|
{
|
||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||
|
static Action<string> Callback;
|
||
|
|
||
|
//https://forums.macrumors.com/threads/function-pointers-in-obj-c.253962/
|
||
|
//void get_video_path(void (* callback)(const char*));
|
||
|
[DllImport("__Internal")]
|
||
|
static extern int get_video_path(IOSCallback callback);
|
||
|
//void play(const char* path);
|
||
|
[DllImport("__Internal")]
|
||
|
static extern int play(string path);
|
||
|
|
||
|
delegate void IOSCallback(string msg);
|
||
|
[AOT.MonoPInvokeCallback(typeof(IOSCallback))]
|
||
|
static void IOSCallbacFunc(string msg)
|
||
|
{
|
||
|
Debug.Log("Unity receive video path: " + msg);
|
||
|
Callback(msg);
|
||
|
}
|
||
|
|
||
|
public static void GetVideoPath(Action<string> _callback)
|
||
|
{
|
||
|
get_video_path(IOSCallbacFunc);
|
||
|
Callback = _callback;
|
||
|
}
|
||
|
|
||
|
public static void Play(string path)
|
||
|
{
|
||
|
play(path);
|
||
|
}
|
||
|
#else
|
||
|
//Dummy Interface
|
||
|
//------------------------------
|
||
|
|
||
|
public static void GetVideoPath(Action<string> _callback)
|
||
|
{
|
||
|
UnSupportedWarn();
|
||
|
}
|
||
|
|
||
|
public static void Play(string path)
|
||
|
{
|
||
|
UnSupportedWarn();
|
||
|
}
|
||
|
|
||
|
//------------------------------
|
||
|
|
||
|
static void UnSupportedWarn()
|
||
|
{
|
||
|
Debug.LogWarning("IOSVideoPicker can't be used on " + Application.platform);
|
||
|
}
|
||
|
#endif
|
||
|
}
|
||
|
}
|