theophanemayaud / video-simili-duplicate-cleaner

https://theophanemayaud.github.io/video-simili-duplicate-cleaner/
GNU General Public License v3.0
51 stars 5 forks source link

Create an arm64 build compatible with apple silicon M-series macs #106

Closed newadventure079 closed 8 months ago

newadventure079 commented 1 year ago

Right now, the app is x86_64. Code Type: X86-64 (Translated)

Adding compiling and building steps to create an arm64 build that runs natively on apple silicon macs would be great.

theophanemayaud commented 1 year ago

That would be pretty great, I've been wanting to do this as soon as M1 came out. QT is now working with arm, but only on Mac, not windows. As this app is cross platform, I need 1 work machine to be able to build for both windows and macOS. So for now, I'll wait on qt.

theophanemayaud commented 1 year ago

I found a way to build as universal app for apple arm and intel machines. This involved building ffmpeg and opencv as universal libraries as well. OpenCV is simple, as it is build with CMake which directly supports a parameter building as universal. ffmep however involves building separately for each architecture (it can still both be done on M1 simply cross building for x86), then using apple command line tools to merge both libraries into a universal library. This is keeping ffmpeg at the same minor version (from 4.4.0 to 4.4.4) but updating opencv to 4.8.0 from 4.5.1.

Now I need to test if it still works as expected, and performance.

Testing performance (M1 MacBook Air 8gb ram, external SSD; 2018 i5 quad core MB Pro 16gb ram, external SSD): Careful, file discovery might need to be redone after intensive long load, it seems initial run is being a lot faster than it throttles. Starting with universal, I tried to first run it once, then immediately after run it a second time so it doesn't cool down.

File discovery

Video processing

Overall time to 1st pair (270GB folder of 12 505 videos)

Intact videos

Found duplicates

Recap Machine File discovery Video processing Overall time to 1st pair Intact videos Found duplicates.
Intel on M1 (no cache) 40/s 14/s 16min 15s 12 328 6 557 at 97.1 GB
Intel on M1 (with cache) 36/s 179/s 5min 5s 12 330 6 542 at 96.9 GB
Universal on M1 (no cache) 46/s 28/s 11min 35s 12 330 6 568 at 97.2 GB
Universal on M1 (with cache) 45/s 196/s 3min 25s 12 330 6 555 at 97.1 GB
Universal on Intel (no cache) 14/s 11/s 26min 36s
Universal on Intel (with cache) 14/s 113/s 10min 12s 12 330 6 545 at 96.9GB
Intel on Intel (no cache) 14/s 9/s 24min 33s 12 328 6 558 at 97.1 GB
Intel on Intel (with cache) 13/s 103/s 10min 31s 12 330 6 543 at 96.9 GB

So overall, the new performance is good :

tompalmer commented 10 months ago

Any ETA for completion ?

theophanemayaud commented 8 months ago

Hi, happy new year ! Sorry for the looong delay. I've just submitted to the apple App Store the new universal binary app build natively now also for arm (M1/M2/M3) with version 1.10.0 that I just !!! It should be out in a few days once apple approves it. I hope you like it and it helps you out :) It's about 30% faster than the rosetta translated version build only for intel x86.