* Use new MediaPipe packages and update version
* Apply updates from MediaPipeUnityPlugin
All while keeping C pointers like `void*` instead of `IntPtr`
and various other practices.
* Add VSCode task to debug tests
* Fix unset freeHGlobal delegate
This can happen because the static code of the NativeMethods class
could have not run, for some reason...
* Fix all examples
* Fix import reordering
* Add paths for Linux in BlazePose example
* Add BlazePose example to VSCode debug launchers
* Use `pose_landmark` instead of `pose_tracking_*`
* Pluralize `SidePacket`
The correct way to call it is actually `SidePackets`,
as it is internally a `map<string, Packet>`.
* Little XML doc
* Consolidate `StartRun` method parameters
* Add `SidePackets` property to `Calculator`
* Add side packet arguments to `BlazePose`
* Use the `pose_tracking` graph
Let's try specifying side packets there instead.
* Use asynchronous SeeShark frame input
Looks like that doesn't fix the FPS...
* Remove unnecessary `unsafe`
* Better error handling in example program
* Uncomment additional SidePacket
* Implement new Packet API
* Rename `Packet` namespace to `OldPacket`
* Rename `NewPacket` namespace to `Packet`
* Actually, `Packets` is better...
* Delete old Packet API
* Replace Calculators with Solutions
Solutions are written in a way to imitate the
MediaPipe Python API as much as possible.
* Remove Old Packet API tests
* Fix remaining tests
* No more `SignalAbort` :0
* Revert "No more `SignalAbort` :0"
This reverts commit dd63b53fb53590560188d652346130ff31c74c62.
* Create `FaceMeshCpuSolution`
* Add interface
* Temporarily remove non-compiling example projects
* This solution produces segfaults...
* Create `PacketType` enum
Store packet outputs instead of packets in solution
No segfault now :D
* Use an `IDictionary` for outputs
* Create a `Hands` example
* Hand tracking is 10 times slower...
* No threading T-T
* Add `FaceMeshGpu` solution
* Avoid `free(): invalid pointer` error
* Implement `HandsGpu` solution
It works perfectly fine :D
* Start reimplementing Pose example
* Pose landmarks CPU (it's very slow)
* Just correcting some things in the examples
* Implement `PoseGpuSolution` (it's decently fast)
* `OsuFrameworkVisualTests` example works too
Though we need a way to make solutions multithreaded.
* Attempt at thread-safe `Solution` implementation
* There is no thread-safe solution. :')
This reverts commit 6e9ccca3deebf3ca74ed25c41e619c07c5febd94.
* Fix duplicate project in solution
How the fuck did that happen???
* fix incorrect ImageFrame memory ownership handling
* Update runtime package
* Fix PInvoke method name
* Clean ImageFrame code
* Update ImageFrameTest
* Update Mediapipe.Net package version
* Make osu!framework asynchronous
This is to compensate for the performance drop instated by this PR.
Other examples can stay as-is.
Fortunately Mediapipe handles asynchronous code perfectly well.
* Fix linting
Co-authored-by: Speykious <speykious@gmail.com>
* Remove this bool marshal
* Literally remove all bool marshals
* Remove CharSet.Unicode warning
* Remove most FunctionPtr marshals
* Remove `[return: MarshalAs(...)]`
* Replace all `IntPtr`s with `void*`s
* Replace all `void*.Zero`s with `null`s
* Make native method classes unsafe
* U N S A F E
* Replace `PtrToStructure` with pointer arithmetic
* Run `dotnet format`
* Temp ugly Activator fix
* Remove `.ToPointer()`
* Use `byte` to return a `bool`
* Backwards compatibility with `Activator`
Yeah that sucks :(
* Replace `Marshal.Copy` by pointer arithmetic
* Replace `PtrToStringAnsi()` with `new string()`
* Remove unnecessary usings
* Explicitly type string pointers as `sbyte*`
* It actually doesn't hang?
* `MediaPipeException` -> `MediapipeException`
* Simplify `for` loops
* Remove unnecessary `float*` cast
* Some more explicit types for `ImageFrame`
* Remove unnecessary cast
* Looks like we forgor a `using` 💀
* Create `SafeArrayCopy` helper method
* Document `SafeArrayCopy`
* Port test attributes
* Add necessary references
* Port `TimestampTest`
* Port `CalculatorGraphTest`
* Port all `Framework.Tool` tests
* Port all `Framework.Port` tests
* Fix encoding
* Use `CharSet.Ansi` and disable warning CA2101
* Make CI run MediaPipe.NET tests
* Make `#region` names consistent
* Port all `Framework.Packet` tests
* Allow unsafe blocks
* Port `ImageFrameTest`
* Fix linting errors
* Port all `Gpu` tests
* Fix region name inconsistencies
* Fix the only GPU-side error in existence
* GPU works like a charm! (We'll have to find a way to correctly separate CPU and GPU tests.)
* `GpuOnly`: when they forgor 💀
* CI: Add tmate session for debugging
* Use corresponding runtime on tests
* Setup tmate session *after* tests
* Only setup the tmate session if previous step failed
* Fix `failure` word
* Ignore SignalAbort tests on Windows
* Circumvent OS differences for `DebugTypeName()` (Not even sure it's fine to do but anyway)
* Label some throw-exception tests as `SignalAbort`
* Maybe that's why...
* Install FFmpeg on MacOS to fix undefined symbols
* Remove MacOS test from CI
* Fix test result path