FileOnQ / Imaging.Heif

A C#/.NET wrapper around libheif for decoding and processing high efficiency image formats (heif, heic).
GNU Lesser General Public License v3.0
15 stars 4 forks source link

Added libde265 as third-party Compilation Instead of Using vcpkg #90

Closed SkyeHoefling closed 2 years ago

SkyeHoefling commented 2 years ago

Fixes: #88

Description

Removes vcpkg and updates the build to clone and compile libde265. This is important step to fully supporting cross-platform compilation as vcpkg is focused on windows.

Merge Checklist

github-actions[bot] commented 2 years ago

Benchmark Comparison - .NET Framework 4.8

Benchmarking comparison between this Pull Request and the comitted values at benchmarks/results

thumbnail

 summary:
better: 4, geomean: 1.168
total diff: 4

No Slower results for the provided threshold = 10% and noise filter = 0.3ns.

| Faster                                                       | base/diff | Base Median (ns) | Diff Median (ns) | Modality|
| ------------------------------------------------------------ | ---------:| ----------------:| ----------------:| -------- |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToStream |      1.18 |      59449850.00 |      50456700.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_Write    |      1.17 |      59505900.00 |      50919200.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToArray  |      1.16 |      58636250.00 |      50473600.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_ToSpan   |      1.16 |      58913500.00 |      50719400.00 | several?|

No file given

primary

 summary:
better: 4, geomean: 1.220
total diff: 4

No Slower results for the provided threshold = 10% and noise filter = 0.3ns.

| Faster                                                             | base/diff | Base Median (ns) | Diff Median (ns) | Modality|
| ------------------------------------------------------------------ | ---------:| ----------------:| ----------------:| --------:|
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_Write    |      1.31 |    2982269900.00 |    2270896300.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToSpan   |      1.21 |    2829898300.00 |    2346264300.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToArray  |      1.19 |    2743673900.00 |    2307227900.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToStream |      1.18 |    2766976750.00 |    2353400550.00 |         |

No file given

Benchmark Results - .NET Framework 4.8

thumbnail

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5), VM=Hyper-V Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 2 logical and 2 physical cores [Host] : .NET Framework 4.8 (4.8.4420.0), X64 RyuJIT Job-GHSIOX : .NET Framework 4.8 (4.8.4420.0), X64 RyuJIT Runtime=.NET Framework 4.8 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Median | Allocated native memory | Native memory leak | Allocated | |------------------- |---------:|---------:|---------:|---------:|------------------------:|-------------------:|----------:| | Thumbnail_Write | 50.95 ms | 0.191 ms | 0.179 ms | 50.92 ms | 5,123,891 B | - | 74,504 B | | Thumbnail_ToArray | 50.47 ms | 0.148 ms | 0.123 ms | 50.47 ms | 5,123,611 B | 48 B | 74,504 B | | Thumbnail_ToSpan | 51.75 ms | 1.018 ms | 1.459 ms | 50.72 ms | 5,123,579 B | - | - | | Thumbnail_ToStream | 50.43 ms | 0.091 ms | 0.071 ms | 50.46 ms | 5,123,563 B | - | 140,816 B |

primary

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5), VM=Hyper-V Intel Xeon CPU E5-2673 v4 2.30GHz, 1 CPU, 2 logical and 2 physical cores [Host] : .NET Framework 4.8 (4.8.4420.0), X64 RyuJIT Job-GHSIOX : .NET Framework 4.8 (4.8.4420.0), X64 RyuJIT Runtime=.NET Framework 4.8 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Allocated native memory | Native memory leak | Allocated | |---------------------- |--------:|---------:|---------:|------------------------:|-------------------:|------------:| | PrimaryImage_Write | 2.271 s | 0.0261 s | 0.0218 s | 222,028,830 B | - | 1,951,112 B | | PrimaryImage_ToArray | 2.310 s | 0.0270 s | 0.0226 s | 222,028,214 B | - | 1,951,112 B | | PrimaryImage_ToSpan | 2.351 s | 0.0379 s | 0.0355 s | 222,028,694 B | - | - | | PrimaryImage_ToStream | 2.343 s | 0.0456 s | 0.0468 s | 222,028,358 B | - | 3,894,032 B |

Benchmark Comparison - .NET 5

Benchmarking comparison between this Pull Request and the comitted values at benchmarks/results

thumbnail

 summary:
better: 1, geomean: 1.159
total diff: 1

No Slower results for the provided threshold = 10% and noise filter = 0.3ns.

| Faster                                                    | base/diff | Base Median (ns) | Diff Median (ns) | Modality|
| --------------------------------------------------------- | ---------:| ----------------:| ----------------:| --------:|
| FileOnQ.Imaging.Heif.Benchmarks.Thumbnail.Thumbnail_Write |      1.16 |      59536600.00 |      51357050.00 |         |

No file given

primary

 summary:
better: 4, geomean: 1.171
total diff: 4

No Slower results for the provided threshold = 10% and noise filter = 0.3ns.

