From 817d923459ab000b3489c0feb5b365e0c4f2d580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sat, 9 Aug 2025 17:12:26 +0300 Subject: [PATCH] analyticscombiner: Use NULL caps instead of EMPTY caps in the array for streams with no caps EMPTY/ANY caps are not considered fixed caps. Part-of: --- analytics/analytics/src/combiner/imp.rs | 8 ++--- analytics/analytics/src/splitter/imp.rs | 6 ++-- .../analytics/tests/analyticscombiner.rs | 34 +++++++++---------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/analytics/analytics/src/combiner/imp.rs b/analytics/analytics/src/combiner/imp.rs index 38ab6bf24..731843645 100644 --- a/analytics/analytics/src/combiner/imp.rs +++ b/analytics/analytics/src/combiner/imp.rs @@ -440,7 +440,7 @@ impl AggregatorImpl for AnalyticsCombiner { let Some(stream_caps) = streams .get(pad_index) - .map(|v| v.get::().unwrap()) + .and_then(|v| v.get::>().unwrap()) else { continue; }; @@ -532,11 +532,11 @@ impl AggregatorImpl for AnalyticsCombiner { return None; }; let caps = caps.caps_owned(); - Some(caps) + Some(Some(caps)) }) .unwrap_or_else(|| { - gst::warning!(CAT, obj = pad, "No caps for pad, using empty caps for now"); - gst::Caps::new_empty() + gst::warning!(CAT, obj = pad, "No caps for pad, using NULL caps for now"); + None:: }); streams.append(caps); diff --git a/analytics/analytics/src/splitter/imp.rs b/analytics/analytics/src/splitter/imp.rs index 37df29b7c..1e705430a 100644 --- a/analytics/analytics/src/splitter/imp.rs +++ b/analytics/analytics/src/splitter/imp.rs @@ -16,7 +16,7 @@ static CAT: LazyLock = LazyLock::new(|| { struct Stream { pad: gst::Pad, - caps: gst::Caps, + caps: Option, } struct State { @@ -240,7 +240,7 @@ impl AnalyticsSplitter { }; let streams = streams .iter() - .map(|v| v.get::().unwrap()) + .map(|v| v.get::>().unwrap()) .collect::>(); let mut state_guard = self.state.lock().unwrap(); @@ -410,7 +410,7 @@ impl AnalyticsSplitter { let Some(stream_caps) = streams .get(pad_index) - .map(|v| v.get::().unwrap()) + .and_then(|v| v.get::>().unwrap()) else { continue; }; diff --git a/analytics/analytics/tests/analyticscombiner.rs b/analytics/analytics/tests/analyticscombiner.rs index 7776b0481..0778a61cc 100644 --- a/analytics/analytics/tests/analyticscombiner.rs +++ b/analytics/analytics/tests/analyticscombiner.rs @@ -185,11 +185,11 @@ fn test_combine_multi() { .get::("streams") .unwrap() .iter() - .map(|v| v.get::().unwrap()) + .map(|v| v.get::>().unwrap()) .collect::>(); assert_eq!(streams.len(), 2); - assert_eq!(&streams[0], &h0_caps); - assert_eq!(&streams[1], &h1_caps); + assert_eq!(streams[0].as_ref(), Some(&h0_caps)); + assert_eq!(streams[1].as_ref(), Some(&h1_caps)); let ev = h0.pull_event().unwrap(); assert_eq!(ev.type_(), gst::EventType::Segment); @@ -374,10 +374,10 @@ fn test_strategy_all() { .get::("streams") .unwrap() .iter() - .map(|v| v.get::().unwrap()) + .map(|v| v.get::>().unwrap()) .collect::>(); assert_eq!(streams.len(), 1); - assert_eq!(&streams[0], &h_caps); + assert_eq!(streams[0].as_ref(), Some(&h_caps)); let ev = h.pull_event().unwrap(); assert_eq!(ev.type_(), gst::EventType::Segment); @@ -557,10 +557,10 @@ fn test_strategy_first() { .get::("streams") .unwrap() .iter() - .map(|v| v.get::().unwrap()) + .map(|v| v.get::>().unwrap()) .collect::>(); assert_eq!(streams.len(), 1); - assert_eq!(&streams[0], &h_caps); + assert_eq!(streams[0].as_ref(), Some(&h_caps)); let ev = h.pull_event().unwrap(); assert_eq!(ev.type_(), gst::EventType::Segment); @@ -740,10 +740,10 @@ fn test_strategy_first_with_overlap() { .get::("streams") .unwrap() .iter() - .map(|v| v.get::().unwrap()) + .map(|v| v.get::>().unwrap()) .collect::>(); assert_eq!(streams.len(), 1); - assert_eq!(&streams[0], &h_caps); + assert_eq!(streams[0].as_ref(), Some(&h_caps)); let ev = h.pull_event().unwrap(); assert_eq!(ev.type_(), gst::EventType::Segment); @@ -923,10 +923,10 @@ fn test_strategy_last() { .get::("streams") .unwrap() .iter() - .map(|v| v.get::().unwrap()) + .map(|v| v.get::>().unwrap()) .collect::>(); assert_eq!(streams.len(), 1); - assert_eq!(&streams[0], &h_caps); + assert_eq!(streams[0].as_ref(), Some(&h_caps)); let ev = h.pull_event().unwrap(); assert_eq!(ev.type_(), gst::EventType::Segment); @@ -1156,11 +1156,11 @@ fn test_combine_multi_initial_gap() { .get::("streams") .unwrap() .iter() - .map(|v| v.get::().unwrap()) + .map(|v| v.get::>().unwrap()) .collect::>(); assert_eq!(streams.len(), 2); - assert_eq!(&streams[0], &h0_caps); - assert_eq!(&streams[1], &gst::Caps::new_empty()); + assert_eq!(streams[0].as_ref(), Some(&h0_caps)); + assert_eq!(streams[1].as_ref(), None); let ev = h0.pull_event().unwrap(); assert_eq!(ev.type_(), gst::EventType::Segment); @@ -1177,11 +1177,11 @@ fn test_combine_multi_initial_gap() { .get::("streams") .unwrap() .iter() - .map(|v| v.get::().unwrap()) + .map(|v| v.get::>().unwrap()) .collect::>(); assert_eq!(streams.len(), 2); - assert_eq!(&streams[0], &h0_caps); - assert_eq!(&streams[1], &h1_caps); + assert_eq!(streams[0].as_ref(), Some(&h0_caps)); + assert_eq!(streams[1].as_ref(), Some(&h1_caps)); let ev = h0.pull_event().unwrap(); assert_eq!(ev.type_(), gst::EventType::Eos);