MCPcopy
hub / github.com/klauspost/compress / MaxEncodedSize

Method MaxEncodedSize

zstd/encoder.go:843–873  ·  view source on GitHub ↗

MaxEncodedSize returns the expected maximum size of an encoded block or stream.

(size int)

Source from the content-addressed store, hash-verified

841// MaxEncodedSize returns the expected maximum
842// size of an encoded block or stream.
843func (e *Encoder) MaxEncodedSize(size int) int {
844 frameHeader := 4 + 2 // magic + frame header & window descriptor
845 if e.o.dict != nil {
846 frameHeader += 4
847 }
848 // Frame content size:
849 if size < 256 {
850 frameHeader++
851 } else if size < 65536+256 {
852 frameHeader += 2
853 } else if size < math.MaxInt32 {
854 frameHeader += 4
855 } else {
856 frameHeader += 8
857 }
858 // Final crc
859 if e.o.crc {
860 frameHeader += 4
861 }
862
863 // Max overhead is 3 bytes/block.
864 // There cannot be 0 blocks.
865 blocks := (size + e.o.blockSize) / e.o.blockSize
866
867 // Combine, add padding.
868 maxSz := frameHeader + 3*blocks + size
869 if e.o.pad > 1 {
870 maxSz += calcSkippableFrame(int64(maxSz), int64(e.o.pad))
871 }
872 return maxSz
873}

Callers 4

FuzzEncodingFunction · 0.80
TestEncoderRegressionFunction · 0.80

Calls 1

calcSkippableFrameFunction · 0.70

Tested by 4

FuzzEncodingFunction · 0.64
TestEncoderRegressionFunction · 0.64