[LibraryImport("libmpv-2", EntryPoint = "mpv_command_node", StringMarshalling = StringMarshalling.Utf8)]
public static extern MPVError MPVCommandNode(MPVHandle ctx, ref MPVNode args, out MPVNode result);
public void Test()
{
var loadNode = new MPVNode()
{
Format = MPVFormat.String,
StringValue = Marshal.StringToCoTaskMemUTF8("loadfile\0")
};
var dataNode = new MPVNode()
{
Format = MPVFormat.String,
StringValue = Marshal.StringToCoTaskMemUTF8("<Path to a video file for now>\0")
};
var arr = new[] { loadNode, dataNode };
var ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf<MPVNode>() * arr.Length);
for (int i = 0; i < arr.Length; i++)
Marshal.StructureToPtr(arr[i], ptr + i * Marshal.SizeOf<MPVNode>(), false);
var arrayNode = new MPVNode()
{
Format = MPVFormat.NodeArray,
NodeListValue = new MPVNodeList()
{
Num = 2,
Nodes = ptr
}
};
Interop.MPVCommandNode(_handle, ref arrayNode, out var result);
}
[LibraryImport("libmpv-2", EntryPoint = "mpv_command_node", StringMarshalling = StringMarshalling.Utf8)]
public static extern MPVError MPVCommandNode(MPVHandle ctx, ref MPVNode args, out MPVNode result);
public void Test()
{
var loadNode = new MPVNode()
{
Format = MPVFormat.String,
StringValue = Marshal.StringToCoTaskMemUTF8("loadfile\0")
};
var dataNode = new MPVNode()
{
Format = MPVFormat.String,
StringValue = Marshal.StringToCoTaskMemUTF8("<Path to a video file for now>\0")
};
var arr = new[] { loadNode, dataNode };
var ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf<MPVNode>() * arr.Length);
for (int i = 0; i < arr.Length; i++)
Marshal.StructureToPtr(arr[i], ptr + i * Marshal.SizeOf<MPVNode>(), false);
var arrayNode = new MPVNode()
{
Format = MPVFormat.NodeArray,
NodeListValue = new MPVNodeList()
{
Num = 2,
Nodes = ptr
}
};
Interop.MPVCommandNode(_handle, ref arrayNode, out var result);
}