| Faster                                                             | base/diff | Base Median (ns) | Diff Median (ns) | Modality|
| ------------------------------------------------------------------ | ---------:| ----------------:| ----------------:| --------:|
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToStream |      1.19 |    2982379850.00 |    2511609000.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToSpan   |      1.18 |    2976810300.00 |    2513607300.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_ToArray  |      1.16 |    2920373000.00 |    2516176900.00 |         |
| FileOnQ.Imaging.Heif.Benchmarks.PrimaryImage.PrimaryImage_Write    |      1.15 |    2905592400.00 |    2521188450.00 |         |

No file given

Benchmark Results - .NET 5

thumbnail

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5) Intel Xeon CPU E5-2673 v4 2.30GHz, 1 CPU, 2 logical and 2 physical cores .NET SDK=6.0.101 [Host] : .NET 5.0.8 (5.0.821.31504), X64 RyuJIT Job-EXNWCO : .NET 5.0.8 (5.0.821.31504), X64 RyuJIT Runtime=.NET 5.0 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Allocated native memory | Native memory leak | Allocated | |------------------- |---------:|---------:|---------:|------------------------:|-------------------:|----------:| | Thumbnail_Write | 51.73 ms | 1.032 ms | 2.807 ms | 5,124,425 B | - | 288 B | | Thumbnail_ToArray | 55.27 ms | 1.315 ms | 3.793 ms | 5,123,853 B | - | 66,408 B | | Thumbnail_ToSpan | 55.14 ms | 1.137 ms | 3.317 ms | 5,123,597 B | - | 120 B | | Thumbnail_ToStream | 52.33 ms | 1.040 ms | 2.933 ms | 5,123,853 B | - | 66,472 B |

primary

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5) Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 2 logical and 2 physical cores .NET SDK=6.0.101 [Host] : .NET 5.0.8 (5.0.821.31504), X64 RyuJIT Job-HRCKIG : .NET 5.0.8 (5.0.821.31504), X64 RyuJIT Runtime=.NET 5.0 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Allocated native memory | Native memory leak | Allocated | |---------------------- |--------:|---------:|---------:|------------------------:|-------------------:|------------:| | PrimaryImage_Write | 2.521 s | 0.0035 s | 0.0031 s | 222,029,428 B | - | 256 B | | PrimaryImage_ToArray | 2.516 s | 0.0082 s | 0.0064 s | 222,028,904 B | - | 1,943,008 B | | PrimaryImage_ToSpan | 2.513 s | 0.0065 s | 0.0058 s | 222,028,744 B | - | 88 B | | PrimaryImage_ToStream | 2.513 s | 0.0051 s | 0.0048 s | 222,028,936 B | - | 1,943,072 B |

Benchmark Comparison - .NET 6

Benchmarking comparison between this Pull Request and the comitted values at benchmarks/results

thumbnail

 No differences found between the benchmark results with threshold 10%.

primary

 No differences found between the benchmark results with threshold 10%.

Benchmark Results - .NET 6

thumbnail

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5) Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 2 logical and 2 physical cores .NET SDK=6.0.101 [Host] : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT Job-VLENSM : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT Runtime=.NET 6.0 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Allocated native memory | Native memory leak | Allocated | |------------------- |---------:|---------:|---------:|------------------------:|-------------------:|----------:| | Thumbnail_Write | 51.03 ms | 0.156 ms | 0.131 ms | 5,124,409 B | - | 832 B | | Thumbnail_ToArray | 50.32 ms | 0.234 ms | 0.219 ms | 5,123,853 B | - | 66,888 B | | Thumbnail_ToSpan | 50.34 ms | 0.176 ms | 0.156 ms | 5,123,853 B | - | 600 B | | Thumbnail_ToStream | 50.19 ms | 0.157 ms | 0.139 ms | 5,123,853 B | - | 66,952 B |

primary

``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.17763.2458 (1809/October2018Update/Redstone5) Intel Xeon Platinum 8171M CPU 2.60GHz, 1 CPU, 2 logical and 2 physical cores .NET SDK=6.0.101 [Host] : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT Job-HTBFDJ : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT Runtime=.NET 6.0 InvocationCount=1 LaunchCount=1 UnrollFactor=1 ``` | Method | Mean | Error | StdDev | Allocated native memory | Native memory leak | Allocated | |---------------------- |--------:|---------:|---------:|------------------------:|-------------------:|------------:| | PrimaryImage_Write | 2.721 s | 0.0543 s | 0.0877 s | 222,029,540 B | - | 800 B | | PrimaryImage_ToArray | 2.751 s | 0.0545 s | 0.1184 s | 222,028,536 B | - | 1,943,488 B | | PrimaryImage_ToSpan | 2.724 s | 0.0542 s | 0.1155 s | 222,028,840 B | - | 568 B | | PrimaryImage_ToStream | 2.909 s | 0.0574 s | 0.0786 s | 222,028,904 B | - | 1,943,552 B |