From 4280eec265c80559cfe5f8cea92aba821fc193c2 Mon Sep 17 00:00:00 2001 From: Alessandro Ros Date: Sun, 13 Apr 2025 19:13:26 +0200 Subject: [PATCH] rpi: make sure all parameters are 32-bit (#4425) --- internal/staticsources/rpicamera/params.go | 34 +++++++++---------- .../rpicamera/params_serialize.go | 19 ++++++----- internal/staticsources/rpicamera/source.go | 34 +++++++++---------- 3 files changed, 44 insertions(+), 43 deletions(-) diff --git a/internal/staticsources/rpicamera/params.go b/internal/staticsources/rpicamera/params.go index 3ca84194..4099a577 100644 --- a/internal/staticsources/rpicamera/params.go +++ b/internal/staticsources/rpicamera/params.go @@ -2,40 +2,40 @@ package rpicamera type params struct { LogLevel string - CameraID uint - Width uint - Height uint + CameraID uint32 + Width uint32 + Height uint32 HFlip bool VFlip bool - Brightness float64 - Contrast float64 - Saturation float64 - Sharpness float64 + Brightness float32 + Contrast float32 + Saturation float32 + Sharpness float32 Exposure string AWB string - AWBGainRed float64 - AWBGainBlue float64 + AWBGainRed float32 + AWBGainBlue float32 Denoise string - Shutter uint + Shutter uint32 Metering string - Gain float64 - EV float64 + Gain float32 + EV float32 ROI string HDR bool TuningFile string Mode string - FPS float64 + FPS float32 AfMode string AfRange string AfSpeed string - LensPosition float64 + LensPosition float32 AfWindow string - FlickerPeriod uint + FlickerPeriod uint32 TextOverlayEnable bool TextOverlay string Codec string - IDRPeriod uint - Bitrate uint + IDRPeriod uint32 + Bitrate uint32 Profile string Level string } diff --git a/internal/staticsources/rpicamera/params_serialize.go b/internal/staticsources/rpicamera/params_serialize.go index d9e023b1..071f0f2f 100644 --- a/internal/staticsources/rpicamera/params_serialize.go +++ b/internal/staticsources/rpicamera/params_serialize.go @@ -15,21 +15,22 @@ func (p params) serialize() []byte { nf := rv.NumField() ret := make([]string, nf) - for i := 0; i < nf; i++ { + for i := range nf { entry := rt.Field(i).Name + ":" f := rv.Field(i) + v := f.Interface() - switch f.Kind() { - case reflect.Uint: - entry += strconv.FormatUint(f.Uint(), 10) + switch v := v.(type) { + case uint32: + entry += strconv.FormatUint(uint64(v), 10) - case reflect.Float64: - entry += strconv.FormatFloat(f.Float(), 'f', -1, 64) + case float32: + entry += strconv.FormatFloat(float64(v), 'f', -1, 64) - case reflect.String: - entry += base64.StdEncoding.EncodeToString([]byte(f.String())) + case string: + entry += base64.StdEncoding.EncodeToString([]byte(v)) - case reflect.Bool: + case bool: if f.Bool() { entry += "1" } else { diff --git a/internal/staticsources/rpicamera/source.go b/internal/staticsources/rpicamera/source.go index af32b3b8..83293aeb 100644 --- a/internal/staticsources/rpicamera/source.go +++ b/internal/staticsources/rpicamera/source.go @@ -27,40 +27,40 @@ func paramsFromConf(logLevel conf.LogLevel, cnf *conf.Path) params { } return "error" }(), - CameraID: cnf.RPICameraCamID, - Width: cnf.RPICameraWidth, - Height: cnf.RPICameraHeight, + CameraID: uint32(cnf.RPICameraCamID), + Width: uint32(cnf.RPICameraWidth), + Height: uint32(cnf.RPICameraHeight), HFlip: cnf.RPICameraHFlip, VFlip: cnf.RPICameraVFlip, - Brightness: cnf.RPICameraBrightness, - Contrast: cnf.RPICameraContrast, - Saturation: cnf.RPICameraSaturation, - Sharpness: cnf.RPICameraSharpness, + Brightness: float32(cnf.RPICameraBrightness), + Contrast: float32(cnf.RPICameraContrast), + Saturation: float32(cnf.RPICameraSaturation), + Sharpness: float32(cnf.RPICameraSharpness), Exposure: cnf.RPICameraExposure, AWB: cnf.RPICameraAWB, - AWBGainRed: cnf.RPICameraAWBGains[0], - AWBGainBlue: cnf.RPICameraAWBGains[1], + AWBGainRed: float32(cnf.RPICameraAWBGains[0]), + AWBGainBlue: float32(cnf.RPICameraAWBGains[1]), Denoise: cnf.RPICameraDenoise, - Shutter: cnf.RPICameraShutter, + Shutter: uint32(cnf.RPICameraShutter), Metering: cnf.RPICameraMetering, - Gain: cnf.RPICameraGain, - EV: cnf.RPICameraEV, + Gain: float32(cnf.RPICameraGain), + EV: float32(cnf.RPICameraEV), ROI: cnf.RPICameraROI, HDR: cnf.RPICameraHDR, TuningFile: cnf.RPICameraTuningFile, Mode: cnf.RPICameraMode, - FPS: cnf.RPICameraFPS, + FPS: float32(cnf.RPICameraFPS), AfMode: cnf.RPICameraAfMode, AfRange: cnf.RPICameraAfRange, AfSpeed: cnf.RPICameraAfSpeed, - LensPosition: cnf.RPICameraLensPosition, + LensPosition: float32(cnf.RPICameraLensPosition), AfWindow: cnf.RPICameraAfWindow, - FlickerPeriod: cnf.RPICameraFlickerPeriod, + FlickerPeriod: uint32(cnf.RPICameraFlickerPeriod), TextOverlayEnable: cnf.RPICameraTextOverlayEnable, TextOverlay: cnf.RPICameraTextOverlay, Codec: cnf.RPICameraCodec, - IDRPeriod: cnf.RPICameraIDRPeriod, - Bitrate: cnf.RPICameraBitrate, + IDRPeriod: uint32(cnf.RPICameraIDRPeriod), + Bitrate: uint32(cnf.RPICameraBitrate), Profile: cnf.RPICameraProfile, Level: cnf.RPICameraLevel, }