gst-plugins-rs/src/lib.rs

70 lines
1.8 KiB
Rust
Raw Normal View History

use glib::prelude::*;
2018-04-09 05:53:04 +00:00
mod device_provider;
2019-07-11 17:35:43 +00:00
pub mod ndi;
mod ndiaudiosrc;
pub mod ndisys;
2018-09-18 09:53:12 +00:00
mod ndivideosrc;
pub mod receiver;
use crate::ndi::*;
use crate::ndisys::*;
use crate::receiver::*;
use std::collections::HashMap;
use std::time;
use once_cell::sync::Lazy;
#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy, glib::GEnum)]
#[repr(u32)]
#[genum(type_name = "GstNdiTimestampMode")]
pub enum TimestampMode {
#[genum(name = "Receive Time / Timecode", nick = "receive-time-vs-timecode")]
ReceiveTimeTimecode = 0,
#[genum(name = "Receive Time / Timestamp", nick = "receive-time-vs-timestamp")]
ReceiveTimeTimestamp = 1,
#[genum(name = "NDI Timecode", nick = "timecode")]
Timecode = 2,
#[genum(name = "NDI Timestamp", nick = "timestamp")]
Timestamp = 3,
}
2018-12-11 16:47:03 +00:00
fn plugin_init(plugin: &gst::Plugin) -> Result<(), glib::BoolError> {
if !ndi::initialize() {
2021-02-23 10:37:24 +00:00
return Err(glib::glib_bool_error!("Cannot initialize NDI"));
}
2018-12-11 16:47:03 +00:00
ndivideosrc::register(plugin)?;
ndiaudiosrc::register(plugin)?;
device_provider::register(plugin)?;
2018-12-11 16:47:03 +00:00
Ok(())
2018-04-09 05:53:04 +00:00
}
static DEFAULT_RECEIVER_NDI_NAME: Lazy<String> = Lazy::new(|| {
format!(
"GStreamer NDI Source {}-{}",
env!("CARGO_PKG_VERSION"),
env!("COMMIT_ID")
)
});
#[cfg(feature = "reference-timestamps")]
static TIMECODE_CAPS: Lazy<gst::Caps> =
Lazy::new(|| gst::Caps::new_simple("timestamp/x-ndi-timecode", &[]));
#[cfg(feature = "reference-timestamps")]
static TIMESTAMP_CAPS: Lazy<gst::Caps> =
Lazy::new(|| gst::Caps::new_simple("timestamp/x-ndi-timestamp", &[]));
2021-02-23 10:37:24 +00:00
gst::gst_plugin_define!(
ndi,
env!("CARGO_PKG_DESCRIPTION"),
2018-06-27 09:56:11 +00:00
plugin_init,
concat!(env!("CARGO_PKG_VERSION"), "-", env!("COMMIT_ID")),
2018-12-11 16:47:03 +00:00
"LGPL",
env!("CARGO_PKG_NAME"),
env!("CARGO_PKG_NAME"),
env!("CARGO_PKG_REPOSITORY"),
env!("BUILD_REL_DATE")
2018-06-27 09:56:11 +00:00
);