88 lines
1.9 KiB
Rust
88 lines
1.9 KiB
Rust
pub use self::vpxcodec::*;
|
|
|
|
cfg_if! {
|
|
if #[cfg(quartz)] {
|
|
mod quartz;
|
|
pub use self::quartz::*;
|
|
} else if #[cfg(x11)] {
|
|
cfg_if! {
|
|
if #[cfg(feature="wayland")] {
|
|
mod linux;
|
|
mod wayland;
|
|
mod x11;
|
|
pub use self::linux::*;
|
|
pub use self::x11::Frame;
|
|
pub use self::wayland::set_map_err;
|
|
} else {
|
|
mod x11;
|
|
pub use self::x11::*;
|
|
}
|
|
}
|
|
} else if #[cfg(dxgi)] {
|
|
mod dxgi;
|
|
pub use self::dxgi::*;
|
|
} else if #[cfg(target_os = "android")] {
|
|
mod android;
|
|
pub use self::android::*;
|
|
}else {
|
|
//TODO: Fallback implementation.
|
|
}
|
|
}
|
|
|
|
pub mod codec;
|
|
mod convert;
|
|
#[cfg(feature = "hwcodec")]
|
|
pub mod hwcodec;
|
|
#[cfg(feature = "mediacodec")]
|
|
pub mod mediacodec;
|
|
pub mod vpxcodec;
|
|
pub use self::convert::*;
|
|
pub const STRIDE_ALIGN: usize = 64; // commonly used in libvpx vpx_img_alloc caller
|
|
pub const HW_STRIDE_ALIGN: usize = 0; // recommended by av_frame_get_buffer
|
|
|
|
pub mod record;
|
|
mod vpx;
|
|
|
|
#[inline]
|
|
pub fn would_block_if_equal(old: &mut Vec<u8>, b: &[u8]) -> std::io::Result<()> {
|
|
// does this really help?
|
|
if b == &old[..] {
|
|
return Err(std::io::ErrorKind::WouldBlock.into());
|
|
}
|
|
old.resize(b.len(), 0);
|
|
old.copy_from_slice(b);
|
|
Ok(())
|
|
}
|
|
|
|
pub trait TraitCapturer {
|
|
fn set_use_yuv(&mut self, use_yuv: bool);
|
|
fn frame<'a>(&'a mut self, timeout: std::time::Duration) -> std::io::Result<Frame<'a>>;
|
|
|
|
#[cfg(windows)]
|
|
fn is_gdi(&self) -> bool;
|
|
#[cfg(windows)]
|
|
fn set_gdi(&mut self) -> bool;
|
|
}
|
|
|
|
#[cfg(x11)]
|
|
#[inline]
|
|
pub fn is_x11() -> bool {
|
|
"x11" == hbb_common::platform::linux::get_display_server()
|
|
}
|
|
|
|
#[cfg(x11)]
|
|
#[inline]
|
|
pub fn is_cursor_embedded() -> bool {
|
|
if is_x11() {
|
|
x11::IS_CURSOR_EMBEDDED
|
|
} else {
|
|
wayland::is_cursor_embedded()
|
|
}
|
|
}
|
|
|
|
#[cfg(not(x11))]
|
|
#[inline]
|
|
pub fn is_cursor_embedded() -> bool {
|
|
false
|
|
}
|