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

gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2019-02-12 15:35:22 +0300
committerSebastian Dröge <sebastian@centricular.com>2019-02-12 15:35:22 +0300
commit09d7555653035494827d998859076d3a256077b7 (patch)
tree57d099b36b75d2bd317f6c2cf87f2e77e601db4a
parentaebbe8c39b5c6f1935daa77c81ca53d9717757cd (diff)
scc_enc: Don't assert if we're trying to write a line without anything buffered
This can happen at EOS if everything was fully written out before already, for example.
-rw-r--r--gst-plugin-closedcaption/src/scc_enc.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/gst-plugin-closedcaption/src/scc_enc.rs b/gst-plugin-closedcaption/src/scc_enc.rs
index 921600684..888e8580f 100644
--- a/gst-plugin-closedcaption/src/scc_enc.rs
+++ b/gst-plugin-closedcaption/src/scc_enc.rs
@@ -117,13 +117,15 @@ impl State {
// flush the previous line into the buffer, and push
// the new packet to the, now empty, internal buffer
if Some(&timecode) != self.expected_timecode.as_ref() {
- let res = self.write_line(element);
+ let outbuf = self.write_line(element)?;
+
assert!(self.internal_buffer.is_empty());
self.internal_buffer.push(buffer);
timecode.increment_frame();
self.expected_timecode = Some(timecode);
- return res;
+
+ return Ok(outbuf);
} else if let Some(ref mut timecode) = self.expected_timecode {
timecode.increment_frame();
}
@@ -145,7 +147,9 @@ impl State {
let mut outbuf = Vec::new();
let mut line_start = true;
- assert!(!self.internal_buffer.is_empty());
+ if self.internal_buffer.is_empty() {
+ return Ok(None);
+ }
if self.need_headers {
self.generate_headers(&mut outbuf);
@@ -311,8 +315,8 @@ impl SccEnc {
gst_error!(CAT, obj: pad, "Failed to push buffer to the pad");
return false;
}
- } else {
- gst_error!(CAT, obj: pad, "Failed to write a line after EOS");
+ } else if let Err(err) = outbuf {
+ gst_error!(CAT, obj: pad, "Failed to write a line after EOS: {:?}", err);
return false;
}
pad.event_default(element, event)