From 0ef886ea16e3fef70a9c58c106212c24ab0aa7b2 Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Mon, 1 Jul 2024 11:45:41 +0200 Subject: [PATCH] transcriberbin: fix internal ghost pad name regression As part of https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1593 source pad names on inner transcription bins were appended a suffix, but other pieces of the code were not updated to account for that. Part-of: --- video/closedcaption/src/transcriberbin/imp.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/video/closedcaption/src/transcriberbin/imp.rs b/video/closedcaption/src/transcriberbin/imp.rs index 10dfa70f..ea32b359 100644 --- a/video/closedcaption/src/transcriberbin/imp.rs +++ b/video/closedcaption/src/transcriberbin/imp.rs @@ -875,7 +875,10 @@ impl TranscriberBin { channel.link_transcriber(&pad_state.transcriber)?; - let srcpad = pad_state.transcription_bin.static_pad("src").unwrap(); + let srcpad = pad_state + .transcription_bin + .static_pad(&format!("src_{}", channel.language)) + .unwrap(); srcpad .downcast_ref::() @@ -1545,9 +1548,14 @@ impl ElementImpl for TranscriberBin { let _ = pad_state.transcription_bin.set_state(gst::State::Null); if let Some(ref mut state) = s.as_mut() { - if let Some(srcpad) = pad_state.transcription_bin.static_pad("src") { - if let Some(peer) = srcpad.peer() { - let _ = state.ccmux.remove_pad(&peer); + for channel in pad_state.transcription_channels.values() { + if let Some(srcpad) = pad_state + .transcription_bin + .static_pad(&format!("src_{}", channel.language)) + { + if let Some(peer) = srcpad.peer() { + let _ = state.ccmux.remove_pad(&peer); + } } }