oodle

package module
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 26, 2025 License: MIT Imports: 11 Imported by: 1

README

go-oodle-lz

Go wrapper for OodleLZ

Compress
compressedData, err := oodle.Compress(oodle.CompressorKraken, data, oodle.CompressionLevelMax)
Decompress
decompressedData, err := oodle.Decompress(compressedData, outputSize)
Reader
rc, err := oodle.NewReader(r, uncompSize)
if err != nil {
	log.Fatalf("failed to create reader: %v", err)
}
defer rc.Close()

Notes

  • WIP. Library API can be changed in the future

Author

Aleksandr Zelenin, e-mail: aleksandr@zelenin.me

Documentation

Index

Constants

View Source
const (
	BLOCK_LEN   = 1 << 18
	QUANTUM_LEN = 1 << 14
)

Variables

This section is empty.

Functions

func CheckSeekTableCrcs

func CheckSeekTableCrcs(rawBuf []byte, rawLen int, seekTable *SeekTable) bool

func Compress

func Compress(compressor Compressor, rawBuf []byte, compressionLevel CompressionLevel) ([]byte, error)

func CompressOptionsValidate

func CompressOptionsValidate(pOptions *CompressOptions)

func CompressionLevelGetName

func CompressionLevelGetName(compressSelect CompressionLevel) string

func CompressorGetName

func CompressorGetName(compressor Compressor) string

func DecoderDestroy

func DecoderDestroy(decoder Decoder)

func DecoderMemorySizeNeeded

func DecoderMemorySizeNeeded(compressor Compressor, rawLen int) (int32, error)

func DecoderReset

func DecoderReset(decoder Decoder, decPos int, decLen int) bool

func Decompress

func Decompress(compBuf []byte, rawLen int) ([]byte, error)

func FillSeekTable

func FillSeekTable(pTable *SeekTable, flags SeekTableFlags, seekChunkLen int32, rawBuf []byte, rawLen int, compBuf []byte, compLen int) bool

func FindSeekEntry

func FindSeekEntry(rawPos int64, seekTable *SeekTable) int32

func FreeSeekTable

func FreeSeekTable(pTable *SeekTable)

func GetCompressScratchMemBound

func GetCompressScratchMemBound(compressor Compressor, level CompressionLevel, rawLen int, pOptions *CompressOptions) int

func GetCompressScratchMemBoundEx

func GetCompressScratchMemBoundEx(compressor Compressor, level CompressionLevel, boundType CompressScratchMemBoundType, rawLen int, pOptions *CompressOptions) int

func GetCompressedBufferSizeNeeded

func GetCompressedBufferSizeNeeded(compressor Compressor, rawSize int) int

func GetCompressedStepForRawStep

func GetCompressedStepForRawStep(comp []byte, compAvail int, startRawPos int, rawSeekBytes int, pEndRawPos *int, pIndependent *int) int

func GetDecodeBufferSize

func GetDecodeBufferSize(compressor Compressor, rawSize int, corruptionPossible bool) int

func GetInPlaceDecodeBufferSize

func GetInPlaceDecodeBufferSize(compressor Compressor, compLen int, rawLen int) int

func GetNumSeekChunks

func GetNumSeekChunks(rawLen int64, seekChunkLen int32) int32

func GetSeekEntryPackedPos

func GetSeekEntryPackedPos(seekI int32, seekTable *SeekTable) int64

func GetSeekTableMemorySizeNeeded

func GetSeekTableMemorySizeNeeded(numSeekChunks int32, flags SeekTableFlags) int

func JobifyGetName

func JobifyGetName(jobify Jobify) string

func MakeSeekChunkLen

func MakeSeekChunkLen(rawLen int64, desiredSeekPointCount int32) int32

func MakeValidCircularWindowSize

func MakeValidCircularWindowSize(compressor Compressor, minWindowSize int32) int32

func ThreadPhasedBlockDecoderMemorySizeNeeded

func ThreadPhasedBlockDecoderMemorySizeNeeded() int32

Types

type CheckCrc

type CheckCrc int
const (
	CheckCRCNo      CheckCrc = 0
	CheckCRCYes     CheckCrc = 1
	CheckCRCForce32 CheckCrc = 0x40000000
)

