diff --git a/gstreamer/src/buffer_serde.rs b/gstreamer/src/buffer_serde.rs index 5d4d90c5d..aee351eee 100644 --- a/gstreamer/src/buffer_serde.rs +++ b/gstreamer/src/buffer_serde.rs @@ -50,12 +50,8 @@ struct BufferDe { } impl From for Buffer { - fn from(mut buf_de: BufferDe) -> Self { - // Move the `ByteBuff`'s byte array into the `gst::Buffer` - // Are we really avoiding copies with that? - let drained_buffer: &mut Vec = buf_de.buffer.as_mut(); - let mut buffer = - Buffer::from_slice(drained_buffer.drain(..).collect::>()).unwrap(); + fn from(buf_de: BufferDe) -> Self { + let mut buffer = Buffer::from_mut_slice(buf_de.buffer.to_vec()).unwrap(); { let buffer = buffer.get_mut().unwrap(); buffer.set_pts(buf_de.pts); @@ -228,4 +224,4 @@ mod tests { assert_eq!(data.as_slice(), vec![1, 2, 3, 4].as_slice()); } } -} +} \ No newline at end of file