diff --git a/bindings/matrix-sdk-ffi/src/timeline/mod.rs b/bindings/matrix-sdk-ffi/src/timeline/mod.rs index 45f038283..93e51467c 100644 --- a/bindings/matrix-sdk-ffi/src/timeline/mod.rs +++ b/bindings/matrix-sdk-ffi/src/timeline/mod.rs @@ -424,7 +424,7 @@ impl Timeline { self: Arc, params: UploadParameters, audio_info: AudioInfo, - waveform: Vec, + waveform: Vec, ) -> Result, RoomError> { let mut info = BaseAudioInfo::try_from(&audio_info).map_err(|_| RoomError::InvalidAttachmentData)?; diff --git a/crates/matrix-sdk/src/attachment.rs b/crates/matrix-sdk/src/attachment.rs index 70371fd2e..67c2e0fe8 100644 --- a/crates/matrix-sdk/src/attachment.rs +++ b/crates/matrix-sdk/src/attachment.rs @@ -67,7 +67,9 @@ pub struct BaseAudioInfo { /// The file size of the audio clip in bytes. pub size: Option, /// The waveform of the audio clip. - pub waveform: Option>, + /// + /// Must only include values between 0 and 1. + pub waveform: Option>, } /// Base metadata about a file. diff --git a/crates/matrix-sdk/src/room/mod.rs b/crates/matrix-sdk/src/room/mod.rs index f11e01dc5..66c885b94 100644 --- a/crates/matrix-sdk/src/room/mod.rs +++ b/crates/matrix-sdk/src/room/mod.rs @@ -116,7 +116,7 @@ use ruma::{ message::{ AudioInfo, AudioMessageEventContent, FileInfo, FileMessageEventContent, ImageMessageEventContent, MessageType, RoomMessageEventContent, - TextMessageEventContent, UnstableAudioDetailsContentBlock, + TextMessageEventContent, UnstableAmplitude, UnstableAudioDetailsContentBlock, UnstableVoiceContentBlock, VideoInfo, VideoMessageEventContent, }, name::RoomNameEventContent, @@ -326,7 +326,11 @@ macro_rules! make_media_type { if let Some(AttachmentInfo::Audio(audio_info) | AttachmentInfo::Voice(audio_info)) = &$info && let Some(duration) = audio_info.duration && let Some(waveform_vec) = &audio_info.waveform { - let waveform = waveform_vec.iter().map(|v| (*v).into()).collect(); + let waveform = waveform_vec + .iter() + .map(|v| ((*v).clamp(0.0, 1.0) * UnstableAmplitude::MAX as f32) as u16) + .map(Into::into) + .collect(); content.audio = Some(UnstableAudioDetailsContentBlock::new(duration, waveform)); }