Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sdroege/gst-plugin-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/net/rtp
diff options
context:
space:
mode:
authorPhilippe Normand <philn@igalia.com>2023-01-03 19:07:20 +0300
committerSebastian Dröge <sebastian@centricular.com>2023-01-03 20:35:45 +0300
commit0fd63ece7d25cad588ce8959fdf0d1cd1e9c9560 (patch)
treea067e010f48f16ee19f2c6ce1b4c979e8adc1def /net/rtp
parentaf9d9c0a5cd749181197c33f4eb0d207986b4df7 (diff)
rtpav1depay: Implement srcpad set_caps
Without this auto-pluggers such as decodebin or parsebin will be unable to process AV1 RTP payloads. Tested with: `videotestsrc num-buffers=50 ! videoconvert ! av1enc ! av1parse ! rtpav1pay ! queue ! decodebin3 ! videoconvert ! queue ! autovideosink` Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1034>
Diffstat (limited to 'net/rtp')
-rw-r--r--net/rtp/src/av1/depay/imp.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/net/rtp/src/av1/depay/imp.rs b/net/rtp/src/av1/depay/imp.rs
index 88b26fce..2312026e 100644
--- a/net/rtp/src/av1/depay/imp.rs
+++ b/net/rtp/src/av1/depay/imp.rs
@@ -8,6 +8,7 @@
// SPDX-License-Identifier: MPL-2.0
use gst::{glib, subclass::prelude::*};
+use gst_rtp::prelude::*;
use gst_rtp::subclass::prelude::*;
use std::{
cmp::Ordering,
@@ -142,6 +143,15 @@ impl ElementImpl for RTPAv1Depay {
}
impl RTPBaseDepayloadImpl for RTPAv1Depay {
+ fn set_caps(&self, _caps: &gst::Caps) -> Result<(), gst::LoggableError> {
+ let element = self.obj();
+ let src_pad = element.src_pad();
+ let src_caps = src_pad.pad_template_caps();
+ src_pad.push_event(gst::event::Caps::builder(&src_caps).build());
+
+ Ok(())
+ }
+
fn handle_event(&self, event: gst::Event) -> bool {
match event.view() {
gst::EventView::Eos(_) | gst::EventView::FlushStop(_) => {
@@ -445,7 +455,6 @@ impl RTPAv1Depay {
#[rustfmt::skip]
mod tests {
use super::*;
- use gst_rtp::prelude::*;
use std::io::Cursor;
#[test]