feat: add publishing & audio to ffi (#46)
- Divide FFI protocol into multiple files
- Audio support
- AV Streams/Sources
- Create tracks
- Use Dashmap to store handles
- Add a capture test
- Ignored by GHA atm
This commit is contained in:
@@ -156,9 +156,7 @@ impl LogoTrack {
|
||||
let mut video_frame = data.video_frame.lock();
|
||||
let i420_buffer = &mut video_frame.buffer;
|
||||
|
||||
let stride_y = i420_buffer.stride_y();
|
||||
let stride_u = i420_buffer.stride_u();
|
||||
let stride_v = i420_buffer.stride_v();
|
||||
let (stride_y, stride_u, stride_v) = i420_buffer.strides();
|
||||
let (data_y, data_u, data_v) = i420_buffer.data_mut();
|
||||
|
||||
framebuffer.fill(0);
|
||||
@@ -177,7 +175,7 @@ impl LogoTrack {
|
||||
|
||||
yuv_helper::abgr_to_i420(
|
||||
&framebuffer,
|
||||
(FB_WIDTH * PIXEL_SIZE) as i32,
|
||||
(FB_WIDTH * PIXEL_SIZE) as u32,
|
||||
data_y,
|
||||
stride_y,
|
||||
data_u,
|
||||
|
||||
@@ -116,11 +116,11 @@ impl SineTrack {
|
||||
samples_10ms[i] = (val * 32768.0) as i16;
|
||||
}
|
||||
|
||||
rtc_source.capture_frame(AudioFrame {
|
||||
rtc_source.capture_frame(&AudioFrame {
|
||||
data: samples_10ms.clone(),
|
||||
sample_rate_hz: data.sample_rate,
|
||||
sample_rate: data.sample_rate as u32,
|
||||
num_channels: 1,
|
||||
samples_per_channel: samples_count_10ms,
|
||||
samples_per_channel: samples_count_10ms as u32,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,19 +119,20 @@ impl VideoRenderer {
|
||||
let rgba_ptr = internal.rgba_data.deref_mut();
|
||||
let rgba_stride = buffer.width() * 4;
|
||||
|
||||
let (stride_y, stride_u, stride_v) = buffer.strides();
|
||||
let (data_y, data_u, data_v) = buffer.data();
|
||||
|
||||
yuv_helper::i420_to_abgr(
|
||||
data_y,
|
||||
buffer.stride_y(),
|
||||
stride_y,
|
||||
data_u,
|
||||
buffer.stride_u(),
|
||||
stride_u,
|
||||
data_v,
|
||||
buffer.stride_v(),
|
||||
stride_v,
|
||||
rgba_ptr,
|
||||
rgba_stride,
|
||||
buffer.width(),
|
||||
buffer.height(),
|
||||
buffer.width() as i32,
|
||||
buffer.height() as i32,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user