mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2025-02-20 06:36:18 +00:00
Update for GLib signal emit_by_name()
API changes
This commit is contained in:
parent
55aad51141
commit
c68f6b2631
10 changed files with 54 additions and 150 deletions
|
@ -369,10 +369,7 @@ impl SinkHandler {
|
|||
if state.clock_rate.is_none() {
|
||||
drop(state);
|
||||
let caps = element
|
||||
.try_emit_by_name("request-pt-map", &[&(pt as u32)])
|
||||
.map_err(|_| gst::FlowError::Error)?
|
||||
.ok_or(gst::FlowError::Error)?
|
||||
.get::<Option<gst::Caps>>()
|
||||
.try_emit_by_name::<Option<gst::Caps>>("request-pt-map", &[&(pt as u32)])
|
||||
.map_err(|_| gst::FlowError::Error)?
|
||||
.ok_or(gst::FlowError::Error)?;
|
||||
let mut state = jb.state.lock().unwrap();
|
||||
|
|
|
@ -46,18 +46,10 @@ fn push() {
|
|||
{
|
||||
let appsrc = h.element().unwrap();
|
||||
for _ in 0..3 {
|
||||
assert!(appsrc
|
||||
.emit_by_name("push-buffer", &[&gst::Buffer::new()])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(appsrc.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::new()]));
|
||||
}
|
||||
|
||||
assert!(appsrc
|
||||
.emit_by_name("end-of-stream", &[])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(appsrc.emit_by_name::<bool>("end-of-stream", &[]));
|
||||
}
|
||||
|
||||
for _ in 0..3 {
|
||||
|
@ -110,31 +102,21 @@ fn pause_regular() {
|
|||
let appsrc = h.element().unwrap();
|
||||
|
||||
// Initial buffer
|
||||
assert!(appsrc
|
||||
.emit_by_name("push-buffer", &[&gst::Buffer::from_slice(vec![1, 2, 3, 4])])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(
|
||||
appsrc.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::from_slice(vec![1, 2, 3, 4])])
|
||||
);
|
||||
|
||||
let _ = h.pull().unwrap();
|
||||
|
||||
// Pre-pause buffer
|
||||
assert!(appsrc
|
||||
.emit_by_name("push-buffer", &[&gst::Buffer::from_slice(vec![5, 6, 7])])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(appsrc.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::from_slice(vec![5, 6, 7])]));
|
||||
|
||||
appsrc
|
||||
.change_state(gst::StateChange::PlayingToPaused)
|
||||
.unwrap();
|
||||
|
||||
// Buffer is queued during Paused
|
||||
assert!(appsrc
|
||||
.emit_by_name("push-buffer", &[&gst::Buffer::from_slice(vec![8, 9])])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(appsrc.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::from_slice(vec![8, 9])]));
|
||||
|
||||
appsrc
|
||||
.change_state(gst::StateChange::PausedToPlaying)
|
||||
|
@ -147,11 +129,7 @@ fn pause_regular() {
|
|||
let _ = h.pull().unwrap();
|
||||
|
||||
// Can push again
|
||||
assert!(appsrc
|
||||
.emit_by_name("push-buffer", &[&gst::Buffer::new()])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(appsrc.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::new()]));
|
||||
|
||||
let _ = h.pull().unwrap();
|
||||
assert!(h.try_pull().is_none());
|
||||
|
@ -176,11 +154,9 @@ fn flush_regular() {
|
|||
let appsrc = h.element().unwrap();
|
||||
|
||||
// Initial buffer
|
||||
assert!(appsrc
|
||||
.emit_by_name("push-buffer", &[&gst::Buffer::from_slice(vec![1, 2, 3, 4])])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(
|
||||
appsrc.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::from_slice(vec![1, 2, 3, 4])])
|
||||
);
|
||||
|
||||
let _ = h.pull().unwrap();
|
||||
|
||||
|
@ -188,11 +164,7 @@ fn flush_regular() {
|
|||
assert!(h.push_upstream_event(gst::event::FlushStart::new()));
|
||||
|
||||
// Can't push buffer while flushing
|
||||
assert!(!appsrc
|
||||
.emit_by_name("push-buffer", &[&gst::Buffer::new()])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(!appsrc.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::new()]));
|
||||
|
||||
assert!(h.try_pull().is_none());
|
||||
|
||||
|
@ -203,11 +175,7 @@ fn flush_regular() {
|
|||
assert!(h.try_pull().is_none());
|
||||
|
||||
// Can push again
|
||||
assert!(appsrc
|
||||
.emit_by_name("push-buffer", &[&gst::Buffer::new()])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(appsrc.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::new()]));
|
||||
|
||||
let _ = h.pull().unwrap();
|
||||
assert!(h.try_pull().is_none());
|
||||
|
@ -232,11 +200,9 @@ fn pause_flush() {
|
|||
let appsrc = h.element().unwrap();
|
||||
|
||||
// Initial buffer
|
||||
assert!(appsrc
|
||||
.emit_by_name("push-buffer", &[&gst::Buffer::from_slice(vec![1, 2, 3, 4])])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(
|
||||
appsrc.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::from_slice(vec![1, 2, 3, 4])])
|
||||
);
|
||||
|
||||
let _ = h.pull().unwrap();
|
||||
|
||||
|
@ -248,11 +214,7 @@ fn pause_flush() {
|
|||
assert!(h.push_upstream_event(gst::event::FlushStart::new()));
|
||||
|
||||
// Can't push buffers while flushing
|
||||
assert!(!appsrc
|
||||
.emit_by_name("push-buffer", &[&gst::Buffer::new()])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(!appsrc.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::new()]));
|
||||
|
||||
assert!(h.try_pull().is_none());
|
||||
|
||||
|
@ -267,11 +229,7 @@ fn pause_flush() {
|
|||
assert!(h.try_pull().is_none());
|
||||
|
||||
// Can push again
|
||||
assert!(appsrc
|
||||
.emit_by_name("push-buffer", &[&gst::Buffer::new()])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(appsrc.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::new()]));
|
||||
|
||||
let _ = h.pull().unwrap();
|
||||
assert!(h.try_pull().is_none());
|
||||
|
|
|
@ -80,11 +80,7 @@ fn jb_pipeline() {
|
|||
appsink.set_callbacks(
|
||||
gst_app::AppSinkCallbacks::builder()
|
||||
.new_sample(move |appsink| {
|
||||
let _sample = appsink
|
||||
.emit_by_name("pull-sample", &[])
|
||||
.unwrap()
|
||||
.get::<gst::Sample>()
|
||||
.unwrap();
|
||||
let _sample = appsink.pull_sample().unwrap();
|
||||
|
||||
sender.send(()).unwrap();
|
||||
Ok(gst::FlowSuccess::Ok)
|
||||
|
@ -147,11 +143,7 @@ fn jb_ts_pipeline() {
|
|||
appsink.set_callbacks(
|
||||
gst_app::AppSinkCallbacks::builder()
|
||||
.new_sample(move |appsink| {
|
||||
let _sample = appsink
|
||||
.emit_by_name("pull-sample", &[])
|
||||
.unwrap()
|
||||
.get::<gst::Sample>()
|
||||
.unwrap();
|
||||
let _sample = appsink.pull_sample().unwrap();
|
||||
|
||||
sender.send(()).unwrap();
|
||||
Ok(gst::FlowSuccess::Ok)
|
||||
|
|
|
@ -86,11 +86,7 @@ fn multiple_contexts_queue() {
|
|||
appsink.set_callbacks(
|
||||
gst_app::AppSinkCallbacks::builder()
|
||||
.new_sample(move |appsink| {
|
||||
let _sample = appsink
|
||||
.emit_by_name("pull-sample", &[])
|
||||
.unwrap()
|
||||
.get::<gst::Sample>()
|
||||
.unwrap();
|
||||
let _sample = appsink.pull_sample().unwrap();
|
||||
|
||||
sender_clone.send(()).unwrap();
|
||||
Ok(gst::FlowSuccess::Ok)
|
||||
|
@ -239,11 +235,7 @@ fn multiple_contexts_proxy() {
|
|||
appsink.set_callbacks(
|
||||
gst_app::AppSinkCallbacks::builder()
|
||||
.new_sample(move |appsink| {
|
||||
let _sample = appsink
|
||||
.emit_by_name("pull-sample", &[])
|
||||
.unwrap()
|
||||
.get::<gst::Sample>()
|
||||
.unwrap();
|
||||
let _sample = appsink.pull_sample().unwrap();
|
||||
|
||||
sender_clone.send(()).unwrap();
|
||||
Ok(gst::FlowSuccess::Ok)
|
||||
|
@ -360,11 +352,7 @@ fn eos() {
|
|||
gst_app::AppSinkCallbacks::builder()
|
||||
.new_sample(move |appsink| {
|
||||
gst_debug!(CAT, obj: appsink, "eos: pulling sample");
|
||||
let _ = appsink
|
||||
.emit_by_name("pull-sample", &[])
|
||||
.unwrap()
|
||||
.get::<gst::Sample>()
|
||||
.unwrap();
|
||||
let _ = appsink.pull_sample().unwrap();
|
||||
|
||||
sample_notifier.send(()).unwrap();
|
||||
|
||||
|
@ -376,10 +364,7 @@ fn eos() {
|
|||
|
||||
fn push_buffer(src: &gst::Element) -> bool {
|
||||
gst_debug!(CAT, obj: src, "eos: pushing buffer");
|
||||
src.emit_by_name("push-buffer", &[&gst::Buffer::from_slice(vec![0; 1024])])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap()
|
||||
src.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::from_slice(vec![0; 1024])])
|
||||
}
|
||||
|
||||
let pipeline_clone = pipeline.clone();
|
||||
|
@ -390,11 +375,7 @@ fn eos() {
|
|||
|
||||
sample_notif_rcv.recv().unwrap();
|
||||
|
||||
assert!(src
|
||||
.emit_by_name("end-of-stream", &[])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap());
|
||||
assert!(src.emit_by_name::<bool>("end-of-stream", &[]));
|
||||
|
||||
eos_notif_rcv.recv().unwrap();
|
||||
|
||||
|
@ -498,11 +479,7 @@ fn premature_shutdown() {
|
|||
gst_app::AppSinkCallbacks::builder()
|
||||
.new_sample(move |appsink| {
|
||||
gst_debug!(CAT, obj: appsink, "premature_shutdown: pulling sample");
|
||||
let _sample = appsink
|
||||
.emit_by_name("pull-sample", &[])
|
||||
.unwrap()
|
||||
.get::<gst::Sample>()
|
||||
.unwrap();
|
||||
let _sample = appsink.pull_sample().unwrap();
|
||||
|
||||
appsink_sender.send(()).unwrap();
|
||||
|
||||
|
@ -518,10 +495,7 @@ fn premature_shutdown() {
|
|||
"premature_shutdown: pushing buffer {}",
|
||||
intent
|
||||
);
|
||||
src.emit_by_name("push-buffer", &[&gst::Buffer::from_slice(vec![0; 1024])])
|
||||
.unwrap()
|
||||
.get::<bool>()
|
||||
.unwrap()
|
||||
src.emit_by_name::<bool>("push-buffer", &[&gst::Buffer::from_slice(vec![0; 1024])])
|
||||
}
|
||||
|
||||
let pipeline_clone = pipeline.clone();
|
||||
|
|
|
@ -58,11 +58,7 @@ fn test_push() {
|
|||
appsink.set_callbacks(
|
||||
gst_app::AppSinkCallbacks::builder()
|
||||
.new_sample(move |appsink| {
|
||||
let sample = appsink
|
||||
.emit_by_name("pull-sample", &[])
|
||||
.unwrap()
|
||||
.get::<gst::Sample>()
|
||||
.unwrap();
|
||||
let sample = appsink.pull_sample().unwrap();
|
||||
|
||||
samples_clone.lock().unwrap().push(sample);
|
||||
|
||||
|
|
|
@ -53,11 +53,7 @@ fn test_push() {
|
|||
appsink.set_callbacks(
|
||||
gst_app::AppSinkCallbacks::builder()
|
||||
.new_sample(move |appsink| {
|
||||
let sample = appsink
|
||||
.emit_by_name("pull-sample", &[])
|
||||
.unwrap()
|
||||
.get::<gst::Sample>()
|
||||
.unwrap();
|
||||
let sample = appsink.pull_sample().unwrap();
|
||||
|
||||
samples_clone.lock().unwrap().push(sample);
|
||||
|
||||
|
|
|
@ -75,11 +75,7 @@ fn test_push() {
|
|||
appsink.set_callbacks(
|
||||
gst_app::AppSinkCallbacks::builder()
|
||||
.new_sample(move |appsink| {
|
||||
let sample = appsink
|
||||
.emit_by_name("pull-sample", &[])
|
||||
.unwrap()
|
||||
.get::<gst::Sample>()
|
||||
.unwrap();
|
||||
let sample = appsink.pull_sample().unwrap();
|
||||
|
||||
let mut samples = samples_clone.lock().unwrap();
|
||||
samples.push(sample);
|
||||
|
|
|
@ -40,26 +40,26 @@ fn test_client_management() {
|
|||
|
||||
assert_eq!(clients, "127.0.0.1:5004");
|
||||
|
||||
udpsink.emit_by_name("add", &[&"192.168.1.1", &57i32]);
|
||||
udpsink.emit_by_name::<()>("add", &[&"192.168.1.1", &57i32]);
|
||||
let clients = udpsink.property::<String>("clients");
|
||||
assert_eq!(clients, "127.0.0.1:5004,192.168.1.1:57");
|
||||
|
||||
/* Adding a client twice is not supported */
|
||||
udpsink.emit_by_name("add", &[&"192.168.1.1", &57i32]);
|
||||
udpsink.emit_by_name::<()>("add", &[&"192.168.1.1", &57i32]);
|
||||
let clients = udpsink.property::<String>("clients");
|
||||
assert_eq!(clients, "127.0.0.1:5004,192.168.1.1:57");
|
||||
|
||||
udpsink.emit_by_name("remove", &[&"192.168.1.1", &57i32]);
|
||||
udpsink.emit_by_name::<()>("remove", &[&"192.168.1.1", &57i32]);
|
||||
let clients = udpsink.property::<String>("clients");
|
||||
assert_eq!(clients, "127.0.0.1:5004");
|
||||
|
||||
/* Removing a non-existing client should not be a problem */
|
||||
udpsink.emit_by_name("remove", &[&"192.168.1.1", &57i32]);
|
||||
udpsink.emit_by_name::<()>("remove", &[&"192.168.1.1", &57i32]);
|
||||
let clients = udpsink.property::<String>("clients");
|
||||
assert_eq!(clients, "127.0.0.1:5004");
|
||||
|
||||
/* Removing the default client is possible */
|
||||
udpsink.emit_by_name("remove", &[&"127.0.0.1", &5004i32]);
|
||||
udpsink.emit_by_name::<()>("remove", &[&"127.0.0.1", &5004i32]);
|
||||
let clients = udpsink.property::<String>("clients");
|
||||
assert_eq!(clients, "");
|
||||
|
||||
|
@ -68,7 +68,7 @@ fn test_client_management() {
|
|||
let clients = udpsink.property::<String>("clients");
|
||||
assert_eq!(clients, "127.0.0.1:5004,192.168.1.1:57");
|
||||
|
||||
udpsink.emit_by_name("clear", &[]);
|
||||
udpsink.emit_by_name::<()>("clear", &[]);
|
||||
let clients = udpsink.property::<String>("clients");
|
||||
assert_eq!(clients, "");
|
||||
}
|
||||
|
|
|
@ -162,10 +162,11 @@ impl HlsSink3 {
|
|||
state.current_segment_location = Some(segment_file_location.clone());
|
||||
|
||||
let fragment_stream = element
|
||||
.emit_by_name(SIGNAL_GET_FRAGMENT_STREAM, &[&segment_file_location])
|
||||
.expect("Error while getting fragment stream")
|
||||
.get::<gio::OutputStream>()
|
||||
.map_err(|err| err.to_string())?;
|
||||
.emit_by_name::<Option<gio::OutputStream>>(
|
||||
SIGNAL_GET_FRAGMENT_STREAM,
|
||||
&[&segment_file_location],
|
||||
)
|
||||
.ok_or_else(|| String::from("Error while getting fragment stream"))?;
|
||||
|
||||
settings
|
||||
.giostreamsink
|
||||
|
@ -250,15 +251,12 @@ impl HlsSink3 {
|
|||
// Acquires the playlist file handle so we can update it with new content. By default, this
|
||||
// is expected to be the same file every time.
|
||||
let mut playlist_stream = element
|
||||
.emit_by_name(SIGNAL_GET_PLAYLIST_STREAM, &[&playlist_location])
|
||||
.expect("Error while getting playlist stream")
|
||||
.get::<gio::OutputStream>()
|
||||
.map_err(|err| {
|
||||
gst_error!(
|
||||
CAT,
|
||||
"Could not get stream to write playlist content: {}",
|
||||
err.to_string()
|
||||
);
|
||||
.emit_by_name::<Option<gio::OutputStream>>(
|
||||
SIGNAL_GET_PLAYLIST_STREAM,
|
||||
&[&playlist_location],
|
||||
)
|
||||
.ok_or_else(|| {
|
||||
gst_error!(CAT, "Could not get stream to write playlist content",);
|
||||
gst::StateChangeError
|
||||
})?
|
||||
.into_write();
|
||||
|
@ -280,9 +278,11 @@ impl HlsSink3 {
|
|||
if state.old_segment_locations.len() > max_num_segments {
|
||||
for _ in 0..state.old_segment_locations.len() - max_num_segments {
|
||||
let old_segment_location = state.old_segment_locations.remove(0);
|
||||
let _ = element
|
||||
.emit_by_name(SIGNAL_DELETE_FRAGMENT, &[&old_segment_location])
|
||||
.expect("Error while processing signal handler");
|
||||
if !element
|
||||
.emit_by_name::<bool>(SIGNAL_DELETE_FRAGMENT, &[&old_segment_location])
|
||||
{
|
||||
gst_error!(CAT, "Could not delete fragment");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -825,12 +825,7 @@ impl FallbackSrc {
|
|||
let source = gst::ElementFactory::make("uridecodebin3", Some("uridecodebin"))
|
||||
.expect("No uridecodebin3 found");
|
||||
|
||||
let uri = element
|
||||
.emit_by_name("update-uri", &[uri])
|
||||
.expect("No value returned");
|
||||
let uri = uri
|
||||
.get::<&str>()
|
||||
.expect("Wrong type returned from update-uri signal");
|
||||
let uri = element.emit_by_name::<glib::GString>("update-uri", &[uri]);
|
||||
|
||||
source.set_property("uri", uri);
|
||||
source.set_property("use-buffering", true);
|
||||
|
|
Loading…
Reference in a new issue