Merge pull request #48 from sdroege/gstreamer-rs-0-16

Update to gstreamer-rs 0.16
This commit is contained in:
Ruben Gonzalez 2020-09-07 20:20:27 +02:00 committed by GitHub
commit 3c5c06c9f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 30 deletions

View file

@ -8,18 +8,18 @@ description = "NewTek NDI Plugin"
edition = "2018"
[dependencies]
glib = "0.9"
gobject-sys = "0.9"
gstreamer = { version = "0.15", features = ["v1_12"] }
gstreamer-base = "0.15"
gstreamer-audio = "0.15"
gstreamer-video = { version = "0.15", features = ["v1_12"] }
glib = "0.10"
gobject-sys = "0.10"
gstreamer = { version = "0.16", features = ["v1_12"] }
gstreamer-base = "0.16"
gstreamer-audio = "0.16"
gstreamer-video = { version = "0.16", features = ["v1_12"] }
lazy_static = "1.1.0"
byte-slice-cast = "0.3.0"
once_cell = "1.0"
[build-dependencies]
gst-plugin-version-helper = "0.1"
gst-plugin-version-helper = "0.2"
[features]
default = ["interlaced-fields", "reference-timestamps"]

View file

@ -56,10 +56,8 @@ lazy_static! {
#[cfg(feature = "reference-timestamps")]
lazy_static! {
static ref TIMECODE_CAPS: gst::Caps =
{ gst::Caps::new_simple("timestamp/x-ndi-timecode", &[]) };
static ref TIMESTAMP_CAPS: gst::Caps =
{ gst::Caps::new_simple("timestamp/x-ndi-timestamp", &[]) };
static ref TIMECODE_CAPS: gst::Caps = gst::Caps::new_simple("timestamp/x-ndi-timecode", &[]);
static ref TIMESTAMP_CAPS: gst::Caps = gst::Caps::new_simple("timestamp/x-ndi-timestamp", &[]);
}
impl glib::translate::ToGlib for TimestampMode {

View file

@ -6,6 +6,7 @@ use gst::subclass::prelude::*;
use gst_audio;
use gst_base;
use gst_base::prelude::*;
use gst_base::subclass::base_src::CreateSuccess;
use gst_base::subclass::prelude::*;
use std::sync::Mutex;
@ -299,8 +300,8 @@ impl ObjectImpl for NdiAudioSrc {
timestamp_mode
);
if settings.timestamp_mode != timestamp_mode {
let _ = basesrc
.post_message(&gst::Message::new_latency().src(Some(basesrc)).build());
let _ =
basesrc.post_message(gst::message::Latency::builder().src(basesrc).build());
}
settings.timestamp_mode = timestamp_mode;
}
@ -484,8 +485,8 @@ impl BaseSrcImpl for NdiAudioSrc {
}
}
fn fixate(&self, element: &gst_base::BaseSrc, caps: gst::Caps) -> gst::Caps {
let mut caps = gst::Caps::truncate(caps);
fn fixate(&self, element: &gst_base::BaseSrc, mut caps: gst::Caps) -> gst::Caps {
caps.truncate();
{
let caps = caps.make_mut();
let s = caps.get_mut_structure(0).unwrap();
@ -500,8 +501,9 @@ impl BaseSrcImpl for NdiAudioSrc {
&self,
element: &gst_base::BaseSrc,
_offset: u64,
_buffer: Option<&mut gst::BufferRef>,
_length: u32,
) -> Result<gst::Buffer, gst::FlowError> {
) -> Result<CreateSuccess, gst::FlowError> {
let recv = {
let mut state = self.state.lock().unwrap();
match state.receiver.take() {
@ -539,11 +541,11 @@ impl BaseSrcImpl for NdiAudioSrc {
gst::FlowError::NotNegotiated
})?;
let _ = element
.post_message(&gst::Message::new_latency().src(Some(element)).build());
let _ =
element.post_message(gst::message::Latency::builder().src(element).build());
}
Ok(buffer)
Ok(CreateSuccess::NewBuffer(buffer))
}
ReceiverItem::Flushing => Err(gst::FlowError::Flushing),
ReceiverItem::Timeout => Err(gst::FlowError::Eos),

View file

@ -5,6 +5,7 @@ use gst::prelude::*;
use gst::subclass::prelude::*;
use gst_base;
use gst_base::prelude::*;
use gst_base::subclass::base_src::CreateSuccess;
use gst_base::subclass::prelude::*;
use gst_video;
@ -334,8 +335,8 @@ impl ObjectImpl for NdiVideoSrc {
timestamp_mode
);
if settings.timestamp_mode != timestamp_mode {
let _ = basesrc
.post_message(&gst::Message::new_latency().src(Some(basesrc)).build());
let _ =
basesrc.post_message(gst::message::Latency::builder().src(basesrc).build());
}
settings.timestamp_mode = timestamp_mode;
}
@ -521,8 +522,8 @@ impl BaseSrcImpl for NdiVideoSrc {
}
}
fn fixate(&self, element: &gst_base::BaseSrc, caps: gst::Caps) -> gst::Caps {
let mut caps = gst::Caps::truncate(caps);
fn fixate(&self, element: &gst_base::BaseSrc, mut caps: gst::Caps) -> gst::Caps {
caps.truncate();
{
let caps = caps.make_mut();
let s = caps.get_mut_structure(0).unwrap();
@ -541,8 +542,9 @@ impl BaseSrcImpl for NdiVideoSrc {
&self,
element: &gst_base::BaseSrc,
_offset: u64,
_buffer: Option<&mut gst::BufferRef>,
_length: u32,
) -> Result<gst::Buffer, gst::FlowError> {
) -> Result<CreateSuccess, gst::FlowError> {
let recv = {
let mut state = self.state.lock().unwrap();
match state.receiver.take() {
@ -580,11 +582,11 @@ impl BaseSrcImpl for NdiVideoSrc {
gst::FlowError::NotNegotiated
})?;
let _ = element
.post_message(&gst::Message::new_latency().src(Some(element)).build());
let _ =
element.post_message(gst::message::Latency::builder().src(element).build());
}
Ok(buffer)
Ok(CreateSuccess::NewBuffer(buffer))
}
ReceiverItem::Timeout => Err(gst::FlowError::Eos),
ReceiverItem::Flushing => Err(gst::FlowError::Flushing),

View file

@ -1012,7 +1012,7 @@ impl Receiver<VideoReceiver> {
#[cfg(feature = "interlaced-fields")]
{
let mut builder = gst_video::VideoInfo::new(
let mut builder = gst_video::VideoInfo::builder(
format,
video_frame.xres() as u32,
video_frame.yres() as u32,
@ -1061,7 +1061,7 @@ impl Receiver<VideoReceiver> {
return Err(gst::FlowError::NotNegotiated);
}
let mut builder = gst_video::VideoInfo::new(
let mut builder = gst_video::VideoInfo::builder(
format,
video_frame.xres() as u32,
video_frame.yres() as u32,
@ -1410,7 +1410,7 @@ impl Receiver<AudioReceiver> {
element: &gst_base::BaseSrc,
audio_frame: &AudioFrame,
) -> Result<gst_audio::AudioInfo, gst::FlowError> {
let builder = gst_audio::AudioInfo::new(
let builder = gst_audio::AudioInfo::builder(
gst_audio::AUDIO_FORMAT_S16,
audio_frame.sample_rate() as u32,
audio_frame.no_channels() as u32,