diff --git a/docs/2026.html b/docs/2026.html index 85babbad78..6c298e28b6 100644 --- a/docs/2026.html +++ b/docs/2026.html @@ -77,6 +77,7 @@
New features
  • SVE2 optimizations of class ImagePgmBinSaver.
  • SVE2 optimizations of class ImagePpmTxtSaver.
  • SVE2 optimizations of class ImagePpmBinSaver.
  • +
  • SVE2 optimizations of class ImageBmpSaver.
  • C++ wrapper Simd::SynetAdd16b.
  • C++ wrapper Simd::SynetQuantizedAdd.
  • C++ wrapper Simd::SynetQuantizedMul.
  • diff --git a/src/Simd/SimdImageSave.h b/src/Simd/SimdImageSave.h index d1faf8a6fc..e327f1f3ea 100644 --- a/src/Simd/SimdImageSave.h +++ b/src/Simd/SimdImageSave.h @@ -519,6 +519,12 @@ namespace Simd ImagePpmBinSaver(const ImageSaverParam& param); }; + class ImageBmpSaver : public Neon::ImageBmpSaver + { + public: + ImageBmpSaver(const ImageSaverParam& param); + }; + //------------------------------------------------------------------------------------------------- uint8_t* ImageSaveToMemory(const uint8_t* src, size_t stride, size_t width, size_t height, SimdPixelFormatType format, SimdImageFileType file, int quality, size_t* size); diff --git a/src/Simd/SimdSve2ImageSave.cpp b/src/Simd/SimdSve2ImageSave.cpp index b0a8fae1bd..a6dbf0b21f 100644 --- a/src/Simd/SimdSve2ImageSave.cpp +++ b/src/Simd/SimdSve2ImageSave.cpp @@ -100,6 +100,20 @@ namespace Simd //------------------------------------------------------------------------------------------------- + ImageBmpSaver::ImageBmpSaver(const ImageSaverParam& param) + : Neon::ImageBmpSaver(param) + { + switch (_param.format) + { + case SimdPixelFormatGray8: _convert = NULL; break; + case SimdPixelFormatRgb24: _convert = Sve2::BgrToRgb; break; + case SimdPixelFormatRgba32: _convert = Sve2::BgraToRgba; break; + default: break; + } + } + + //------------------------------------------------------------------------------------------------- + ImageSaver* CreateImageSaver(const ImageSaverParam& param) { switch (param.file) @@ -110,7 +124,7 @@ namespace Simd case SimdImageFilePpmBin: return new ImagePpmBinSaver(param); case SimdImageFilePng: return new Neon::ImagePngSaver(param); case SimdImageFileJpeg: return new Neon::ImageJpegSaver(param); - case SimdImageFileBmp: return new Neon::ImageBmpSaver(param); + case SimdImageFileBmp: return new ImageBmpSaver(param); default: return NULL; }