mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2025-04-15 04:14:07 +00:00
audio-buffer: Don't store whether unmapping is necessary in AudioBufferRef
This is already stored as part of the enum discriminant. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1712>
This commit is contained in:
parent
56a6eb2146
commit
10b66eda23
1 changed files with 2 additions and 9 deletions
|
@ -151,7 +151,6 @@ impl<T> AudioBuffer<T> {
|
|||
pub fn as_audio_buffer_ref(&self) -> AudioBufferRef<&gst::BufferRef> {
|
||||
AudioBufferRef {
|
||||
audio_buffer: AudioBufferPtr::Borrowed(ptr::NonNull::from(&*self.audio_buffer)),
|
||||
unmap: false,
|
||||
phantom: PhantomData,
|
||||
}
|
||||
}
|
||||
|
@ -279,7 +278,6 @@ impl AudioBuffer<Writable> {
|
|||
pub fn as_mut_audio_buffer_ref(&mut self) -> AudioBufferRef<&mut gst::BufferRef> {
|
||||
AudioBufferRef {
|
||||
audio_buffer: AudioBufferPtr::Borrowed(ptr::NonNull::from(&mut *self.audio_buffer)),
|
||||
unmap: false,
|
||||
phantom: PhantomData,
|
||||
}
|
||||
}
|
||||
|
@ -292,6 +290,7 @@ impl AudioBuffer<Writable> {
|
|||
|
||||
#[derive(Debug)]
|
||||
enum AudioBufferPtr {
|
||||
// Has to be boxed because it contains self-references
|
||||
Owned(Box<ffi::GstAudioBuffer>),
|
||||
Borrowed(ptr::NonNull<ffi::GstAudioBuffer>),
|
||||
}
|
||||
|
@ -319,9 +318,7 @@ impl ops::DerefMut for AudioBufferPtr {
|
|||
}
|
||||
|
||||
pub struct AudioBufferRef<T> {
|
||||
// Has to be boxed because it contains self-references
|
||||
audio_buffer: AudioBufferPtr,
|
||||
unmap: bool,
|
||||
phantom: PhantomData<T>,
|
||||
}
|
||||
|
||||
|
@ -456,7 +453,6 @@ impl<'a> AudioBufferRef<&'a gst::BufferRef> {
|
|||
audio_buffer: AudioBufferPtr::Borrowed(ptr::NonNull::new_unchecked(
|
||||
audio_buffer as *mut _,
|
||||
)),
|
||||
unmap: false,
|
||||
phantom: PhantomData,
|
||||
})
|
||||
}
|
||||
|
@ -484,7 +480,6 @@ impl<'a> AudioBufferRef<&'a gst::BufferRef> {
|
|||
} else {
|
||||
Ok(Self {
|
||||
audio_buffer: AudioBufferPtr::Owned(audio_buffer),
|
||||
unmap: true,
|
||||
phantom: PhantomData,
|
||||
})
|
||||
}
|
||||
|
@ -504,7 +499,6 @@ impl<'a> AudioBufferRef<&'a mut gst::BufferRef> {
|
|||
|
||||
Borrowed::new(Self {
|
||||
audio_buffer: AudioBufferPtr::Borrowed(ptr::NonNull::new_unchecked(audio_buffer)),
|
||||
unmap: false,
|
||||
phantom: PhantomData,
|
||||
})
|
||||
}
|
||||
|
@ -532,7 +526,6 @@ impl<'a> AudioBufferRef<&'a mut gst::BufferRef> {
|
|||
} else {
|
||||
Ok(Self {
|
||||
audio_buffer: AudioBufferPtr::Owned(audio_buffer),
|
||||
unmap: true,
|
||||
phantom: PhantomData,
|
||||
})
|
||||
}
|
||||
|
@ -594,7 +587,7 @@ impl<T> Drop for AudioBufferRef<T> {
|
|||
#[inline]
|
||||
fn drop(&mut self) {
|
||||
unsafe {
|
||||
if self.unmap {
|
||||
if matches!(self.audio_buffer, AudioBufferPtr::Owned(..)) {
|
||||
ffi::gst_audio_buffer_unmap(&mut *self.audio_buffer);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue