* 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>
* These pointers are C++ strings, not C strings
* Create a `DummyResourceManager` as an example
* Hide unsafe APIs
* Oops
* Using a `Span` results in segfaults :(
* Handle exceptions in `provideResource`
* Remove stray comment
* Document the delegates
Co-authored-by: Ayane Satomi <ayane@vignetteapp.org>
* fix examples (or at least try to)
* stuff
* Better dispose that
* Add video input options because I'm selfish
* THIS ONE MOTHERFUCKING FOR LOOP
* Remove unnecessary using
* Fix osu framework example
* Use stable `Google.Protobuf` package
* Add options to osu framework example
* Use same options on all examples
* Add framerate option
* Use framerate option
Co-authored-by: Speykious <speykious@gmail.com>
* Add a safe overload for ImageFrame()
Signed-off-by: GitHub <noreply@github.com>
* Reduce code dup by wrapping into the unsafe overload instead
Signed-off-by: GitHub <noreply@github.com>
* dotnet format
Signed-off-by: GitHub <noreply@github.com>
* Le unhaskellize
🖑Hey🖐 buddy,👬 I think🤔 you've 👉got the 🛇wrong🚫 door🚪 the 🐄leather🐄 club's ♴two♴ blocks down☟. 🖕Fuck🖕↗You↘.Oh, Fuck♂You 🐄leather🐄 man ❓Maybe❔👬you and I👬 should settle it💪👇right here👇 on the 💍ring💍 if you think🤔 your so 💪tough💪. Oh yea?😡 I'll kick👣 your ass!👊 Ha!😂 Yeah right👍 man. Let's go!✔ Why don't you🤔 get out of that 🐄leather stuff?🐄 I'll strip👙 down☟ out of this and we'll settle👪 it right here👇 in the ring. What ❔❓❔do you say? 🤐Yeah⁉ no problem buddy👬❗ You got it. 🖒Get out of that uh, jabroni outfit👕👔👖. Yeah, smart🤔 ass. I'll show😡you who's the ☝boss☝ of this 🏋gym.🏋
Signed-off-by: GitHub <noreply@github.com>
* I'll let this Le pass this time
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`
* yep
* yep fix namespaces
* add gpu face mesh
* include path
* add example
* Configure VSCode debugging for the example
* Runtime arguments are overkill it seems
* Fix linting
* Fix linting (and my brain)
* fix issue
* yeppers
* You think it's funny to take screenshots of people's NFTs, huh?
Property theft is a joke to you? I'll have you know that the blockchain doesn't lie. I own it. Even if you save it, it's my property. You are mad that you don't own the art that I own. Delete that screenshot.
* add BlazePose
* fix tiny skill issue
* fix using issue
* add hand and holistic calculators
* fix hand graph issue
* stuff
* Format all the stuff
* Create `CpuCalculator`
While leaving a kind of mess lol
* Create `GpuCalculator`
Poggers, but in parallel
* More graphs
* yep example
* Create new o!f visual tests example project
* Use the Superior target framework
* questioning the use of a questionable question mark
* pls halp
* Ignore `mediapipe/` folder for tests and examples
* Add GPU example to VSCode
* property
* change null frame exception message
Co-authored-by: Ayane <ayane@vignetteapp.org>
* `SupportedOSPlatform`: Case consistency
* Fix file encoding
* visual test
* Actuall close the graphs when disposing
* Fix `.csproj` file consistency
* Fix formatting and linting on `MediapipeDrawable`
* Fix `MediapipeDrawable` not showing
* Use a span instead of copying
* At least it disposes now...
* Round the corners of `MediapipeDrawable`
* remove unnecessary check
* increase drawable size and fill mode
* use consistent spacing
* oops
* Just a bit of formatting
and use `using` for the output image frame
* GPU WORKSWITH THIS ONE SIMPLE TRICK
LEARN HOW HE MADE BILLIONS OF DOLLARS WITH ONLY ONE LINE OF CODE
* dispose everywhere then
* add basic xmldoc
* fix lagnguage
* remove unnecessary nullable
* fix issue
* add new constructor
* Cleanup constructors
* fix xmldoc
* This is a better way to do it
* Create base `Calculator` class
* Delete `ICalculator` interface
* Polish XML doc
Also fix the stupid 💀
* Make all child calculators sealed
* Add `SupportedOSPlatform`
Can't add "Android" because some `Console` methods are unsupported
* Remove tmate debug from CI
* Polish examples more
I'm a perfectionist...?
Co-authored-by: Speykious <speykious@gmail.com>
Co-authored-by: Ayane <ayane@vignetteapp.org>