5 namespace SiliconStudio.Core.LZ4.Services
7 internal class Native64LZ4Service : NativeLZ4Base, ILZ4Service
9 public string CodecName
11 get {
return string.Format(
"NativeMode {0}", IntPtr.Size == 4 ?
"32" :
"64"); }
14 public unsafe
int Decode(byte[] input,
int inputOffset,
int inputLength, byte[] output,
int outputOffset,
int outputLength,
bool knownOutputLength)
16 fixed (byte* pInput = input)
17 fixed (byte* pOutput = output)
19 if (knownOutputLength)
21 I64_LZ4_uncompress(pInput + inputOffset, pOutput + outputOffset, outputLength);
26 return I64_LZ4_uncompress_unknownOutputSize(pInput + inputOffset, pOutput + outputOffset, inputLength, outputLength);
30 public unsafe
int Encode(byte[] input,
int inputOffset,
int inputLength, byte[] output,
int outputOffset,
int outputLength)
32 fixed (byte* pInput = input)
33 fixed (byte* pOutput = output)
35 return I64_LZ4_compress_limitedOutput(pInput + inputOffset, pOutput + outputOffset, inputLength, outputLength);
39 public unsafe
int EncodeHC(byte[] input,
int inputOffset,
int inputLength, byte[] output,
int outputOffset,
int outputLength)
41 fixed (byte* pInput = input)
42 fixed (byte* pOutput = output)
44 return I64_LZ4_compressHC_limitedOutput(pInput + inputOffset, pOutput + outputOffset, inputLength, outputLength);