diff --git a/src/imp.rs b/src/imp.rs index 29dd8a2..311d2fe 100644 --- a/src/imp.rs +++ b/src/imp.rs @@ -488,9 +488,9 @@ impl ObjectImpl for FlexHlsSink { .expect("Could not make element splitmuxsink"); let app_sink = gst::ElementFactory::make("appsink", Some("giostreamsink_replacement_sink")) .expect("Could not make element appsink"); - app_sink.set_property("sync", &false).unwrap(); - app_sink.set_property("async", &false).unwrap(); - app_sink.set_property("emit-signals", &true).unwrap(); + // app_sink.set_property("sync", &false).unwrap(); + // app_sink.set_property("async", &false).unwrap(); + // app_sink.set_property("emit-signals", &true).unwrap(); let mux = gst::ElementFactory::make("mpegtsmux", Some("mpeg-ts_mux")) .expect("Could not make element mpegtsmux"); @@ -507,6 +507,7 @@ impl ObjectImpl for FlexHlsSink { ("muxer", &mux), ("sink", &app_sink), ("reset-muxer", &false), + ("async-finalize", &false), ]) .unwrap(); @@ -531,10 +532,17 @@ impl ObjectImpl for FlexHlsSink { .unwrap(); let appsink = app_sink.downcast_ref::().unwrap(); + appsink.set_emit_signals(true); + + appsink.connect_eos(|appsink| { + gst_info!(CAT, "Got EOS from giostreamsink_replacement_sink"); + }); let this = self.clone(); let element_weak = obj.downgrade(); appsink.connect_new_sample(move |appsink| { + gst_info!(CAT, "Got new sample from giostreamsink_replacement_sink"); + let sample = appsink.pull_sample().map_err(|_| gst::FlowError::Eos)?; let buffer = sample.buffer().ok_or(gst::FlowError::Error)?; diff --git a/tests/flexhlssink.rs b/tests/flexhlssink.rs index 5dbddcf..6618d32 100644 --- a/tests/flexhlssink.rs +++ b/tests/flexhlssink.rs @@ -29,7 +29,7 @@ fn init() { fn test_basic_element_with_video_content() { init(); - const BUFFER_NB: i32 = 500; + const BUFFER_NB: i32 = 200; let pipeline = gst::Pipeline::new(Some("video_pipeline")); @@ -48,10 +48,9 @@ fn test_basic_element_with_video_content() { // 6 - 391 let app_queue = gst::ElementFactory::make("queue", Some("test_app_queue")).unwrap(); - let app_sink = gst::ElementFactory::make("appsink", Some("test_appsink")).unwrap(); + let app_sink = gst::ElementFactory::make("appsink", Some("test_sink")).unwrap(); app_sink.set_property("sync", &false).unwrap(); app_sink.set_property("async", &false).unwrap(); - app_sink.set_property("emit-signals", &true).unwrap(); pipeline .add_many(&[ @@ -88,6 +87,7 @@ fn test_basic_element_with_video_content() { let appsink = app_sink.dynamic_cast::().unwrap(); + appsink.set_emit_signals(true); let (sender, receiver) = mpsc::channel(); appsink.connect_new_sample(move |appsink| { let sample = appsink.pull_sample().map_err(|_| gst::FlowError::Eos)?;