Comments (6)
Thank you for your interest and detailed report.
shlxq
works with quad-words -> only on 64-bit CPU. But I believe, this requirement is met, otherwise failure would have happened earlier.
Here it is said that "instruction is not supported in real mode and virtual-8086 mode", and again, I believe, it is not a problem.
Also, it is said, that instruction requires BMI2 CPU feature.
On OSX try sysctl -a | grep bmi2
; for me it responds with hw.optional.bmi2: 1
On Linux try cat /proc/cpuinfo | grep bmi2 | head -n 1
; it should respond with a long line like flags : ... bmi2 ...
Wikipedia says that: "Intel introduced BMI2 together with BMI1 in its line of Haswell processors. Only AMD has produced processors supporting only BMI1 without BMI2; BMI2 is supported by AMDs Excavator architecture and newer."
If the problem is missing BMI2 CPU feature, then try building with -mno-bmi2
flag.
Also, would be interesting to know it the binaries produced by Bazel also have this issue.
Bazel is easy to install on OSX (via Homebrew), and should also be easy to install on Ubuntu... After installation building is simple: bazel build -c opt :all
, and binaries should appear in bazel-bin/
About attached image: it is 21600 x 10800 pixels = 2700 x 1350 8x8 blocks. Currently, it is bigger than kBrunsliMaxNumBlocks
(3.5M > 2M). So, encoder will reject this image.
If you raise the limit, Brunsli should be able to compress this file successfully (27'201'049 bytes to 21'002'306 bytes). And decompress as well =) So, I believe, this limit should be configurable in the future.
from brunsli.
Thanks for you reply!
The CPU flag problem has solved by adding flag to CMakeLists. Because I'm working behind a proxy, the bazel support lib downloading always fail (have to download by hand) , so the bazel result will delay for maybe some days
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9e5d7a3..8c53002 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -60,6 +61,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
-mavx2 \
-mfma \
+ -mno-bmi2 \
-Xclang -mprefer-vector-width=128 \
-Xclang -target-cpu -Xclang haswell \
-Xclang -target-feature -Xclang +avx2")
after compiled with -mno-bmi2 flag still got into an Assert even with small test picture (81K)(I tried modified kBrunsliMaxNumBlocks bigger with large test pic, but got similar error)
It's there any other limitation to the compile flag?
ubuntu@ubuntu:~/code/paper/brunsli/build$ lldb-7 ./cbrunsli Joint-Photographic-Experts-Group-jpeg-1-1024x576.jpg
(lldb) target create "./cbrunsli"
Current executable set to './cbrunsli' (x86_64).
(lldb) settings set -- target.run-args "Joint-Photographic-Experts-Group-jpeg-1-1024x576.jpg"
(lldb) r
Process 26890 launched: '/home/ubuntu/code/paper/brunsli/build/cbrunsli' (x86_64)
WriteBitsPrepareStorage 0WriteBits 6 20 0WriteBits 6 3e 6WriteBits 6 1b 12WriteBits 6 1b 18WriteBits 6 2 24WriteBits 6 4 30WriteBits 6 4 36WriteBits 6 1a 42WriteBits 6 4 48WriteBits 6 1a 54WriteBits 6 4 60WriteBits 6 1a 66WriteBits 6 4 72WriteBits 6 1a 78WriteBits 6 4 84WriteBits 6 1a 90WriteBits 6 4 96WriteBits 6 1a 102WriteBits 6 1a 108WriteBits 6 4 114WriteBits 6 1a 120WriteBits 6 4 126WriteBits 6 1a 132WriteBits 6 4 138WriteBits 6 1a 144WriteBits 6 19 150WriteBits 1 0 156WriteBits 2 0 157WriteBits 1 0 159WriteBits 1 1 160WriteBits 1 0 161WriteBits 4 5 162WriteBits 32 0 166WriteBits 31 2 198WriteBits 31 3 229WriteBits 32 1 260WriteBits 32 1 292WriteBits 32 1 324WriteBits 1 1 356WriteBits 2 3 357WriteBits 1 0 359WriteBits 1 1 360WriteBits 2 3 361WriteBits 1 0 363WriteBits 1 0 364WriteBits 1 0 365WriteBits 1 0 366WriteBits 1 0 367WriteBits 1 0 368WriteBits 1 0 369WriteBits 1 0 370WriteBits 2 1 371WriteBits 1 0 373WriteBits 1 1 374WriteBits 1 0 375WriteBits 4 5 376WriteBits 32 1 380WriteBits 32 1 412WriteBits 32 1 444WriteBits 32 1 476WriteBits 32 1 508WriteBits 32 1 540WriteBits 1 0 572WriteBits 1 0 573WriteBits 1 0 574WriteBits 1 0 575WriteBits 1 0 576WriteBits 1 0 577WriteBits 1 0 578WriteBits 2 0 579WriteBits 1 1 581WriteBits 1 1 582WriteBits 1 0 583WriteBits 4 d 584WriteBits 32 0 588WriteBits 31 2 620WriteBits 31 2 651WriteBits 31 2 682WriteBits 31 2 713WriteBits 31 0 744WriteBits 30 6 775WriteBits 31 2 805WriteBits 31 2 836WriteBits 31 2 867WriteBits 31 2 898WriteBits 31 3 929WriteBits 32 1 960WriteBits 32 1 992WriteBits 1 0 1024WriteBits 1 1 1025WriteBits 2 1 1026WriteBits 1 0 1028WriteBits 1 0 1029WriteBits 1 0 1030WriteBits 1 0 1031WriteBits 1 1 1032WriteBits 2 3 1033WriteBits 1 0 1035WriteBits 1 0 1036WriteBits 1 1 1037WriteBits 2 2 1038WriteBits 1 1 1040WriteBits 2 1 1041WriteBits 1 0 1043WriteBits 1 0 1044WriteBits 1 1 1045WriteBits 2 1 1046WriteBits 1 1 1048WriteBits 2 2 1049WriteBits 1 1 1051WriteBits 2 1 1052WriteBits 1 1 1054WriteBits 2 2 1055WriteBits 1 1 1057WriteBits 2 3 1058WriteBits 1 1 1060WriteBits 2 2 1061WriteBits 1 0 1063WriteBits 1 1 1064WriteBits 2 0 1065WriteBits 1 1 1067WriteBits 2 2 1068WriteBits 1 1 1070WriteBits 2 1 1071WriteBits 1 1 1073WriteBits 2 2 1074WriteBits 1 0 1076WriteBits 1 1 1077WriteBits 2 2 1078WriteBits 1 1 1080WriteBits 2 1 1081WriteBits 1 0 1083WriteBits 1 1 1084WriteBits 2 2 1085WriteBits 1 1 1087WriteBits 2 1 1088WriteBits 1 1 1090WriteBits 2 1 1091WriteBits 1 1 1093WriteBits 2 2 1094WriteBits 1 0 1096WriteBits 1 1 1097WriteBits 2 2 1098WriteBits 1 1 1100WriteBits 2 1 1101WriteBits 1 0 1103WriteBits 1 1 1104WriteBits 2 0 1105WriteBits 1 1 1107WriteBits 2 1 1108WriteBits 1 1 1110WriteBits 2 1 1111WriteBits 1 1 1113WriteBits 2 2 1114WriteBits 1 1 1116WriteBits 2 2 1117WriteBits 1 1 1119WriteBits 2 3 1120WriteBits 1 0 1122WriteBits 1 1 1123WriteBits 2 2 1124WriteBits 1 1 1126WriteBits 2 2 1127WriteBits 1 0 1129WriteBits 1 1 1130WriteBits 2 1 1131WriteBits 1 0 1133WriteBits 1 0 1134WriteBits 1 1 1135WriteBits 2 3 1136WriteBits 1 1 1138WriteBits 2 3 1139WriteBits 1 0 1141WriteBits 1 1 1142WriteBits 2 1 1143WriteBits 1 1 1145WriteBits 2 1 1146WriteBits 1 1 1148WriteBits 2 1 1149WriteBits 1 0 1151WriteBits 1 1 1152WriteBits 2 2 1153WriteBits 1 1 1155WriteBits 2 3 1156WriteBits 1 1 1158WriteBits 2 0 1159WriteBits 1 1 1161WriteBits 2 2 1162WriteBits 1 1 1164WriteBits 2 2 1165WriteBits 1 1 1167WriteBits 2 3 1168WriteBits 1 0 1170WriteBits 1 1 1171WriteBits 2 0 1172WriteBits 1 1 1174WriteBits 2 0 1175WriteBits 1 1 1177WriteBits 2 2 1178WriteBits 1 0 1180WriteBits 1 0 1181WriteBits 2 1 1182WriteBits 1 1 1184WriteBits 1 1 1185WriteBits 1 0 1186WriteBits 4 b 1187WriteBits 32 0 1191WriteBits 31 2 1223WriteBits 31 2 1254WriteBits 31 1 1285WriteBits 30 4 1316WriteBits 31 1 1346WriteBits 30 5 1377WriteBits 32 1 1407WriteBits 32 1 1439WriteBits 32 1 1471WriteBits 32 1 1503WriteBits 32 1 1535WriteBits 1 1 1567WriteBits 2 1 1568WriteBits 1 0 1570WriteBits 1 0 1571WriteBits 1 0 1572WriteBits 1 1 1573WriteBits 2 1 1574WriteBits 1 0 1576WriteBits 1 1 1577WriteBits 2 2 1578WriteBits 1 1 1580WriteBits 2 3 1581WriteBits 1 1 1583WriteBits 2 1 1584WriteBits 1 1 1586WriteBits 2 2 1587WriteBits 1 0 1589WriteBits 1 1 1590WriteBits 2 3 1591WriteBits 1 0 1593WriteBits 1 1 1594WriteBits 2 0 1595WriteBits 1 1 1597WriteBits 2 3 1598WriteBits 1 1 1600WriteBits 2 1 1601WriteBits 1 1 1603WriteBits 2 2 1604WriteBits 1 1 1606WriteBits 2 0 1607WriteBits 1 1 1609WriteBits 2 3 1610WriteBits 1 1 1612WriteBits 2 1 1613WriteBits 1 1 1615WriteBits 2 2 1616WriteBits 1 1 1618WriteBits 2 2 1619WriteBits 1 0 1621WriteBits 1 0 1622WriteBits 1 1 1623WriteBits 2 1 1624WriteBits 1 1 1626WriteBits 2 1 1627WriteBits 1 0 1629WriteBits 1 1 1630WriteBits 2 1 1631WriteBits 1 0 1633WriteBits 1 1 1634WriteBits 2 0 1635WriteBits 1 1 1637WriteBits 2 2 1638WriteBits 1 1 1640WriteBits 2 1 1641WriteBits 1 1 1643WriteBits 2 2 1644WriteBits 1 1 1646WriteBits 2 1 1647WriteBits 1 0 1649WriteBits 1 1 1650WriteBits 2 2 1651WriteBits 1 0 1653WriteBits 1 1 1654WriteBits 2 0 1655WriteBits 1 1 1657WriteBits 2 2 1658WriteBits 1 0 1660WriteBits 1 1 1661WriteBits 2 0 1662WriteBits 1 1 1664WriteBits 2 1 1665WriteBits 1 0 1667WriteBits 1 1 1668WriteBits 2 2 1669WriteBits 1 0 1671WriteBits 1 1 1672WriteBits 2 3 1673WriteBits 1 0 1675WriteBits 1 0 1676WriteBits 2 1 1677WriteBits 1 1 1679WriteBits 1 1 1680WriteBits 1 0 1681WriteBits 4 b 1682WriteBits 32 0 1686WriteBits 31 2 1718WriteBits 31 2 1749WriteBits 31 1 1780WriteBits 30 3 1811WriteBits 30 3 1841WriteBits 30 4 1871WriteBits 31 2 1901WriteBits 31 2 1932WriteBits 31 2 1963WriteBits 31 3 1994WriteBits 32 1 2025WriteBits 1 1 2057WriteBits 2 1 2058WriteBits 1 0 2060WriteBits 1 0 2061WriteBits 1 0 2062WriteBits 1 1 2063WriteBits 2 1 2064WriteBits 1 0 2066WriteBits 1 0 2067WriteBits 1 1 2068WriteBits 2 1 2069WriteBits 1 1 2071WriteBits 2 3 2072WriteBits 1 1 2074WriteBits 2 1 2075WriteBits 1 1 2077WriteBits 2 2 2078WriteBits 1 1 2080WriteBits 2 3 2081WriteBits 1 0 2083WriteBits 1 1 2084WriteBits 2 0 2085WriteBits 1 1 2087WriteBits 2 3 2088WriteBits 1 1 2090WriteBits 2 1 2091WriteBits 1 1 2093WriteBits 2 2 2094WriteBits 1 1 2096WriteBits 2 2 2097WriteBits 1 0 2099WriteBits 1 1 2100WriteBits 2 3 2101WriteBits 1 1 2103WriteBits 2 2 2104WriteBits 1 1 2106WriteBits 2 1 2107WriteBits 1 1 2109WriteBits 2 2 2110WriteBits 1 1 2112WriteBits 2 2 2113WriteBits 1 0 2115WriteBits 1 0 2116WriteBits 1 1 2117WriteBits 2 0 2118WriteBits 1 1 2120WriteBits 2 1 2121WriteBits 1 0 2123WriteBits 1 1 2124WriteBits 2 1 2125WriteBits 1 0 2127WriteBits 1 1 2128WriteBits 2 2 2129WriteBits 1 0 2131WriteBits 1 1 2132WriteBits 2 0 2133WriteBits 1 1 2135WriteBits 2 0 2136WriteBits 1 1 2138WriteBits 2 1 2139WriteBits 1 0 2141WriteBits 1 1 2142WriteBits 2 1 2143WriteBits 1 1 2145WriteBits 2 1 2146WriteBits 1 1 2148WriteBits 2 1 2149WriteBits 1 1 2151WriteBits 2 2 2152WriteBits 1 0 2154WriteBits 1 1 2155WriteBits 2 3 2156WriteBits 1 0 2158WriteBits 1 1 2159WriteBits 2 0 2160WriteBits 1 1 2162WriteBits 2 1 2163WriteBits 1 0 2165WriteBits 1 1 2166WriteBits 2 3 2167WriteBits 1 0 2169WriteBits 1 1 2170WriteBits 2 0 2171WriteBits 1 1 2173WriteBits 2 1 2174WriteBits 1 0 2176WriteBits 1 1 2177WriteBits 2 3 2178WriteBits 1 1 2180WriteBits 2 2 2181WriteBits 1 0 2183WriteBits 1 1 2184WriteBits 2 1 2185WriteBits 1 0 2187WriteBits 1 1 2188WriteBits 2 2 2189WriteBits 1 0 2191WriteBits 1 0 2192WriteBits 2 0 2193WriteBits 1 1 2195WriteBits 1 1 2196WriteBits 1 0 2197WriteBits 4 d 2198WriteBits 32 0 2202WriteBits 31 2 2234WriteBits 31 1 2265WriteBits 30 2 2296WriteBits 30 5 2326WriteBits 30 2 2356WriteBits 30 3 2386WriteBits 29 7 2416WriteBits 30 3 2445WriteBits 30 3 2475WriteBits 30 3 2505WriteBits 30 3 2535WriteBits 30 4 2565WriteBits 31 3 2595WriteBits 1 1 2626WriteBits 2 1 2627WriteBits 1 0 2629WriteBits 1 0 2630WriteBits 1 1 2631WriteBits 2 2 2632WriteBits 1 0 2634WriteBits 1 0 2635WriteBits 1 1 2636WriteBits 2 3 2637WriteBits 1 0 2639WriteBits 1 0 2640WriteBits 1 1 2641WriteBits 2 0 2642WriteBits 1 1 2644WriteBits 2 3 2645WriteBits 1 1 2647WriteBits 2 1 2648WriteBits 1 1 2650WriteBits 2 2 2651WriteBits 1 1 2653WriteBits 2 2 2654WriteBits 1 0 2656WriteBits 1 1 2657WriteBits 2 1 2658WriteBits 1 1 2660WriteBits 2 2 2661WriteBits 1 0 2663WriteBits 1 1 2664WriteBits 2 2 2665WriteBits 1 0 2667WriteBits 1 1 2668WriteBits 2 2 2669WriteBits 1 0 2671WriteBits 1 1 2672WriteBits 2 3 2673WriteBits 1 0 2675WriteBits 1 1 2676WriteBits 2 3 2677WriteBits 1 1 2679WriteBits 2 1 2680WriteBits 1 1 2682WriteBits 2 1 2683WriteBits 1 1 2685WriteBits 2 2 2686WriteBits 1 1 2688WriteBits 2 3 2689WriteBits 1 1 2691WriteBits 2 1 2692WriteBits 1 0 2694WriteBits 1 1 2695WriteBits 2 0 2696WriteBits 1 1 2698WriteBits 2 1 2699WriteBits 1 0 2701WriteBits 1 1 2702WriteBits 2 3 2703WriteBits 1 0 2705WriteBits 1 1 2706WriteBits 2 2 2707WriteBits 1 1 2709WriteBits 2 2 2710WriteBits 1 0 2712WriteBits 1 1 2713WriteBits 2 3 2714WriteBits 1 1 2716WriteBits 2 0 2717WriteBits 1 1 2719WriteBits 2 1 2720WriteBits 1 1 2722WriteBits 2 2 2723WriteBits 1 1 2725WriteBits 2 3 2726WriteBits 1 1 2728WriteBits 2 0 2729WriteBits 1 1 2731WriteBits 2 1 2732WriteBits 1 1 2734WriteBits 2 2 2735WriteBits 1 1 2737WriteBits 2 3 2738WriteBits 1 1 2740WriteBits 2 0 2741WriteBits 1 1 2743WriteBits 2 1 2744WriteBits 1 1 2746WriteBits 2 2 2747WriteBits 1 1 2749WriteBits 2 0 2750WriteBits 1 1 2752WriteBits 2 1 2753WriteBits 1 0 2755WriteBits 1 1 2756WriteBits 2 0 2757WriteBits 1 1 2759WriteBits 2 1 2760WriteBits 1 0 2762WriteBits 1 0 2763WriteBits 1 1 2764WriteBits 2 3 2765WriteBits 1 1 2767WriteBits 2 1 2768WriteBits 1 0 2770WriteBits 1 1 2771WriteBits 2 0 2772WriteBits 1 1 2774WriteBits 2 1 2775WriteBits 1 0 2777WriteBits 1 1 2778WriteBits 2 1 2779WriteBits 1 1 2781WriteBits 2 3 2782WriteBits 1 0 2784WriteBits 1 1 2785WriteBits 2 1 2786WriteBits 1 1 2788WriteBits 2 2 2789WriteBits 1 0 2791WriteBits 1 1 2792WriteBits 2 0 2793WriteBits 1 1 2795WriteBits 2 1 2796WriteBits 1 0 2798WriteBits 1 1 2799WriteBits 2 3 2800WriteBits 1 0 2802WriteBits 1 1 2803WriteBits 2 0 2804WriteBits 1 1 2806WriteBits 2 0 2807WriteBits 1 1 2809WriteBits 2 1 2810WriteBits 1 0 2812WriteBits 1 1 2813WriteBits 2 2 2814WriteBits 1 1 2816WriteBits 2 2 2817WriteBits 1 0 2819WriteBits 1 1 2820WriteBits 2 0 2821WriteBits 1 1 2823WriteBits 2 3 2824WriteBits 1 0 2826WriteBits 1 1 2827WriteBits 2 0 2828WriteBits 1 1 2830WriteBits 2 2 2831WriteBits 1 1 2833WriteBits 2 0 2834WriteBits 1 1 2836WriteBits 2 1 2837WriteBits 1 1 2839WriteBits 2 0 2840WriteBits 1 1 2842WriteBits 2 1 2843WriteBits 1 0 2845WriteBits 1 1 2846WriteBits 2 2 2847WriteBits 1 1 2849WriteBits 2 1 2850WriteBits 1 1 2852WriteBits 2 0 2853WriteBits 1 1 2855WriteBits 2 2 2856WriteBits 1 1 2858WriteBits 2 1 2859WriteBits 1 1 2861WriteBits 2 2 2862WriteBits 1 0 2864WriteBits 1 1 2865WriteBits 2 1 2866WriteBits 1 1 2868WriteBits 2 1 2869WriteBits 1 1 2871WriteBits 2 0 2872WriteBits 1 1 2874WriteBits 2 2 2875WriteBits 1 1 2877WriteBits 2 0 2878WriteBits 1 1 2880WriteBits 2 1 2881WriteBits 1 0 2883WriteBits 1 1 2884WriteBits 2 1 2885WriteBits 1 1 2887WriteBits 2 3 2888WriteBits 1 1 2890WriteBits 2 0 2891WriteBits 1 1 2893WriteBits 2 1 2894WriteBits 1 1 2896WriteBits 2 1 2897WriteBits 1 1 2899WriteBits 2 1 2900WriteBits 1 0 2902WriteBits 1 1 2903WriteBits 2 1 2904WriteBits 1 1 2906WriteBits 2 3 2907WriteBits 1 0 2909WriteBits 1 0 2910WriteBits 2 0 2911WriteBits 1 1 2913WriteBits 1 1 2914WriteBits 1 0 2915WriteBits 4 c 2916WriteBits 32 0 2920WriteBits 31 3 2952WriteBits 32 0 2983WriteBits 31 2 3015WriteBits 31 2 3046WriteBits 31 2 3077WriteBits 31 2 3108WriteBits 31 2 3139WriteBits 31 3 3170WriteBits 32 0 3201WriteBits 31 2 3233WriteBits 31 3 3264WriteBits 32 1 3295WriteBits 1 1 3327WriteBits 2 1 3328WriteBits 1 0 3330WriteBits 1 0 3331WriteBits 1 1 3332WriteBits 2 2 3333WriteBits 1 0 3335WriteBits 1 1 3336WriteBits 2 0 3337WriteBits 1 1 3339WriteBits 2 1 3340WriteBits 1 0 3342WriteBits 1 1 3343WriteBits 2 1 3344WriteBits 1 1 3346WriteBits 2 1 3347WriteBits 1 0 3349WriteBits 1 1 3350WriteBits 2 1 3351WriteBits 1 1 3353WriteBits 2 1 3354WriteBits 1 0 3356WriteBits 1 1 3357WriteBits 2 2 3358WriteBits 1 1 3360WriteBits 2 1 3361WriteBits 1 0 3363WriteBits 1 1 3364WriteBits 2 3 3365WriteBits 1 1 3367WriteBits 2 2 3368WriteBits 1 1 3370WriteBits 2 1 3371WriteBits 1 1 3373WriteBits 2 2 3374WriteBits 1 1 3376WriteBits 2 3 3377WriteBits 1 1 3379WriteBits 2 1 3380WriteBits 1 0 3382WriteBits 1 1 3383WriteBits 2 2 3384WriteBits 1 1 3386WriteBits 2 2 3387WriteBits 1 1 3389WriteBits 2 1 3390WriteBits 1 1 3392WriteBits 2 2 3393WriteBits 1 1 3395WriteBits 2 1 3396WriteBits 1 1 3398WriteBits 2 2 3399WriteBits 1 0 3401WriteBits 1 1 3402WriteBits 2 2 3403WriteBits 1 1 3405WriteBits 2 2 3406WriteBits 1 0 3408WriteBits 1 1 3409WriteBits 2 3 3410WriteBits 1 1 3412WriteBits 2 2 3413WriteBits 1 0 3415WriteBits 1 1 3416WriteBits 2 3 3417WriteBits 1 1 3419WriteBits 2 1 3420WriteBits 1 1 3422WriteBits 2 1 3423WriteBits 1 1 3425WriteBits 2 2 3426WriteBits 1 1 3428WriteBits 2 3 3429WriteBits 1 1 3431WriteBits 2 2 3432WriteBits 1 0 3434WriteBits 1 1 3435WriteBits 2 2 3436WriteBits 1 1 3438WriteBits 2 3 3439WriteBits 1 0 3441WriteBits 1 1 3442WriteBits 2 2 3443WriteBits 1 1 3445WriteBits 2 3 3446WriteBits 1 0 3448WriteBits 1 1 3449WriteBits 2 0 3450WriteBits 1 1 3452WriteBits 2 0 3453WriteBits 1 1 3455WriteBits 2 1 3456WriteBits 1 0 3458WriteBits 1 1 3459WriteBits 2 3 3460WriteBits 1 1 3462WriteBits 2 0 3463WriteBits 1 1 3465WriteBits 2 1 3466WriteBits 1 1 3468WriteBits 2 2 3469WriteBits 1 1 3471WriteBits 2 2 3472WriteBits 1 1 3474WriteBits 2 2 3475WriteBits 1 1 3477WriteBits 2 1 3478WriteBits 1 0 3480WriteBits 1 1 3481WriteBits 2 0 3482WriteBits 1 1 3484WriteBits 2 0 3485WriteBits 1 1 3487WriteBits 2 1 3488WriteBits 1 0 3490WriteBits 1 1 3491WriteBits 2 3 3492WriteBits 1 1 3494WriteBits 2 2 3495WriteBits 1 1 3497WriteBits 2 1 3498WriteBits 1 0 3500WriteBits 1 0 3501WriteBits 2 1 3502WriteBits 1 1 3504WriteBits 1 1 3505WriteBits 1 0 3506WriteBits 4 b 3507WriteBits 32 1 3511WriteBits 32 1 3543WriteBits 32 1 3575WriteBits 32 0 3607WriteBits 31 3 3639WriteBits 32 1 3670WriteBits 32 1 3702WriteBits 32 1 3734WriteBits 32 1 3766WriteBits 32 1 3798WriteBits 32 1 3830WriteBits 32 1 3862WriteBits 1 0 3894WriteBits 1 0 3895WriteBits 1 1 3896WriteBits 2 2 3897WriteBits 1 0 3899WriteBits 1 1 3900WriteBits 2 3 3901WriteBits 1 1 3903WriteBits 2 3 3904WriteBits 1 1 3906WriteBits 2 1 3907WriteBits 1 1 3909WriteBits 2 2 3910WriteBits 1 1 3912WriteBits 2 0 3913WriteBits 1 1 3915WriteBits 2 1 3916WriteBits 1 0 3918WriteBits 1 1 3919WriteBits 2 1 3920WriteBits 1 1 3922WriteBits 2 1 3923WriteBits 1 0 3925WriteBits 1 1 3926WriteBits 2 1 3927WriteBits 1 1 3929WriteBits 2 1 3930WriteBits 1 0 3932WriteBits 1 1 3933WriteBits 2 0 3934WriteBits 1 1 3936WriteBits 2 3 3937WriteBits 1 1 3939WriteBits 2 1 3940WriteBits 1 1 3942WriteBits 2 2 3943WriteBits 1 1 3945WriteBits 2 2 3946WriteBits 1 1 3948WriteBits 2 1 3949WriteBits 1 0 3951WriteBits 1 1 3952WriteBits 2 3 3953WriteBits 1 1 3955WriteBits 2 1 3956WriteBits 1 0 3958WriteBits 1 1 3959WriteBits 2 2 3960WriteBits 1 1 3962WriteBits 2 2 3963WriteBits 1 1 3965WriteBits 2 1 3966WriteBits 1 1 3968WriteBits 2 2 3969WriteBits 1 1 3971WriteBits 2 1 3972WriteBits 1 1 3974WriteBits 2 2 3975WriteBits 1 0 3977WriteBits 1 1 3978WriteBits 2 1 3979WriteBits 1 1 3981WriteBits 2 2 3982WriteBits 1 1 3984WriteBits 2 1 3985WriteBits 1 1 3987WriteBits 2 2 3988WriteBits 1 0 3990WriteBits 2 1 3991WriteBits 1 1 3993WriteBits 1 1 3994WriteBits 1 0 3995WriteBits 4 b 3996WriteBits 32 1 4000WriteBits 32 1 4032WriteBits 32 1 4064WriteBits 32 0 4096WriteBits 31 3 4128WriteBits 32 0 4159WriteBits 31 3 4191WriteBits 32 1 4222WriteBits 32 1 4254WriteBits 32 1 4286WriteBits 32 1 4318WriteBits 32 1 4350WriteBits 1 0 4382WriteBits 1 0 4383WriteBits 1 1 4384WriteBits 2 2 4385WriteBits 1 0 4387WriteBits 1 1 4388WriteBits 2 3 4389WriteBits 1 1 4391WriteBits 2 3 4392WriteBits 1 1 4394WriteBits 2 1 4395WriteBits 1 1 4397WriteBits 2 2 4398WriteBits 1 1 4400WriteBits 2 0 4401WriteBits 1 1 4403WriteBits 2 1 4404WriteBits 1 0 4406WriteBits 1 1 4407WriteBits 2 1 4408WriteBits 1 1 4410WriteBits 2 1 4411WriteBits 1 0 4413WriteBits 1 1 4414WriteBits 2 1 4415WriteBits 1 1 4417WriteBits 2 3 4418WriteBits 1 1 4420WriteBits 2 1 4421WriteBits 1 1 4423WriteBits 2 2 4424WriteBits 1 1 4426WriteBits 2 1 4427WriteBits 1 1 4429WriteBits 2 1 4430WriteBits 1 0 4432WriteBits 1 1 4433WriteBits 2 2 4434WriteBits 1 1 4436WriteBits 2 1 4437WriteBits 1 0 4439WriteBits 1 1 4440WriteBits 2 3 4441WriteBits 1 1 4443WriteBits 2 2 4444WriteBits 1 1 4446WriteBits 2 1 4447WriteBits 1 1 4449WriteBits 2 2 4450WriteBits 1 1 4452WriteBits 2 3 4453WriteBits 1 1 4455WriteBits 2 1 4456WriteBits 1 0 4458WriteBits 1 1 4459WriteBits 2 1 4460WriteBits 1 1 4462WriteBits 2 2 4463WriteBits 1 0 4465WriteBits 1 1 4466WriteBits 2 1 4467WriteBits 1 1 4469WriteBits 2 2 4470WriteBits 1 1 4472WriteBits 2 1 4473WriteBits 1 1 4475WriteBits 2 2 4476WriteBits 1 1 4478WriteBits 2 2 4479WriteBits 1 1 4481WriteBits 2 2 4482WriteBits 1 0 4484WriteBits 1 1 4485WriteBits 2 0 4486WriteBits 1 1 4488WriteBits 1 0 4489WriteBits 4 d 4490WriteBits 32 1 4494WriteBits 32 0 4526WriteBits 31 2 4558WriteBits 31 2 4589WriteBits 31 2 4620WriteBits 31 3 4651WriteBits 32 0 4682WriteBits 31 2 4714WriteBits 31 2 4745WriteBits 31 3 4776WriteBits 32 1 4807WriteBits 32 1 4839WriteBits 32 1 4871WriteBits 32 1 4903WriteBits 1 0 4935WriteBits 1 0 4936WriteBits 1 1 4937WriteBits 2 2 4938WriteBits 1 0 4940WriteBits 1 1 4941WriteBits 2 0 4942WriteBits 1 1 4944WriteBits 2 1 4945WriteBits 1 0 4947WriteBits 1 1 4948WriteBits 2 1 4949WriteBits 1 1 4951WriteBits 2 1 4952WriteBits 1 0 4954WriteBits 1 1 4955WriteBits 2 1 4956WriteBits 1 1 4958WriteBits 2 1 4959WriteBits 1 0 4961WriteBits 1 1 4962WriteBits 2 2 4963WriteBits 1 1 4965WriteBits 2 1 4966WriteBits 1 0 4968WriteBits 1 1 4969WriteBits 2 3 4970WriteBits 1 1 4972WriteBits 2 2 4973WriteBits 1 1 4975WriteBits 2 1 4976WriteBits 1 1 4978WriteBits 2 2 4979WriteBits 1 1 4981WriteBits 2 3 4982WriteBits 1 1 4984WriteBits 2 1 4985WriteBits 1 0 4987WriteBits 1 1 4988WriteBits 2 1 4989WriteBits 1 1 4991WriteBits 2 2 4992WriteBits 1 0 4994WriteBits 1 1 4995WriteBits 2 2 4996WriteBits 1 1 4998WriteBits 2 2 4999WriteBits 1 0 5001WriteBits 1 1 5002WriteBits 2 3 5003WriteBits 1 1 5005WriteBits 2 2 5006WriteBits 1 0 5008WriteBits 1 1 5009WriteBits 2 3 5010WriteBits 1 1 5012WriteBits 2 1 5013WriteBits 1 1 5015WriteBits 2 1 5016WriteBits 1 1 5018WriteBits 2 2 5019WriteBits 1 1 5021WriteBits 2 3 5022WriteBits 1 1 5024WriteBits 2 2 5025WriteBits 1 0 5027WriteBits 1 1 5028WriteBits 2 2 5029WriteBits 1 1 5031WriteBits 2 3 5032WriteBits 1 0 5034WriteBits 1 1 5035WriteBits 2 2 5036WriteBits 1 1 5038WriteBits 2 3 5039WriteBits 1 0 5041WriteBits 1 1 5042WriteBits 2 1 5043WriteBits 1 1 5045WriteBits 2 0 5046WriteBits 1 1 5048WriteBits 2 1 5049WriteBits 1 0 5051WriteBits 1 1 5052WriteBits 2 0 5053WriteBits 1 1 5055WriteBits 2 0 5056WriteBits 1 1 5058WriteBits 2 1 5059WriteBits 1 0 5061WriteBits 1 1 5062WriteBits 2 2 5063WriteBits 1 1 5065WriteBits 2 0 5066WriteBits 1 1 5068WriteBits 2 1 5069WriteBits 1 1 5071WriteBits 2 2 5072WriteBits 1 1 5074WriteBits 2 0 5075WriteBits 1 1 5077WriteBits 2 3 5078WriteBits 1 1 5080WriteBits 2 1 5081WriteBits 1 0 5083WriteBits 1 1 5084WriteBits 2 1 5085WriteBits 1 1 5087WriteBits 2 2 5088WriteBits 1 1 5090WriteBits 2 1 5091WriteBits 1 0 5093WriteBits 6 0 5094WriteBits 6 0 5100WriteBits 4 0 5106WriteBits 4 1 5110WriteBits 2 2 5114WriteBits 2 0 5116WriteBits 2 0 5118WriteBits 2 0 5120WriteBits 2 1 5122WriteBits 2 1 5124WriteBits 2 0 5126WriteBits 2 2 5128WriteBits 2 1 5130WriteBits 2 0 5132WriteBits 1 0 5134WriteBits 1 0 5135WriteBits 6 1 5136WriteBits 6 5 5142WriteBits 4 0 5148WriteBits 4 2 5152WriteBits 2 0 5156WriteBits 2 0 5158WriteBits 2 0 5160WriteBits 2 0 5162WriteBits 1 0 5164WriteBits 1 0 5165WriteBits 6 1 5166WriteBits 6 3f 5172WriteBits 4 0 5178WriteBits 4 1 5182WriteBits 2 0 5186WriteBits 2 2 5188WriteBits 2 0 5190WriteBits 2 1 5192WriteBits 1 0 5194WriteBits 1 0 5195WriteBits 6 1 5196WriteBits 6 3f 5202WriteBits 4 0 5208WriteBits 4 1 5212WriteBits 2 0 5216WriteBits 2 1 5218WriteBits 2 0 5220WriteBits 2 1 5222WriteBits 1 0 5224WriteBits 1 0 5225WriteBits 6 6 5226WriteBits 6 3f 5232WriteBits 4 0 5238WriteBits 4 2 5242WriteBits 2 0 5246WriteBits 2 0 5248WriteBits 2 0 5250WriteBits 2 0 5252WriteBits 1 0 5254WriteBits 1 0 5255WriteBits 6 1 5256WriteBits 6 3f 5262WriteBits 4 2 5268WriteBits 4 1 5272WriteBits 2 0 5276WriteBits 2 0 5278WriteBits 2 0 5280WriteBits 2 0 5282WriteBits 1 0 5284WriteBits 1 0 5285WriteBits 6 0 5286WriteBits 6 0 5292WriteBits 4 1 5298WriteBits 4 0 5302WriteBits 2 2 5306WriteBits 2 0 5308WriteBits 2 0 5310WriteBits 2 0 5312WriteBits 2 1 5314WriteBits 2 0 5316WriteBits 2 0 5318WriteBits 2 2 5320WriteBits 2 0 5322WriteBits 2 0 5324WriteBits 1 0 5326WriteBits 1 0 5327WriteBits 6 1 5328WriteBits 6 3f 5334WriteBits 4 1 5340WriteBits 4 0 5344WriteBits 2 0 5348WriteBits 2 2 5350WriteBits 2 0 5352WriteBits 2 1 5354WriteBits 1 0 5356WriteBits 1 0 5357WriteBits 6 1 5358WriteBits 6 3f 5364WriteBits 4 1 5370WriteBits 4 0 5374WriteBits 2 0 5378WriteBits 2 1 5380WriteBits 2 0 5382WriteBits 2 1 5384WriteBits 1 0 5386WriteBits 1 0 5387WriteBits 6 1 5388WriteBits 6 3f 5394WriteBits 4 1 5400WriteBits 4 0 5404WriteBits 2 0 5408WriteBits 2 0 5410WriteBits 2 0 5412WriteBits 2 0 5414WriteBits 1 0 5416WriteBits 1 0 5417WriteBits 2 1 5418WriteBits 2 0 5420WriteBits 1 1 5422WriteBits 4 0 5423WriteBits 2 1 5427WriteBits 4 0 5429WriteBits 2 0 5433WriteBits 1 0 5435WriteBits 4 0 5436WriteBitsPrepareStorage 0WriteBits 2 1 0WriteBits 1 1 2WriteBits 6 17 3WriteBits 1 0 9WriteBits 1 0 10WriteBits 1 0 11WriteBits 1 0 12WriteBits 1 0 13WriteBits 1 0 14WriteBits 1 0 15WriteBits 1 0 16WriteBits 1 0 17WriteBits 1 0 18WriteBits 1 0 19WriteBits 1 0 20WriteBits 1 0 21WriteBits 1 0 22WriteBits 1 0 23WriteBits 1 0 24WriteBits 1 0 25WriteBits 1 0 26WriteBits 1 0 27WriteBits 1 0 28WriteBits 1 0 29WriteBits 1 0 30WriteBits 1 0 31WriteBits 1 0 32WriteBits 1 0 33WriteBits 1 0 34WriteBits 1 0 35WriteBits 1 0 36WriteBits 1 0 37WriteBits 1 0 38WriteBits 1 1 39WriteBits 1 0 40WriteBits 1 0 41WriteBits 1 1 42WriteBits 1 1 43WriteBits 1 0 44WriteBits 1 0 45WriteBits 1 0 46WriteBits 1 0 47WriteBits 1 0 48WriteBits 1 0 49WriteBits 1 0 50WriteBits 1 0 51WriteBits 1 0 52WriteBits 1 0 53WriteBits 1 0 54WriteBits 1 0 55WriteBits 1 0 56WriteBits 1 0 57WriteBits 1 0 58WriteBits 1 0 59WriteBits 1 0 60WriteBits 1 0 61WriteBits 1 0 62WriteBits 1 0 63WriteBits 1 0 64WriteBits 1 0 65WriteBits 1 0 66WriteBits 1 0 67WriteBits 1 0 68WriteBits 1 1 69WriteBits 1 0 70WriteBits 1 0 71WriteBits 1 1 72WriteBits 1 1 73WriteBits 1 0 74WriteBits 1 0 75WriteBits 1 0 76WriteBits 1 0 77WriteBits 1 0 78WriteBits 1 0 79WriteBits 1 0 80WriteBits 1 1 81WriteBits 6 17 82WriteBits 1 0 88WriteBits 1 0 89WriteBits 1 0 90WriteBits 1 0 91WriteBits 1 0 92WriteBits 1 0 93WriteBits 1 0 94WriteBits 1 0 95WriteBits 1 0 96WriteBits 1 0 97WriteBits 1 0 98WriteBits 1 0 99WriteBits 1 0 100WriteBits 1 0 101WriteBits 1 0 102WriteBits 1 0 103WriteBits 1 0 104WriteBits 1 0 105WriteBits 1 0 106WriteBits 1 0 107WriteBits 1 0 108WriteBits 1 0 109WriteBits 1 0 110WriteBits 1 0 111WriteBits 1 0 112WriteBits 1 0 113WriteBits 1 0 114WriteBits 1 0 115WriteBits 1 0 116WriteBits 1 0 117WriteBits 1 0 118WriteBits 1 0 119WriteBits 1 0 120WriteBits 1 0 121WriteBits 1 0 122WriteBits 1 0 123WriteBits 1 0 124WriteBits 1 0 125WriteBits 1 0 126WriteBits 1 0 127WriteBits 1 0 128WriteBits 1 0 129WriteBits 1 0 130WriteBits 1 0 131WriteBits 1 0 132WriteBits 1 0 133WriteBits 1 0 134WriteBits 1 0 135WriteBits 1 0 136WriteBits 1 0 137WriteBits 1 0 138WriteBits 1 0 139WriteBits 1 0 140WriteBits 1 0 141WriteBits 1 0 142WriteBits 1 0 143WriteBits 1 0 144WriteBits 1 0 145WriteBits 1 0 146WriteBits 1 0 147WriteBits 1 0 148WriteBits 1 0 149WriteBits 1 0 150WriteBits 1 0 151WriteBits 2 0 152WriteBits 2 1 154WriteBits 2 1 156cbrunsli: /home/ubuntu/code/paper/brunsli/c/enc/brunsli_encode.cc:495: void brunsli::Histogram::Add(int): Assertion `val < 18' failed.
Process 26890 stopped
* thread #1, name = 'cbrunsli', stop reason = signal SIGABRT
frame #0: 0x00007ffff71a1428 libc.so.6`__GI_raise(sig=6) at raise.c:54
(lldb) bt
* thread #1, name = 'cbrunsli', stop reason = signal SIGABRT
* frame #0: 0x00007ffff71a1428 libc.so.6`__GI_raise(sig=6) at raise.c:54
frame #1: 0x00007ffff71a302a libc.so.6`__GI_abort at abort.c:89
frame #2: 0x00007ffff7199bd7 libc.so.6`__assert_fail_base(fmt="", assertion=<unavailable>, file=<unavailable>, line=<unavailable>, function=<unavailable>) at assert.c:92
frame #3: 0x00007ffff7199c82 libc.so.6`__GI___assert_fail(assertion=<unavailable>, file=<unavailable>, line=<unavailable>, function=<unavailable>) at assert.c:101
frame #4: 0x00000000004488b5 cbrunsli`brunsli::Histogram::Add(int) + 69
frame #5: 0x000000000044883e cbrunsli`brunsli::EntropySource::AddCode(int, int) + 46
frame #6: 0x000000000044476a cbrunsli`brunsli::DataStream::AddCode(int, int, int, brunsli::EntropySource*) + 202
frame #7: 0x000000000043edc0 cbrunsli`brunsli::EncodeDC(int, int, int, int const*, int const*, short const**, short const**, std::vector<bool, std::allocator<bool> >*, brunsli::EntropySource*, brunsli::DataStream*) + 1376
frame #8: 0x0000000000440547 cbrunsli`brunsli::ProcessCoefficients(brunsli::JPEGData const&, brunsli::JPEGCodingState*) + 743
frame #9: 0x0000000000441667 cbrunsli`brunsli::BrunsliEncodeJpeg(brunsli::JPEGData const&, bool, unsigned char*, unsigned long*) + 647
frame #10: 0x0000000000433bb2 cbrunsli`ProcessFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) + 322
frame #11: 0x0000000000433d53 cbrunsli`main + 195
frame #12: 0x00007ffff718c830 libc.so.6`__libc_start_main(main=(cbrunsli`main), argc=2, argv=0x00007fffffffd338, init=<unavailable>, fini=<unavailable>, rtld_fini=<unavailable>, stack_end=0x00007fffffffd328) at libc-start.c:291
frame #13: 0x0000000000433599 cbrunsli`_start + 41
(lldb) up
frame #1: 0x00007ffff71a302a libc.so.6`__GI_abort at abort.c:89
(lldb) up
frame #2: 0x00007ffff7199bd7 libc.so.6`__assert_fail_base(fmt="", assertion=<unavailable>, file=<unavailable>, line=<unavailable>, function=<unavailable>) at assert.c:92
(lldb) up
frame #3: 0x00007ffff7199c82 libc.so.6`__GI___assert_fail(assertion=<unavailable>, file=<unavailable>, line=<unavailable>, function=<unavailable>) at assert.c:101
(lldb) up
frame #4: 0x00000000004488b5 cbrunsli`brunsli::Histogram::Add(int) + 69
cbrunsli`brunsli::Histogram::Add:
0x4488b5 <+69>: movslq -0xc(%rbp), %rax
0x4488b9 <+73>: movq -0x18(%rbp), %rcx
0x4488bd <+77>: movl (%rcx,%rax,4), %edx
0x4488c0 <+80>: addl $0x1, %edx
(lldb) up
frame #5: 0x000000000044883e cbrunsli`brunsli::EntropySource::AddCode(int, int) + 46
cbrunsli`brunsli::EntropySource::AddCode:
0x44883e <+46>: addq $0x10, %rsp
0x448842 <+50>: popq %rbp
0x448843 <+51>: retq
0x448844: nopw %cs:(%rax,%rax)
from brunsli.
Perhaps -Xclang -target-cpu -Xclang haswell
. Try remoing it, instead of adding -mno-bmi2
.
from brunsli.
About the test image: it seems that something else is subtly broken, works well on my Mac both with CMake- and Bazel-built binaries.
As I've mentioned, for CMake too many assumptions are made about target machine. Try to strip them all (first "CPU flags", if it does not help, then "Machine flags").
from brunsli.
Thanks, the error solved and the 26M image after compressing,reduced to 21M and the compress/decompress time is about 10s with Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz(32 core)
Dose it now compress/decompress only use one core?
from brunsli.
Currently, yes.
We are planning to support multi-core in future:
color components are fully independent already, and inside color component we could work in slices with some minor compression ratio loss.
Unfortunately, can not give any promises, on when this feature will be available.
from brunsli.
Related Issues (20)
- which type of ANS does brunsli use? HOT 3
- Is brunsli's ANS using static probability distributions? HOT 2
- Idea: https://brunsli.dev/split.html?progressive image resolution
- Add ratio to brunsli.dev
- brunsli.dev cannot decode JPEG compressed by recent cbrunsli.exe builds (CMake build 78 and newer) HOT 3
- [openSUSE] W: shared-lib-calls-exit from RPMLINT HOT 7
- core dumped when turn on Multithreading switch HOT 2
- File signature HOT 6
- CI: Add tests HOT 2
- HDR JPEG support? HOT 1
- Latest build? HOT 3
- Unable to finish the compress/decompress task when enables multithread mode on Android HOT 1
- Compiler is not EMSCRIPTEN HOT 1
- Plans for a new release? HOT 2
- Mode without preserving structure of the original JPEG file HOT 3
- Arithmetic coded JPEG support HOT 2
- Brunsli cannot decode JPEG that was compressed in JPEG XL's reference software's unofficial build HOT 3
- Build with dyanmically loaded libraries
- What is the public API that should be exported? HOT 1
- Encoding is 10x slower with Safari HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from brunsli.