feat: smooth skin effect

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2025-10-19 11:56:55 +01:00
parent 6b0753b072
commit 8120690caa
4 changed files with 111 additions and 15 deletions

View File

@@ -14,7 +14,8 @@ use ptp::{
FujiColorChromeFXBlue, FujiCustomSetting, FujiCustomSettingName, FujiDynamicRange,
FujiDynamicRangePriority, FujiFilmSimulation, FujiGrainEffect, FujiHighISONR,
FujiHighlightTone, FujiImageQuality, FujiImageSize, FujiShadowTone, FujiSharpness,
FujiWhiteBalance, FujiWhiteBalanceShift, FujiWhiteBalanceTemperature, UsbMode,
FujiSmoothSkinEffect, FujiWhiteBalance, FujiWhiteBalanceShift, FujiWhiteBalanceTemperature,
UsbMode,
},
structs::DeviceInfo,
};
@@ -257,6 +258,14 @@ impl Camera {
pub fn set_color_chrome_fx_blue(&mut self, value: FujiColorChromeFXBlue) -> anyhow::Result<()> {
self.r#impl.set_color_chrome_fx_blue(&mut self.ptp, value)
}
pub fn get_smooth_skin_effect(&mut self) -> anyhow::Result<FujiSmoothSkinEffect> {
self.r#impl.get_smooth_skin_effect(&mut self.ptp)
}
pub fn set_smooth_skin_effect(&mut self, value: FujiSmoothSkinEffect) -> anyhow::Result<()> {
self.r#impl.set_smooth_skin_effect(&mut self.ptp, value)
}
}
impl Drop for Camera {
@@ -789,4 +798,25 @@ pub trait CameraImpl<P: rusb::UsbContext> {
)?;
Ok(())
}
fn get_smooth_skin_effect(&self, ptp: &mut Ptp) -> anyhow::Result<FujiSmoothSkinEffect> {
let bytes =
self.get_prop_value(ptp, DevicePropCode::FujiStillCustomSettingSmoothSkinEffect)?;
let result = FujiSmoothSkinEffect::try_from_ptp(&bytes)?;
Ok(result)
}
fn set_smooth_skin_effect(
&self,
ptp: &mut Ptp,
value: FujiSmoothSkinEffect,
) -> anyhow::Result<()> {
let bytes = value.try_into_ptp()?;
self.set_prop_value(
ptp,
DevicePropCode::FujiStillCustomSettingSmoothSkinEffect,
&bytes,
)?;
Ok(())
}
}