Versions in this module Expand all Collapse all v1 v1.0.1 Jun 30, 2026 v1.0.0 Jun 30, 2026 Changes in this version + const APP11HeaderDataSize + const ExtTypeLossless + const FlagAlphaChannel + const FlagLossless + const FlagPremultipliedAlpha + const MarkerAPP11 + const MarkerEOI + const MarkerSOI + const MaxErrorBound + const MinAPP11HeaderSize + var ErrAlphaChannelError = errors.New("alpha channel decoding error") + var ErrFloatExponentOverflow = errors.New("floating-point exponent overflow") + var ErrHDRRangeExceeded = errors.New("HDR dynamic range exceeded") + var ErrInvalidAPP11 = errors.New("invalid APP11 marker") + var ErrInvalidColorSpace = errors.New("invalid color space") + var ErrInvalidHeader = errors.New("invalid APP11 header structure") + var ErrInvalidMergeOperation = errors.New("invalid HDR merge operation") + var ErrInvalidProfile = errors.New("invalid JPEG XT profile indicator") + var ErrInvalidRefinement = errors.New("invalid refinement scan data") + var ErrInvalidResidual = errors.New("invalid residual coding data") + var ErrInvalidToneMapOperator = errors.New("invalid tone mapping operator") + var ErrMissingBaseLayer = errors.New("missing or invalid base layer") + var ErrMissingExtension = errors.New("missing HDR extension data") + var ErrToneMapIterationLimit = errors.New("tone mapping iteration limit exceeded") + var ErrTruncatedExtension = errors.New("truncated extension data") + var ErrUnsupportedProfile = errors.New("unsupported JPEG XT profile") + var ErrVersionMismatch = errors.New("JPEG XT version mismatch") + var JPEGXTNamespace = []byte("XT\x00") + func HDRToSDR(hdr []float32, toneMapper ToneMapper) ([]uint8, error) + func HDRToSDR16(hdr []float32, toneMapper ToneMapper) ([]uint16, error) + type APP11Header struct + ExtensionType ExtensionType + Flags uint8 + Length uint16 + Namespace [3]byte + Profile Profile + Reserved [2]byte + Version uint8 + func (h *APP11Header) IsJPEGXT() bool + func (h *APP11Header) Validate() error + type AlphaChannelData struct + AlphaPlane []uint8 + AlphaPlane16 []uint16 + BitDepth int + Height int + Premultiplied bool + Width int + func (a *AlphaChannelData) Encode() []byte + type ColorSpace uint8 + const ColorSpaceBT2020 + const ColorSpaceDisplayP3 + const ColorSpaceRGB + const ColorSpaceUnknown + const ColorSpaceXYZ + func (c ColorSpace) String() string + type ExposureToneMapper struct + func NewExposureToneMapper(params *ToneMapParams) *ExposureToneMapper + func (e *ExposureToneMapper) GetParams() *ToneMapParams + func (e *ExposureToneMapper) GetType() ToneMapOperatorType + func (e *ExposureToneMapper) ToneMap(hdr []float32) ([]float32, error) + type ExtensionData struct + Header APP11Header + Offset int64 + RawData []byte + Type ExtensionType + func (e *ExtensionData) Validate() error + type ExtensionType uint8 + const ExtTypeAlpha + const ExtTypeColorInfo + const ExtTypeFloat + const ExtTypeInteger16 + const ExtTypeMetadata + const ExtTypeRefinement + const ExtTypeResidual + const ExtTypeToneMap + func (e ExtensionType) String() string + type FilmicToneMapper struct + func NewFilmicToneMapper(params *ToneMapParams) *FilmicToneMapper + func (f *FilmicToneMapper) GetParams() *ToneMapParams + func (f *FilmicToneMapper) GetType() ToneMapOperatorType + func (f *FilmicToneMapper) ToneMap(hdr []float32) ([]float32, error) + type FloatHDRData struct + ComponentCount uint8 + DynamicRange float32 + Exponent []int8 + Height int + Mantissa []uint16 + MaxLuminance float32 + MinLuminance float32 + Width int + func (f *FloatHDRData) Validate() error + type HDRDecoder struct + func NewHDRDecoder() *HDRDecoder + func (d *HDRDecoder) ApplyInverseToneMap(sdrData []float32) ([]float32, error) + func (d *HDRDecoder) DecodeSDR(baseLayer []int) ([]uint8, error) + func (d *HDRDecoder) DecodeToFloat32(baseLayer []int, extensionData []byte) ([]float32, error) + func (d *HDRDecoder) DecodeToUint16(baseLayer []int, extensionData []byte) ([]uint16, error) + func (d *HDRDecoder) GetImageInfo() *ImageInfo + func (d *HDRDecoder) MergeBaseAndExtension(baseLayer []int, extensionData []byte) ([]int, error) + func (d *HDRDecoder) SetDimensions(width, height, componentCount int) error + func (d *HDRDecoder) SetIgnoreExtension(ignore bool) + func (d *HDRDecoder) SetMetadata(metadata *HDRMetadata) + func (d *HDRDecoder) SetProfile(profile Profile) + func (d *HDRDecoder) SetToneMapParams(params *ToneMapParams) + func (d *HDRDecoder) ValidateOutputSize(bytesPerSample int) error + type HDREncoder struct + func NewHDREncoder() *HDREncoder + func (e *HDREncoder) Configure(width, height, componentCount int) error + func (e *HDREncoder) Encode(w io.Writer, hdrData []float32) error + func (e *HDREncoder) EncodeToneMapParams() ([]byte, error) + func (e *HDREncoder) GenerateBaseLayer(w io.Writer, hdrData []float32) (int, error) + func (e *HDREncoder) GenerateExtensionData(hdrData []float32) ([]byte, error) + func (e *HDREncoder) SetMetadata(metadata *HDRMetadata) + func (e *HDREncoder) SetProfile(profile Profile) + func (e *HDREncoder) SetQuality(quality int) + func (e *HDREncoder) SetToneMapParams(params *ToneMapParams) + func (e *HDREncoder) WriteAPP11Marker(w io.Writer, extType ExtensionType, data []byte) error + type HDRMetadata struct + ColorSpace ColorSpace + MaxContentLightLevel float32 + MaxFrameAverageLightLevel float32 + MaxLuminance float32 + MinLuminance float32 + PrimaryBlueX float32 + PrimaryBlueY float32 + PrimaryGreenX float32 + PrimaryGreenY float32 + PrimaryRedX float32 + PrimaryRedY float32 + WhitePointX float32 + WhitePointY float32 + func (m *HDRMetadata) Validate() error + type ImageInfo struct + BitDepth int + ColorSpace ColorSpace + ComponentCount int + DynamicRange float32 + HasAlpha bool + Height int + IsHDR bool + Metadata *HDRMetadata + Profile Profile + ToneMapParams *ToneMapParams + Width int + func (i *ImageInfo) GetOutputSize(bytesPerSample int) (int, error) + func (i *ImageInfo) Validate() error + type Integer16HDRData struct + ComponentCount uint8 + GammaValue float32 + Height int + LinearGamma bool + PixelData []uint16 + Width int + func (i *Integer16HDRData) Validate() error + type NearLosslessDecoder struct + func NewNearLosslessDecoder() *NearLosslessDecoder + func (d *NearLosslessDecoder) DecodeNearLosslessExt(extensionData []byte) ([]uint16, error) + func (d *NearLosslessDecoder) DetectLosslessProfile(header *APP11Header) bool + func (d *NearLosslessDecoder) IsLossless() bool + func (d *NearLosslessDecoder) MergeColorAndAlpha(rgbData, alphaData []uint8) ([]uint8, error) + func (d *NearLosslessDecoder) MergeColorAndAlpha16(rgbData, alphaData []uint16) ([]uint16, error) + func (d *NearLosslessDecoder) ParseAlphaExtension(data []byte) (*AlphaChannelData, error) + func (d *NearLosslessDecoder) SetDimensions(width, height, componentCount int) error + func (d *NearLosslessDecoder) SetErrorBound(bound int) error + type Parser struct + func NewParser(data []byte) *Parser + func NewParserWithOffset(data []byte, offset int64) *Parser + func (p *Parser) ParseAPP11Header() (*APP11Header, error) + func (p *Parser) ParseExtensionData() (*ExtensionData, error) + func (p *Parser) ParseRefinementData(ext *ExtensionData) (*RefinementData, error) + func (p *Parser) ParseResidualData(ext *ExtensionData) (*ResidualData, error) + type Profile uint8 + const ProfileA + const ProfileB + const ProfileC + const ProfileD + const ProfileUnknown + func (p Profile) IsValid() bool + func (p Profile) String() string + type RefinementData struct + BitPosition uint8 + BlockCount int + CoefficientData []byte + ComponentMask uint8 + ScanIndex uint8 + SuccessiveHigh uint8 + SuccessiveLow uint8 + func (r *RefinementData) Validate() error + type ReinhardToneMapper struct + func NewReinhardToneMapper(params *ToneMapParams) *ReinhardToneMapper + func (r *ReinhardToneMapper) GetParams() *ToneMapParams + func (r *ReinhardToneMapper) GetType() ToneMapOperatorType + func (r *ReinhardToneMapper) ToneMap(hdr []float32) ([]float32, error) + type ResidualData struct + BitDepth uint8 + ComponentCount uint8 + Height int + OffsetValue float32 + ResidualImage []byte + ResidualMode uint8 + ScaleFactor float32 + Width int + func (r *ResidualData) Validate() error + type ToneMapOperatorType uint8 + const TMOCustom + const TMOExposure + const TMOFilmic + const TMONone + const TMOReinhard + func (t ToneMapOperatorType) String() string + type ToneMapParams struct + CustomParams map[string]float32 + Exposure float32 + Gamma float32 + Key float32 + OperatorType ToneMapOperatorType + Saturation float32 + WhitePoint float32 + func NewDefaultToneMapParams() *ToneMapParams + func ParseToneMapParams(data []byte) (*ToneMapParams, error) + type ToneMapper interface + GetParams func() *ToneMapParams + GetType func() ToneMapOperatorType + ToneMap func(hdr []float32) ([]float32, error) + func CreateToneMapper(params *ToneMapParams) ToneMapper