tttocea708: don't reset the service writer for every incoming caption

This will break when using pop-on captions

It's also not needed every single time and can be relegated to only when
changing services.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2103>
This commit is contained in:
Matthew Waters 2025-02-21 11:00:51 +11:00 committed by GStreamer Marge Bot
parent 3d384bff62
commit 3feb4fcf51
2 changed files with 7 additions and 5 deletions

View file

@ -128,6 +128,10 @@ impl Cea708ServiceWriter {
}
}
pub fn service_no(&self) -> u8 {
self.service_no
}
pub fn take_service(&mut self, available_bytes: usize) -> Option<Service> {
if self.codes.is_empty() {
return None;

View file

@ -52,7 +52,6 @@ pub struct TextToCea708 {
// settings
mode: Cea708Mode,
roll_up_count: u8,
service_no: u8,
cea608_channel: Option<cea608_types::Id>,
origin_column: u32,
roll_up_timeout: Option<gst::ClockTime>,
@ -80,7 +79,6 @@ impl Default for TextToCea708 {
cea608: TextToCea608::default(),
mode: Cea708Mode::RollUp,
roll_up_count: 2,
service_no: 1,
cea608_channel: Some(cea608_types::Id::CC1),
origin_column: 0,
framerate: gst::Fraction::new(DEFAULT_FPS_N, DEFAULT_FPS_D),
@ -182,7 +180,9 @@ impl TextToCea708 {
}
pub fn set_service_no(&mut self, service_no: u8) {
self.service_no = service_no;
if service_no != self.service_writer.service_no() {
self.service_writer = Cea708ServiceWriter::new(service_no);
}
}
pub fn last_frame_no(&self) -> u64 {
@ -336,8 +336,6 @@ impl TextToCea708 {
self.cea608.generate(frame_no, end_frame_no, lines.clone());
}
self.service_writer = Cea708ServiceWriter::new(self.service_no);
if self.mode == Cea708Mode::PopOn || self.mode == Cea708Mode::PaintOn {
self.pen_location.column = 0;
};