diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2019-02-12 15:34:19 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2019-02-12 15:34:19 +0300 |
commit | aebbe8c39b5c6f1935daa77c81ca53d9717757cd (patch) | |
tree | 3958785113ca2dfbf2f7f99f437442d81fbdf3f1 | |
parent | e8c58849313815f989f0b04408f695924494d53f (diff) |
scc_parse: Don't send a new caps event for every new line
Only send new caps when the framerate has actually changed.
-rw-r--r-- | gst-plugin-closedcaption/src/scc_parse.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/gst-plugin-closedcaption/src/scc_parse.rs b/gst-plugin-closedcaption/src/scc_parse.rs index b6d2d60d9..e15a05fd5 100644 --- a/gst-plugin-closedcaption/src/scc_parse.rs +++ b/gst-plugin-closedcaption/src/scc_parse.rs @@ -46,6 +46,7 @@ struct State { parser: SccParser, need_segment: bool, pending_events: Vec<gst::Event>, + framerate: Option<gst::Fraction>, start_position: gst::ClockTime, last_position: gst::ClockTime, last_timecode: Option<gst_video::ValidVideoTimeCode>, @@ -58,6 +59,7 @@ impl Default for State { parser: SccParser::new(), need_segment: true, pending_events: Vec::new(), + framerate: None, start_position: gst::CLOCK_TIME_NONE, last_position: gst::CLOCK_TIME_NONE, last_timecode: None, @@ -311,11 +313,14 @@ impl SccParse { let mut events = Vec::new(); - let caps = gst::Caps::builder("closedcaption/x-cea-608") - .field("format", &"raw") - .field("framerate", &framerate) - .build(); - events.push(gst::Event::new_caps(&caps).build()); + if Some(framerate) != state.framerate { + let caps = gst::Caps::builder("closedcaption/x-cea-608") + .field("format", &"raw") + .field("framerate", &framerate) + .build(); + events.push(gst::Event::new_caps(&caps).build()); + state.framerate = Some(framerate); + } if state.need_segment { let segment = gst::FormattedSegment::<gst::format::Time>::new(); |