Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

image-kernel.cpp 9.9 KiB

vor 4 Monaten
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. #include <lol/image/kernel>
  2. TEST_CASE("bayer kernel")
  3. {
  4. auto &k = image::kernel::bayer({4, 4});
  5. }
  6. /*
  7. CHECK
  8. // Underflow
  9. CHECK(lol::audio::sample::sadd<int8_t>(-0x80, -0x80) == -0x80);
  10. CHECK(lol::audio::sample::sadd<int8_t>(-0x41, -0x41) == -0x80);
  11. CHECK(lol::audio::sample::sadd<int8_t>(-0x40, -0x41) == -0x80);
  12. // Standard operating mode
  13. CHECK(lol::audio::sample::sadd<int8_t>(-0x40, -0x40) == -0x80);
  14. CHECK(lol::audio::sample::sadd<int8_t>(-0x3f, -0x3f) == -0x7e);
  15. CHECK(lol::audio::sample::sadd<int8_t>(-0x01, -0x01) == -0x02);
  16. CHECK(lol::audio::sample::sadd<int8_t>(-0x01, 0x00) == -0x01);
  17. CHECK(lol::audio::sample::sadd<int8_t>( 0x00, 0x00) == 0x00);
  18. CHECK(lol::audio::sample::sadd<int8_t>( 0x00, 0x01) == 0x01);
  19. CHECK(lol::audio::sample::sadd<int8_t>( 0x01, 0x01) == 0x02);
  20. CHECK(lol::audio::sample::sadd<int8_t>( 0x3f, 0x3f) == 0x7e);
  21. CHECK(lol::audio::sample::sadd<int8_t>( 0x3f, 0x40) == 0x7f);
  22. // Overflow
  23. CHECK(lol::audio::sample::sadd<int8_t>( 0x40, 0x40) == 0x7f);
  24. CHECK(lol::audio::sample::sadd<int8_t>( 0x7f, 0x7f) == 0x7f);
  25. }
  26. TEST_CASE("sample saturated add: uint8_t")
  27. {
  28. // Underflow
  29. CHECK(lol::audio::sample::sadd<uint8_t>(0x00, 0x00) == 0x00);
  30. CHECK(lol::audio::sample::sadd<uint8_t>(0x3f, 0x3f) == 0x00);
  31. // Standard operating mode
  32. CHECK(lol::audio::sample::sadd<uint8_t>(0x40, 0x40) == 0x00);
  33. CHECK(lol::audio::sample::sadd<uint8_t>(0x41, 0x41) == 0x02);
  34. CHECK(lol::audio::sample::sadd<uint8_t>(0x7f, 0x7f) == 0x7e);
  35. CHECK(lol::audio::sample::sadd<uint8_t>(0x7f, 0x80) == 0x7f);
  36. CHECK(lol::audio::sample::sadd<uint8_t>(0x80, 0x80) == 0x80);
  37. CHECK(lol::audio::sample::sadd<uint8_t>(0x80, 0x81) == 0x81);
  38. CHECK(lol::audio::sample::sadd<uint8_t>(0x81, 0x81) == 0x82);
  39. CHECK(lol::audio::sample::sadd<uint8_t>(0xbf, 0xbf) == 0xfe);
  40. CHECK(lol::audio::sample::sadd<uint8_t>(0xbf, 0xc0) == 0xff);
  41. // Overflow
  42. CHECK(lol::audio::sample::sadd<uint8_t>(0xc0, 0xc0) == 0xff);
  43. CHECK(lol::audio::sample::sadd<uint8_t>(0xff, 0xff) == 0xff);
  44. }
  45. TEST_CASE("sample saturated add: int16_t")
  46. {
  47. // Underflow
  48. CHECK(lol::audio::sample::sadd<int16_t>(-0x8000, -0x8000) == -0x8000);
  49. CHECK(lol::audio::sample::sadd<int16_t>(-0x4001, -0x4001) == -0x8000);
  50. CHECK(lol::audio::sample::sadd<int16_t>(-0x4000, -0x4001) == -0x8000);
  51. // Standard operating mode
  52. CHECK(lol::audio::sample::sadd<int16_t>(-0x4000, -0x4000) == -0x8000);
  53. CHECK(lol::audio::sample::sadd<int16_t>(-0x3fff, -0x3fff) == -0x7ffe);
  54. CHECK(lol::audio::sample::sadd<int16_t>(-0x0001, -0x0001) == -0x0002);
  55. CHECK(lol::audio::sample::sadd<int16_t>(-0x0001, 0x0000) == -0x0001);
  56. CHECK(lol::audio::sample::sadd<int16_t>( 0x0000, 0x0000) == 0x0000);
  57. CHECK(lol::audio::sample::sadd<int16_t>( 0x0000, 0x0001) == 0x0001);
  58. CHECK(lol::audio::sample::sadd<int16_t>( 0x0001, 0x0001) == 0x0002);
  59. CHECK(lol::audio::sample::sadd<int16_t>( 0x3fff, 0x3fff) == 0x7ffe);
  60. CHECK(lol::audio::sample::sadd<int16_t>( 0x3fff, 0x4000) == 0x7fff);
  61. // Overflow
  62. CHECK(lol::audio::sample::sadd<int16_t>( 0x4000, 0x4000) == 0x7fff);
  63. CHECK(lol::audio::sample::sadd<int16_t>( 0x7fff, 0x7fff) == 0x7fff);
  64. }
  65. TEST_CASE("sample saturated add: uint16_t")
  66. {
  67. // Underflow
  68. CHECK(lol::audio::sample::sadd<uint16_t>(0x0000, 0x0000) == 0x0000);
  69. CHECK(lol::audio::sample::sadd<uint16_t>(0x3fff, 0x3fff) == 0x0000);
  70. // Standard operating mode
  71. CHECK(lol::audio::sample::sadd<uint16_t>(0x4000, 0x4000) == 0x0000);
  72. CHECK(lol::audio::sample::sadd<uint16_t>(0x4001, 0x4001) == 0x0002);
  73. CHECK(lol::audio::sample::sadd<uint16_t>(0x7fff, 0x7fff) == 0x7ffe);
  74. CHECK(lol::audio::sample::sadd<uint16_t>(0x7fff, 0x8000) == 0x7fff);
  75. CHECK(lol::audio::sample::sadd<uint16_t>(0x8000, 0x8000) == 0x8000);
  76. CHECK(lol::audio::sample::sadd<uint16_t>(0x8000, 0x8001) == 0x8001);
  77. CHECK(lol::audio::sample::sadd<uint16_t>(0x8001, 0x8001) == 0x8002);
  78. CHECK(lol::audio::sample::sadd<uint16_t>(0xbfff, 0xbfff) == 0xfffe);
  79. CHECK(lol::audio::sample::sadd<uint16_t>(0xbfff, 0xc000) == 0xffff);
  80. // Overflow
  81. CHECK(lol::audio::sample::sadd<uint16_t>(0xc000, 0xc000) == 0xffff);
  82. CHECK(lol::audio::sample::sadd<uint16_t>(0xffff, 0xffff) == 0xffff);
  83. }
  84. TEST_CASE("sample saturated add: uint32_t")
  85. {
  86. // Underflow
  87. CHECK(lol::audio::sample::sadd<uint32_t>(0x00000000, 0x00000000) == 0x00000000);
  88. CHECK(lol::audio::sample::sadd<uint32_t>(0x3fffffff, 0x3fffffff) == 0x00000000);
  89. // Standard operating mode
  90. CHECK(lol::audio::sample::sadd<uint32_t>(0x40000000, 0x40000000) == 0x00000000);
  91. CHECK(lol::audio::sample::sadd<uint32_t>(0x40000001, 0x40000001) == 0x00000002);
  92. CHECK(lol::audio::sample::sadd<uint32_t>(0x7fffffff, 0x7fffffff) == 0x7ffffffe);
  93. CHECK(lol::audio::sample::sadd<uint32_t>(0x7fffffff, 0x80000000) == 0x7fffffff);
  94. CHECK(lol::audio::sample::sadd<uint32_t>(0x80000000, 0x80000000) == 0x80000000);
  95. CHECK(lol::audio::sample::sadd<uint32_t>(0x80000000, 0x80000001) == 0x80000001);
  96. CHECK(lol::audio::sample::sadd<uint32_t>(0x80000001, 0x80000001) == 0x80000002);
  97. CHECK(lol::audio::sample::sadd<uint32_t>(0xbfffffff, 0xbfffffff) == 0xfffffffe);
  98. CHECK(lol::audio::sample::sadd<uint32_t>(0xbfffffff, 0xc0000000) == 0xffffffff);
  99. // Overflow
  100. CHECK(lol::audio::sample::sadd<uint32_t>(0xc0000000, 0xc0000000) == 0xffffffff);
  101. CHECK(lol::audio::sample::sadd<uint32_t>(0xffffffff, 0xffffffff) == 0xffffffff);
  102. }
  103. TEST_CASE("sample saturated add: int32_t")
  104. {
  105. // Underflow
  106. CHECK(lol::audio::sample::sadd<int32_t>(-0x80000000, -0x80000000) == -0x80000000);
  107. CHECK(lol::audio::sample::sadd<int32_t>(-0x40000001, -0x40000001) == -0x80000000);
  108. CHECK(lol::audio::sample::sadd<int32_t>(-0x40000000, -0x40000001) == -0x80000000);
  109. // Standard operating mode
  110. CHECK(lol::audio::sample::sadd<int32_t>(-0x40000000, -0x40000000) == -0x80000000);
  111. CHECK(lol::audio::sample::sadd<int32_t>(-0x3fffffff, -0x3fffffff) == -0x7ffffffe);
  112. CHECK(lol::audio::sample::sadd<int32_t>(-0x00000001, -0x00000001) == -0x00000002);
  113. CHECK(lol::audio::sample::sadd<int32_t>(-0x00000001, 0x00000000) == -0x00000001);
  114. CHECK(lol::audio::sample::sadd<int32_t>( 0x00000000, 0x00000000) == 0x00000000);
  115. CHECK(lol::audio::sample::sadd<int32_t>( 0x00000000, 0x00000001) == 0x00000001);
  116. CHECK(lol::audio::sample::sadd<int32_t>( 0x00000001, 0x00000001) == 0x00000002);
  117. CHECK(lol::audio::sample::sadd<int32_t>( 0x3fffffff, 0x3fffffff) == 0x7ffffffe);
  118. CHECK(lol::audio::sample::sadd<int32_t>( 0x3fffffff, 0x40000000) == 0x7fffffff);
  119. // Overflow
  120. CHECK(lol::audio::sample::sadd<int32_t>( 0x40000000, 0x40000000) == 0x7fffffff);
  121. CHECK(lol::audio::sample::sadd<int32_t>( 0x7fffffff, 0x7fffffff) == 0x7fffffff);
  122. }
  123. TEST_CASE("sample saturated add: uint64_t")
  124. {
  125. // Underflow
  126. CHECK(lol::audio::sample::sadd<uint64_t>(0x0000000000000000, 0x0000000000000000) == 0x0000000000000000);
  127. CHECK(lol::audio::sample::sadd<uint64_t>(0x3fffffffffffffff, 0x3fffffffffffffff) == 0x0000000000000000);
  128. // Standard operating mode
  129. CHECK(lol::audio::sample::sadd<uint64_t>(0x4000000000000000, 0x4000000000000000) == 0x0000000000000000);
  130. CHECK(lol::audio::sample::sadd<uint64_t>(0x4000000000000001, 0x4000000000000001) == 0x0000000000000002);
  131. CHECK(lol::audio::sample::sadd<uint64_t>(0x7fffffffffffffff, 0x7fffffffffffffff) == 0x7ffffffffffffffe);
  132. CHECK(lol::audio::sample::sadd<uint64_t>(0x7fffffffffffffff, 0x8000000000000000) == 0x7fffffffffffffff);
  133. CHECK(lol::audio::sample::sadd<uint64_t>(0x8000000000000000, 0x8000000000000000) == 0x8000000000000000);
  134. CHECK(lol::audio::sample::sadd<uint64_t>(0x8000000000000000, 0x8000000000000001) == 0x8000000000000001);
  135. CHECK(lol::audio::sample::sadd<uint64_t>(0x8000000000000001, 0x8000000000000001) == 0x8000000000000002);
  136. CHECK(lol::audio::sample::sadd<uint64_t>(0xbfffffffffffffff, 0xbfffffffffffffff) == 0xfffffffffffffffe);
  137. CHECK(lol::audio::sample::sadd<uint64_t>(0xbfffffffffffffff, 0xc000000000000000) == 0xffffffffffffffff);
  138. // Overflow
  139. CHECK(lol::audio::sample::sadd<uint64_t>(0xc000000000000000, 0xc000000000000000) == 0xffffffffffffffff);
  140. CHECK(lol::audio::sample::sadd<uint64_t>(0xffffffffffffffff, 0xffffffffffffffff) == 0xffffffffffffffff);
  141. }
  142. TEST_CASE("sample saturated add: int64_t")
  143. {
  144. // Underflow
  145. CHECK(lol::audio::sample::sadd<int64_t>(-0x8000000000000000, -0x8000000000000000) == -0x8000000000000000);
  146. CHECK(lol::audio::sample::sadd<int64_t>(-0x4000000000000001, -0x4000000000000001) == -0x8000000000000000);
  147. CHECK(lol::audio::sample::sadd<int64_t>(-0x4000000000000000, -0x4000000000000001) == -0x8000000000000000);
  148. // Standard operating mode
  149. CHECK(lol::audio::sample::sadd<int64_t>(-0x4000000000000000, -0x4000000000000000) == -0x8000000000000000);
  150. CHECK(lol::audio::sample::sadd<int64_t>(-0x3fffffffffffffff, -0x3fffffffffffffff) == -0x7ffffffffffffffe);
  151. CHECK(lol::audio::sample::sadd<int64_t>(-0x0000000000000001, -0x0000000000000001) == -0x0000000000000002);
  152. CHECK(lol::audio::sample::sadd<int64_t>(-0x0000000000000001, 0x0000000000000000) == -0x0000000000000001);
  153. CHECK(lol::audio::sample::sadd<int64_t>( 0x0000000000000000, 0x0000000000000000) == 0x0000000000000000);
  154. CHECK(lol::audio::sample::sadd<int64_t>( 0x0000000000000000, 0x0000000000000001) == 0x0000000000000001);
  155. CHECK(lol::audio::sample::sadd<int64_t>( 0x0000000000000001, 0x0000000000000001) == 0x0000000000000002);
  156. CHECK(lol::audio::sample::sadd<int64_t>( 0x3fffffffffffffff, 0x3fffffffffffffff) == 0x7ffffffffffffffe);
  157. CHECK(lol::audio::sample::sadd<int64_t>( 0x3fffffffffffffff, 0x4000000000000000) == 0x7fffffffffffffff);
  158. // Overflow
  159. CHECK(lol::audio::sample::sadd<int64_t>( 0x4000000000000000, 0x4000000000000000) == 0x7fffffffffffffff);
  160. CHECK(lol::audio::sample::sadd<int64_t>( 0x7fffffffffffffff, 0x7fffffffffffffff) == 0x7fffffffffffffff);
  161. }
  162. */