Skip to content

Commit ee05902

Browse files
committed
[*] refactor: video-editor
1 parent b8fa8b7 commit ee05902

File tree

6 files changed

+104
-96
lines changed

6 files changed

+104
-96
lines changed

lib/video-editor/src/preview/playback.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
use crate::{
2-
tracks::{Manager, frame_position::TimeToFrameConverter},
3-
};
1+
use crate::tracks::{Manager, frame_position::TimeToFrameConverter};
42
use std::{sync::Arc, time::Duration};
53

64
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
@@ -64,6 +62,7 @@ pub struct PlaybackController {
6462
total_frames: usize, // Total number of frames
6563
speed: PlaybackSpeed,
6664
time_converter: TimeToFrameConverter,
65+
volume: f32, // 0.0 to 1.0
6766
}
6867

6968
impl PlaybackController {
@@ -77,6 +76,7 @@ impl PlaybackController {
7776
total_frames,
7877
speed: PlaybackSpeed::Normal,
7978
time_converter,
79+
volume: 1.0,
8080
}
8181
}
8282

@@ -96,6 +96,14 @@ impl PlaybackController {
9696
self.time_converter.fps_as_f32() as f64
9797
}
9898

99+
pub fn volume(&self) -> f32 {
100+
self.volume
101+
}
102+
103+
pub fn set_volume(&mut self, volume: f32) {
104+
self.volume = volume.clamp(0.0, 1.0);
105+
}
106+
99107
pub fn set_position(&mut self, position: Duration) {
100108
let frame = self.time_converter.duration_to_frame(position);
101109
self.position_frame = frame.min(self.total_frames);

lib/video-editor/src/project/project.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,17 @@ pub enum TrackData {
4747

4848
#[derive(Debug, Clone, Serialize, Deserialize)]
4949
pub struct VideoTrackData {
50+
pub name: String,
5051
pub hiding: bool,
52+
pub muted: bool,
5153
pub metadata: MetadataData,
5254
pub duration_secs: f64,
5355
pub segments: Vec<SegmentData>,
5456
}
5557

5658
#[derive(Debug, Clone, Serialize, Deserialize)]
5759
pub struct AudioTrackData {
60+
pub name: String,
5861
pub hiding: bool,
5962
pub metadata: MetadataData,
6063
pub duration_secs: f64,
@@ -63,6 +66,7 @@ pub struct AudioTrackData {
6366

6467
#[derive(Debug, Clone, Serialize, Deserialize)]
6568
pub struct SubtitleTrackData {
69+
pub name: String,
6670
pub hiding: bool,
6771
pub metadata: MetadataData,
6872
pub duration_secs: f64,
@@ -71,6 +75,7 @@ pub struct SubtitleTrackData {
7175

7276
#[derive(Debug, Clone, Serialize, Deserialize)]
7377
pub struct OverlayTrackData {
78+
pub name: String,
7479
pub hiding: bool,
7580
pub metadata: MetadataData,
7681
pub duration_secs: f64,
@@ -91,7 +96,6 @@ pub struct SegmentData {
9196
pub source_offset_secs: f64,
9297
pub duration_secs: f64,
9398
pub metadata: MetadataData,
94-
#[serde(default)]
9599
pub subtitle_text: Option<String>,
96100
pub video_filters: Vec<VideoFilterData>,
97101
pub audio_filters: Vec<AudioFilterData>,
@@ -156,7 +160,9 @@ impl From<&Track> for TrackData {
156160
impl VideoTrackData {
157161
fn from_video_track(track: &Arc<VideoTrack>) -> Self {
158162
Self {
163+
name: track.name.clone(),
159164
hiding: track.hiding,
165+
muted: track.muted,
160166
metadata: track.track.metadata.as_ref().into(),
161167
duration_secs: track.track.duration.as_secs_f64(),
162168
segments: track
@@ -172,6 +178,7 @@ impl VideoTrackData {
172178
impl AudioTrackData {
173179
fn from_audio_track(track: &Arc<AudioTrack>) -> Self {
174180
Self {
181+
name: track.name.clone(),
175182
hiding: track.hiding,
176183
metadata: track.track.metadata.as_ref().into(),
177184
duration_secs: track.track.duration.as_secs_f64(),
@@ -188,6 +195,7 @@ impl AudioTrackData {
188195
impl SubtitleTrackData {
189196
fn from_subtitle_track(track: &Arc<SubtitleTrack>) -> Self {
190197
Self {
198+
name: track.name.clone(),
191199
hiding: track.hiding,
192200
metadata: track.track.metadata.as_ref().into(),
193201
duration_secs: track.track.duration.as_secs_f64(),
@@ -204,6 +212,7 @@ impl SubtitleTrackData {
204212
impl OverlayTrackData {
205213
fn from_overlay_track(track: &Arc<OverlayTrack>) -> Self {
206214
Self {
215+
name: track.name.clone(),
207216
hiding: track.hiding,
208217
metadata: track.track.metadata.as_ref().into(),
209218
duration_secs: track.track.duration.as_secs_f64(),
@@ -342,9 +351,9 @@ impl VideoTrackData {
342351
.collect::<Result<Vec<_>>>()?;
343352

344353
Ok(Track::Video(Arc::new(VideoTrack {
345-
name: String::default(),
354+
name: self.name.clone(),
346355
hiding: self.hiding,
347-
muted: false,
356+
muted: self.muted,
348357
track: InnerTrack {
349358
metadata,
350359
duration: Duration::from_secs_f64(self.duration_secs),
@@ -364,7 +373,7 @@ impl AudioTrackData {
364373
.collect::<Result<Vec<_>>>()?;
365374

366375
Ok(Track::Audio(Arc::new(AudioTrack {
367-
name: String::default(),
376+
name: self.name.clone(),
368377
hiding: self.hiding,
369378
track: InnerTrack {
370379
metadata,
@@ -385,7 +394,7 @@ impl SubtitleTrackData {
385394
.collect::<Result<Vec<_>>>()?;
386395

387396
Ok(Track::Subtitle(Arc::new(SubtitleTrack {
388-
name: "S".to_string(),
397+
name: self.name.clone(),
389398
hiding: self.hiding,
390399
track: InnerTrack::new(
391400
metadata,
@@ -406,7 +415,7 @@ impl OverlayTrackData {
406415
.collect::<Result<Vec<_>>>()?;
407416

408417
Ok(Track::Overlay(Arc::new(OverlayTrack {
409-
name: String::default(),
418+
name: self.name.clone(),
410419
hiding: self.hiding,
411420
track: InnerTrack {
412421
metadata,

wayshot/src/logic/video_editor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ mod library;
66
mod playlist;
77
mod project;
88
mod segment;
9+
mod subtitle;
910
mod track;
1011

1112
mod preview;
12-
mod subtitle;
1313

1414
pub fn init(ui: &crate::slint_generatedAppWindow::AppWindow) {
1515
project::init(ui);
@@ -19,7 +19,7 @@ pub fn init(ui: &crate::slint_generatedAppWindow::AppWindow) {
1919
command::init(ui);
2020
track::init(ui);
2121
segment::init(ui);
22-
2322
subtitle::init(ui);
23+
2424
preview::init(ui);
2525
}

0 commit comments

Comments
 (0)