Releases: ReferenceType/H264Sharp
v1.6.0
Release Notes
Android Support
- Added support for android Arm and X86.
- Tested on Pixel 6 pro with Maui app.
YUV NV12 encode support
- Since most cameras provide native NV12 YUV output, direct encoding support is provided.
Decoder RGBA support
- Decoder now can decode into RGB BGR RGBA BGRA instead of only RGB.
RgbImage Corp support
- RgbImage supports cropping a region without copy
- RgbImage supports aspect ratio adjustment via cropping
NuGet Native
NuGet release now installs and resolves native libraries on all platforms.
Miscellaneous
- Bug Fix on YUV luminance overflow.
- Bug Fix on Neon Converters when number of threads are more than 1.
- Bug Fix on 32 bit RGB image Downscale.
- On runtime Cisco dll load, C++ side doesn't throw exceptions instead returning error
- Optimized Custom Thread Pool.
- Added 64 byte aligned native memory allocation support on Converter which all native allocations use.
- Added optimized SSE Converters as fallback for AVX2.
- Added new pre-configurations for parallel encoder
ConfigType.CameraCaptureAdvancedHP
andScreenCaptureAdvancedHp
- Unified Encode and Decode RGB image container to be the same.
- Added singular options on converter instead of setting entire config.
- Simplified API.
- Extended the examples added benchmarks and tests
- Simplified WPF example.
Breaking Changes
Data classes are updated and following are removed:
class ImageData
ref struct RGBImagePointer
public bool Encode(ImageData im, out EncodedData[] ed)
public unsafe bool Encode(byte* YUV, out EncodedData[] ed)
public bool Decode(byte[] encoded, int offset, int count, bool noDelay, out DecodingState state, out RGBImagePointer img)
public bool Decode(EncodedData data, bool noDelay, out DecodingState state, out RGBImagePointer img)
Now use
public bool Encode(RgbImage im, out EncodedData[] ed)
public bool Encode(YUVImagePointer yuv, out EncodedData[] ed)
public bool Decode(EncodedData data, bool noDelay, out DecodingState state, ref RgbImage img)
public bool Decode(byte[] encoded, int offset, int count, bool noDelay, out DecodingState state, ref RgbImage img)
v1.5.0
Release Notes
ARM Support
- Added support for ARM 32-bit and 64-bit on Linux.
- The converter now utilizes NEON SIMD instructions for RGB ↔ YUV format conversions (64-bit version only).
- Successfully tested on Raspberry Pi 5.
AVX2 Support for x86
- Added AVX2 intrinsic support for RGB ↔ YUV format conversions.
- Achieves at least 2× speed up over SSE.
Unified DLL Import
- H264Sharp.dll no longer requires separate compilation for different platforms.
- A single DLL now dynamically imports cross-platform native dependencies at runtime.
Miscellaneous
- Debug logs are now disabled by default but can be optionally enabled for the encoder and decoder.
- Converter configuration is now unified under a single parameter.
- Bitmap extensions for Windows have been released!
Breaking Changes
The configuration system has been updated, and the following properties have been removed:
encoder.ConverterNumberOfThreads
decoder.ConverterNumberOfThreads
decoder.EnableSSEYUVConversion
Now use
var config = ConverterConfig.Default;
config.EnableSSE = 1;
config.EnableNeon = 1;
config.EnableAvx2 = 1;
config.NumThreads = 4;
config.EnableCustomThreadPool = 0;
Converter.SetConfig(config);
v1.4.1
- Removed Legacy C++/CLI verision of the project.
- Removed Encoder parameter print on initialise
v1.4.0
- Added parallelization support for image format converters for platforms other than Windows.
- Added Trace level options for Encoder/Decoder.
- Minor improvements.
H264Sharp contains the cross platform dll for .Net applications
Rest of the zip files are necessary native dlls/.so files depending on the platform.
Note: OpenH264 is not bumped into 2.5.0 due to bugs on LTR frame system.
v1.3.1
Release Notes
- Minor Bug fixes.
- Encoded Frames now dynamically allocated by using map.
v1.3.0
Release notes
- Added CMake
- Added linux support, tested on linux.
- Added downscale methods for Converter.
- Bumped cisco openh264 version to latest.
Note linux release will not be on Nuget yet. Please add .so files manually to your executable directory.
v1.2.0
- Extended wrapper for full functionality and all advanced features.
- Performance optiomisation on Image format conversions(YUV420<->RGB). It is now faster than OpenCV implementation.
v0.2.0
Release notes
- C++/CLI libraris are now deprecated.
- Added new library H264Pinvoke.
-
- Encoder and decoder is now handled with Pinvoke calls.
-
- Added nuget package https://www.nuget.org/packages/H264Sharp
-
- Dependencies and native dlls are automatically handled for 32 and 64 bit.
-
- Upgraded OpenH264 to v2.4.0
-
- Bug fixes and betterr memory management.
v0.1.3
Release Notes:
- Added runtime check for AVX2 instruction support before loading Converter Dlls.
- Enabled SSEI on encoder
- Decoder .Decode() will now return true when !dsErrorFree cases, if frame is possible to retrieve. This means we still have a stream but there is an error in the sequence.(you might see artifacts) Check the status code from decode and request IDR(Key Frame) frame from encoding end. This is done due to freezing while waiting for IDR on realtime streaming.
Usage:
H264Sharp dll is directly usable on your C# project, just reference it.
Cisco's openh264 dll must be added on executable directory.
Optionally you can add converter dll on your executable directory. Its recommended if your CPU support AVX2 instructions.
v0.1.2
Release notes:
- Added runtime fps and bit-rate control
H264Sharp dll is directly usable on your C# project, just reference it.
Cisco's openh264 dll must be added on executable directory.
Optionally you can add converter dll on your executable directory. Its recommended if your CPU support AVX2 instructions.