|
1 | 1 | #![cfg(windows)] |
2 | 2 | #![allow(non_snake_case)] |
3 | 3 |
|
| 4 | +use cap_mediafoundation_utils::*; |
4 | 5 | use std::{ |
5 | 6 | ffi::OsString, |
6 | 7 | fmt::Display, |
7 | 8 | mem::MaybeUninit, |
8 | 9 | ops::{Deref, DerefMut}, |
9 | 10 | os::windows::ffi::OsStringExt, |
10 | | - ptr::null_mut, |
11 | 11 | slice::from_raw_parts, |
12 | 12 | sync::{ |
13 | 13 | Mutex, |
14 | 14 | mpsc::{Receiver, Sender, channel}, |
15 | 15 | }, |
16 | 16 | time::{Duration, Instant}, |
17 | 17 | }; |
18 | | - |
19 | 18 | use tracing::error; |
20 | 19 | use windows::Win32::{ |
21 | 20 | Foundation::{S_FALSE, *}, |
@@ -541,51 +540,6 @@ fn get_device_model_id(device_id: &str) -> Option<String> { |
541 | 540 | Some(format!("{id_vendor}:{id_product}")) |
542 | 541 | } |
543 | 542 |
|
544 | | -pub trait IMFMediaBufferExt { |
545 | | - fn lock(&self) -> windows_core::Result<IMFMediaBufferLock<'_>>; |
546 | | -} |
547 | | - |
548 | | -impl IMFMediaBufferExt for IMFMediaBuffer { |
549 | | - fn lock(&self) -> windows_core::Result<IMFMediaBufferLock<'_>> { |
550 | | - let mut bytes_ptr = null_mut(); |
551 | | - let mut size = 0; |
552 | | - |
553 | | - unsafe { |
554 | | - self.Lock(&mut bytes_ptr, None, Some(&mut size))?; |
555 | | - } |
556 | | - |
557 | | - Ok(IMFMediaBufferLock { |
558 | | - source: self, |
559 | | - bytes: unsafe { std::slice::from_raw_parts_mut(bytes_ptr, size as usize) }, |
560 | | - }) |
561 | | - } |
562 | | -} |
563 | | - |
564 | | -pub struct IMFMediaBufferLock<'a> { |
565 | | - source: &'a IMFMediaBuffer, |
566 | | - bytes: &'a mut [u8], |
567 | | -} |
568 | | - |
569 | | -impl<'a> Drop for IMFMediaBufferLock<'a> { |
570 | | - fn drop(&mut self) { |
571 | | - let _ = unsafe { self.source.Unlock() }; |
572 | | - } |
573 | | -} |
574 | | - |
575 | | -impl<'a> Deref for IMFMediaBufferLock<'a> { |
576 | | - type Target = [u8]; |
577 | | - |
578 | | - fn deref(&self) -> &Self::Target { |
579 | | - self.bytes |
580 | | - } |
581 | | -} |
582 | | - |
583 | | -impl<'a> DerefMut for IMFMediaBufferLock<'a> { |
584 | | - fn deref_mut(&mut self) -> &mut Self::Target { |
585 | | - self.bytes |
586 | | - } |
587 | | -} |
588 | | - |
589 | 543 | pub struct CallbackData { |
590 | 544 | pub sample: IMFSample, |
591 | 545 | pub reference_time: Instant, |
|
0 commit comments