type CompressOptions

type CompressOptions struct {
	UnusedWasVerbosity           uint32
	MinMatchLen                  int32
	SeekChunkReset               bool
	SeekChunkLen                 int32
	Profile                      Profile
	DictionarySize               int32
	SpaceSpeedTradeoffBytes      int32
	UnusedWasMaxHuffmansPerChunk int32
	SendQuantumCRCs              bool
	MaxLocalDictionarySize       int32
	MakeLongRangeMatcher         bool
	MatchTableSizeLog2           int32
	Jobify                       Jobify
	JobifyUserPtr                unsafe.Pointer
	FarMatchMinLen               int32
	FarMatchOffsetLog2           int32
	Reserved                     uint32
}

func CompressOptionsGetDefault

func CompressOptionsGetDefault(compressor Compressor, lzLevel CompressionLevel) *CompressOptions

type CompressScratchMemBoundType

type CompressScratchMemBoundType int
const (
	CompressScratchMemBoundTypeWorstCase CompressScratchMemBoundType = 0
	CompressScratchMemBoundTypeTypical   CompressScratchMemBoundType = 1
	CompressScratchMemBoundTypeForce32   CompressScratchMemBoundType = 0x40000000
)

type CompressionLevel

type CompressionLevel int
const (
	CompressionLevelNone       CompressionLevel = 0
	CompressionLevelSuperFast  CompressionLevel = 1
	CompressionLevelVeryFast   CompressionLevel = 2
	CompressionLevelFast       CompressionLevel = 3
	CompressionLevelNormal     CompressionLevel = 4
	CompressionLevelOptimal1   CompressionLevel = 5
	CompressionLevelOptimal2   CompressionLevel = 6
	CompressionLevelOptimal3   CompressionLevel = 7
	CompressionLevelOptimal4   CompressionLevel = 8
	CompressionLevelOptimal5   CompressionLevel = 9
	CompressionLevelHyperFast1 CompressionLevel = -1
	CompressionLevelHyperFast2 CompressionLevel = -2
	CompressionLevelHyperFast3 CompressionLevel = -3
	CompressionLevelHyperFast4 CompressionLevel = -4
	CompressionLevelHyperFast  CompressionLevel = CompressionLevelHyperFast1
	CompressionLevelOptimal    CompressionLevel = CompressionLevelOptimal2
	CompressionLevelMax        CompressionLevel = CompressionLevelOptimal5
	CompressionLeve_Min        CompressionLevel = CompressionLevelHyperFast4
	CompressionLevelForce32    CompressionLevel = 0x40000000
	CompressionLevelInvalid    CompressionLevel = CompressionLevelForce32
)

type Compressor

type Compressor int
const (
	CompressorInvalid Compressor = -1
	CompressorNone    Compressor = 3
	// new compressors
	CompressorKraken    Compressor = 8
	CompressorLeviathan Compressor = 13
	CompressorMermaid   Compressor = 9
	CompressorSelkie    Compressor = 11
	CompressorHydra     Compressor = 12
	// deprecated compressors
	CompressorBitKnit Compressor = 10
	CompressorLZB16   Compressor = 4
	CompressorLZNA    Compressor = 7
	CompressorLZH     Compressor = 0
	CompressorLZHLW   Compressor = 1
	CompressorLZNIB   Compressor = 2
	CompressorLZBLW   Compressor = 5
	CompressorLZA     Compressor = 6
	//
	CompressorCount   Compressor = 14
	CompressorForce32 Compressor = 0x40000000
)

func GetAllChunksCompressor

func GetAllChunksCompressor(compBuf []byte, compBufSize int, rawLen int) Compressor

func GetChunkCompressor

func GetChunkCompressor(compChunk []byte, compBufAvail int, pIndependent *bool) Compressor

func GetConfigValues

func GetConfigValues(configValues *ConfigValues) Compressor

func GetFirstChunkCompressor

func GetFirstChunkCompressor(compChunk []byte, compBufAvail int, pIndependent *bool) Compressor

type ConfigValues

type ConfigValues struct {
	LZLWLRMStep                       int32
	LZLWLRMHashLength                 int32
	LZLWLRMJumpbits                   int32
	LZDecoderMaxStackSize             int32
	LZSmallBufferLZFallbackSizeUnused int32
	LZBackwardsCompatibleMajorVersion int32
	HeaderVersion                     uint32
}

type DecodeSomeOut

type DecodeSomeOut struct {
	DecodedCount      int32
	CompBufUsed       int32
	CurQuantumRawLen  int32
	CurQuantumCompLen int32
}

func DecoderDecodeSome

func DecoderDecodeSome(decoder Decoder, decBuf []byte, decBufPos int, decBufferSize int, decBufAvail int, compPtr []byte, fuzzSafe FuzzSafe, checkCrc CheckCrc, verbosity Verbosity, threadPhase DecodeThreadPhase) (*DecodeSomeOut, error)

type DecodeThreadPhase

type DecodeThreadPhase int
const (
	DecodeThreadPhase1   DecodeThreadPhase = 1
	DecodeThreadPhase2   DecodeThreadPhase = 2
	DecodeThreadPhaseAll DecodeThreadPhase = 3
	DecodeUnthreaded     DecodeThreadPhase = DecodeThreadPhaseAll
)

type Decoder

type Decoder uintptr

func DecoderCreate

func DecoderCreate(compressor Compressor, rawLen int64, memory []byte) Decoder

type DecompressCallback

type DecompressCallback func(unsafe.Pointer, unsafe.Pointer, int, unsafe.Pointer, int, int, int)

type DecompressCallbackRet

type DecompressCallbackRet int
const (
	DecompressCallbackRetContinue DecompressCallbackRet = 0
	DecompressCallbackRetCancel   DecompressCallbackRet = 1
	DecompressCallbackRetInvalid  DecompressCallbackRet = 2
	DecompressCallbackRetForce32  DecompressCallbackRet = 0x40000000
)

type FuzzSafe

type FuzzSafe int
const (
	FuzzSafeNo  FuzzSafe = 0
	FuzzSafeYes FuzzSafe = 1
)

type Jobify

type Jobify int
const (
	JobifyDefault    Jobify = 0
	JobifyDisable    Jobify = 1
	JobifyNormal     Jobify = 2
	JobifyAggressive Jobify = 3
	JobifyCount      Jobify = 4
	JobifyForce32    Jobify = 0x40000000
)

type PackedRawOverlap

type PackedRawOverlap int
const (
	PackedRawOverlapNo      PackedRawOverlap = 0
	PackedRawOverlapYes     PackedRawOverlap = 1
	PackedRawOverlapForce32 PackedRawOverlap = 0x40000000
)

type Profile

type Profile int
const (
	ProfileMain    Profile = 0
	ProfileReduced Profile = 1
	ProfileForce32 Profile = 0x40000000
)

type Reader

type Reader struct {
	// contains filtered or unexported fields
}

func NewReader

func NewReader(r io.Reader, outSize int64) (*Reader, error)

func (*Reader) Close

func (r *Reader) Close() error

func (*Reader) Read

func (r *Reader) Read(p []byte) (int, error)

type SeekTable

type SeekTable struct {
	Compressor            Compressor
	SeekChunksIndependent bool
	TotalRawLen           int64
	TotalCompLen          int64
	NumSeekChunks         int32
	SeekChunkLen          int32
	SeekChunkCompLens     []uint32
	RawCrcs               []uint32
}

func CreateSeekTable

func CreateSeekTable(flags SeekTableFlags, seekChunkLen int32, rawBuf []byte, rawLen int, compBuf []byte, compLen int) *SeekTable

type SeekTableFlags

type SeekTableFlags int
const (
	SeekTableFlagsNone        SeekTableFlags = 0
	SeekTableFlagsMakeRawCRCs SeekTableFlags = 1
	SeekTableFlagsForce32     SeekTableFlags = 0x40000000
)

type Verbosity

type Verbosity int
const (
	VerbosityNone    Verbosity = 0
	VerbosityMinimal Verbosity = 1
	VerbositySome    Verbosity = 2
	VerbosityLots    Verbosity = 3
	VerbosityForce32 Verbosity = 0x40000000
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL