Update for GLib signal emit_by_name() API changes

This commit is contained in:
Sebastian Dröge 2021-11-21 18:15:04 +02:00
parent 55aad51141
commit c68f6b2631
10 changed files with 54 additions and 150 deletions

View file

@ -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();

View file

@ -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());

View file

@ -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)

View file

@ -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();

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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, "");
}

View file

@ -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");
}
}
}
}

View file

@ -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);