Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/2026.html
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ <h5>New features</h5>
<li>SVE2 optimizations of class ImagePgmBinSaver.</li>
<li>SVE2 optimizations of class ImagePpmTxtSaver.</li>
<li>SVE2 optimizations of class ImagePpmBinSaver.</li>
<li>SVE2 optimizations of class ImageBmpSaver.</li>
<li>C++ wrapper Simd::SynetAdd16b.</li>
<li>C++ wrapper Simd::SynetQuantizedAdd.</li>
<li>C++ wrapper Simd::SynetQuantizedMul.</li>
Expand Down
6 changes: 6 additions & 0 deletions src/Simd/SimdImageSave.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
16 changes: 15 additions & 1 deletion src/Simd/SimdSve2ImageSave.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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;
}
Expand Down