transcriberbin: require final framerate from cea608mux

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1164>
This commit is contained in:
Mathieu Duponchelle 2023-04-07 17:46:45 +02:00
parent c141a82dfb
commit c846147275

View file

@ -74,6 +74,7 @@ struct State {
transcriber_aconv: gst::Element, transcriber_aconv: gst::Element,
transcriber: gst::Element, transcriber: gst::Element,
ccmux: gst::Element, ccmux: gst::Element,
ccmux_filter: gst::Element,
cccombiner: gst::Element, cccombiner: gst::Element,
transcription_bin: gst::Bin, transcription_bin: gst::Bin,
transcription_channels: HashMap<String, TranscriptionChannel>, transcription_channels: HashMap<String, TranscriptionChannel>,
@ -176,6 +177,7 @@ impl TranscriberBin {
&state.transcriber_aconv, &state.transcriber_aconv,
&state.transcriber, &state.transcriber,
&state.ccmux, &state.ccmux,
&state.ccmux_filter,
&ccconverter, &ccconverter,
&state.cccapsfilter, &state.cccapsfilter,
&state.transcription_valve, &state.transcription_valve,
@ -189,6 +191,7 @@ impl TranscriberBin {
gst::Element::link_many([ gst::Element::link_many([
&state.ccmux, &state.ccmux,
&state.ccmux_filter,
&ccconverter, &ccconverter,
&state.cccapsfilter, &state.cccapsfilter,
&state.transcription_valve, &state.transcription_valve,
@ -329,6 +332,12 @@ impl TranscriberBin {
state.cccapsfilter.set_property("caps", &cc_caps); state.cccapsfilter.set_property("caps", &cc_caps);
let ccmux_caps = gst::Caps::builder("closedcaption/x-cea-608")
.field("framerate", state.framerate.unwrap())
.build();
state.ccmux_filter.set_property("caps", ccmux_caps);
let max_size_time = settings.latency let max_size_time = settings.latency
+ settings.translate_latency + settings.translate_latency
+ settings.accumulate_time + settings.accumulate_time
@ -710,6 +719,7 @@ impl TranscriberBin {
let ccmux = gst::ElementFactory::make("cea608mux") let ccmux = gst::ElementFactory::make("cea608mux")
.property_from_str("start-time-selection", "first") .property_from_str("start-time-selection", "first")
.build()?; .build()?;
let ccmux_filter = gst::ElementFactory::make("capsfilter").build()?;
let mut transcription_channels = HashMap::new(); let mut transcription_channels = HashMap::new();
@ -741,6 +751,7 @@ impl TranscriberBin {
transcriber_aconv, transcriber_aconv,
transcriber, transcriber,
ccmux, ccmux,
ccmux_filter,
audio_tee, audio_tee,
cccombiner, cccombiner,
transcription_bin, transcription_bin,