sccparse: Fix leading spaces between the tab and caption data

CCExtractor is creating files like this.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1378>
This commit is contained in:
Sebastian Dröge 2023-11-02 21:03:52 +02:00
parent 16b917abb1
commit a33f29365a

View file

@ -111,6 +111,7 @@ fn scc_payload(s: &[u8]) -> IResult<&[u8], Vec<u8>> {
/// Parser for a SCC caption line in the form `timecode\tpayload`. /// Parser for a SCC caption line in the form `timecode\tpayload`.
fn caption(s: &[u8]) -> IResult<&[u8], SccLine> { fn caption(s: &[u8]) -> IResult<&[u8], SccLine> {
use nom::bytes::complete::tag; use nom::bytes::complete::tag;
use nom::character::complete::multispace0;
use nom::combinator::map; use nom::combinator::map;
use nom::error::context; use nom::error::context;
use nom::sequence::tuple; use nom::sequence::tuple;
@ -118,8 +119,8 @@ fn caption(s: &[u8]) -> IResult<&[u8], SccLine> {
context( context(
"invalid SCC caption line", "invalid SCC caption line",
map( map(
tuple((timecode, tag("\t"), scc_payload, end_of_line)), tuple((timecode, tag("\t"), multispace0, scc_payload, end_of_line)),
|(tc, _, value, _)| SccLine::Caption(tc, value), |(tc, _, _, value, _)| SccLine::Caption(tc, value),
), ),
)(s) )(s)
} }