Skip to content

Commit ef81bbc

Browse files
committed
Refactor CameraLayer::prepare argument structure
1 parent 94ad34c commit ef81bbc

File tree

2 files changed

+28
-23
lines changed

2 files changed

+28
-23
lines changed

crates/rendering/src/layers/camera.rs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,24 @@ impl CameraLayer {
5959
&mut self,
6060
device: &wgpu::Device,
6161
queue: &wgpu::Queue,
62-
data: Option<(CompositeVideoFrameUniforms, XY<u32>, &DecodedFrame, f32)>,
62+
uniforms: Option<CompositeVideoFrameUniforms>,
63+
frame_data: Option<(XY<u32>, &DecodedFrame, f32)>,
6364
) {
64-
self.hidden = data.is_none();
65+
let Some(uniforms) = uniforms else {
66+
self.hidden = true;
67+
return;
68+
};
6569

66-
let Some((uniforms, frame_size, camera_frame, recording_time)) = data else {
70+
let has_previous_frame = self.last_recording_time.is_some();
71+
self.hidden = frame_data.is_none() && !has_previous_frame;
72+
73+
queue.write_buffer(&self.uniforms_buffer, 0, bytemuck::cast_slice(&[uniforms]));
74+
75+
let Some((frame_size, camera_frame, recording_time)) = frame_data else {
6776
return;
6877
};
6978

70-
let frame_data = camera_frame.data();
79+
let frame_data_bytes = camera_frame.data();
7180
let format = camera_frame.format();
7281

7382
let is_same_frame = self
@@ -107,7 +116,7 @@ impl CameraLayer {
107116
origin: wgpu::Origin3d::ZERO,
108117
aspect: wgpu::TextureAspect::All,
109118
},
110-
frame_data,
119+
frame_data_bytes,
111120
wgpu::TexelCopyBufferLayout {
112121
offset: 0,
113122
bytes_per_row: Some(src_bytes_per_row),
@@ -197,8 +206,6 @@ impl CameraLayer {
197206
self.last_recording_time = Some(recording_time);
198207
self.current_texture = next_texture;
199208
}
200-
201-
queue.write_buffer(&self.uniforms_buffer, 0, bytemuck::cast_slice(&[uniforms]));
202209
}
203210

204211
fn copy_from_yuv_output(

crates/rendering/src/lib.rs

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1694,27 +1694,25 @@ impl RendererLayers {
16941694
self.camera.prepare(
16951695
&constants.device,
16961696
&constants.queue,
1697-
(|| {
1698-
Some((
1699-
uniforms.camera?,
1700-
constants.options.camera_size?,
1701-
segment_frames.camera_frame.as_ref()?,
1702-
segment_frames.recording_time,
1703-
))
1704-
})(),
1697+
uniforms.camera,
1698+
constants.options.camera_size.and_then(|size| {
1699+
segment_frames
1700+
.camera_frame
1701+
.as_ref()
1702+
.map(|frame| (size, frame, segment_frames.recording_time))
1703+
}),
17051704
);
17061705

17071706
self.camera_only.prepare(
17081707
&constants.device,
17091708
&constants.queue,
1710-
(|| {
1711-
Some((
1712-
uniforms.camera_only?,
1713-
constants.options.camera_size?,
1714-
segment_frames.camera_frame.as_ref()?,
1715-
segment_frames.recording_time,
1716-
))
1717-
})(),
1709+
uniforms.camera_only,
1710+
constants.options.camera_size.and_then(|size| {
1711+
segment_frames
1712+
.camera_frame
1713+
.as_ref()
1714+
.map(|frame| (size, frame, segment_frames.recording_time))
1715+
}),
17181716
);
17191717

17201718
self.text.prepare(

0 commit comments

Comments
 (0)