Substation Alpha (SSA/ASS) output is not fully compliant with format specification
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 58/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- c
- Domain
- audio-video-rtc
Research direction
The issue names no source file or test. Start by locating the C code that emits Substation Alpha/ASS Dialogue lines, then compare its timing and inline-format output with the examples; done when hours and centiseconds are fixed-width and formatting uses SSA tags without unnecessary closing tags.
Written by the indexing model from the issue text.
Description
Substation Alpha output produced by CCExtractor is correctly interpreted by most playback software, but is not technically compliant with the format specification. Here is example output produced from my previously uploaded DresdenTest.ts:
Dialogue: 0,00:00:08.90,00:00:12.07,Default,,0000,0000,0000,,{\an7\pos(67,228)} - WHAT IS IT? \N - THIS WAS YOUR MOTHER'S.
Dialogue: 0,00:00:12.7,00:00:14.29,Default,,0000,0000,0000,,{\an7\pos(154,244)} <i> GO AHEAD, OPEN IT.</i>
The first issue is with the timing format. Substation Alpha timing format uses a fixed number of digits for all timings: two for all units except the hours, which are limited to one digit. All of the example lines use two digits for the hours rather than one. Additionally, the second line does not add the leading zero to the decimal for the start time, causing it to incorrectly be presented as starting at 12.70 seconds rather than 12.07 seconds. The correct format for the timings would be as follows:
Dialogue: 0,0:00:08.90,0:00:12.07,Default,,0000,0000,0000,,{\an7\pos(67,228)} - WHAT IS IT? \N - THIS WAS YOUR MOTHER'S.
Dialogue: 0,0:00:12.07,0:00:14.29,Default,,0000,0000,0000,,{\an7\pos(154,244)} <i> GO AHEAD, OPEN IT.</i>
Second, Substation Alpha does not use html tags for format changes, but rather its own formatting tags which can be applied mid-text like html, but unlike html do not need to be followed by a corresponding close tag if the format persists to the end of the subtitle since line formatting is reset to default with each new subtitle. Again, here is the current output produced from DresdenTest.ts:
Dialogue: 0,00:00:01.45,00:00:03.40,Default,,0000,0000,0000,,{\an7\pos(125,244)} <i> ( opens chest )</i>
Dialogue: 0,00:00:08.90,00:00:12.07,Default,,0000,0000,0000,,{\an7\pos(67,228)} - WHAT IS IT? \N - THIS WAS YOUR MOTHER'S.
Dialogue: 0,00:00:12.7,00:00:14.29,Default,,0000,0000,0000,,{\an7\pos(154,244)} <i> GO AHEAD, OPEN IT.</i>
Dialogue: 0,00:00:23.92,00:00:25.42,Default,,0000,0000,0000,,{\an7\pos(106,244)} <i> THAT'S A SHIELD BRACELET.</i>
Dialogue: 0,00:00:25.42,00:00:26.40,Default,,0000,0000,0000,,{\an7\pos(163,228)} <i> I NEVER REALLY KNEW</i>\N <i> HOW IT WORKED,</i>
To match Substation Alpha specification (including the timing issue mentioned above) the output should look as follows:
Dialogue: 0,0:00:01.45,0:00:03.40,Default,,0000,0000,0000,,{\an7\pos(125,244)} {\i1} ( opens chest )
Dialogue: 0,0:00:08.90,0:00:12.07,Default,,0000,0000,0000,,{\an7\pos(67,228)} - WHAT IS IT? \N - THIS WAS YOUR MOTHER'S.
Dialogue: 0,0:00:12.07,0:00:14.29,Default,,0000,0000,0000,,{\an7\pos(154,244)} {\i1} GO AHEAD, OPEN IT.
Dialogue: 0,0:00:23.92,0:00:25.42,Default,,0000,0000,0000,,{\an7\pos(106,244)} {\i1} THAT'S A SHIELD BRACELET.
Dialogue: 0,0:00:25.42,0:00:26.40,Default,,0000,0000,0000,,{\an7\pos(163,228)} {\i1} I NEVER REALLY KNEW{\i0}\N {\i1} HOW IT WORKED,
- Dominant language
- C
- Stars
- 901
- Forks
- 592
- Avg merge
- 7d 23h
- Merged PRs (30d)
- 11
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from CCExtractor/ccextractor
-
[BUG] Legacy options -608, -708, -90090, -UCLA, -CC2, -LF, -DF, -parsepat, -parsepmt still rejected after #1856Possibly taken @Deepak-negi11 claimed this 3 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
CCExtractor/ccextractor#2367 ·
Maintainers usually reply within 1 day
-
[BUG] Memory leak in free_sub_track(): blockaddition and message buffer never freed for WebVTT tracksPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 1/5 Under an hour Newbie friendliness 86/100
CCExtractor/ccextractor#2247 ·
Maintainers usually reply within 1 day
-
`--out=mcc`: CDP cc_count field overflows above 31 triplets; uint8 `data_size` corrupts lengths and over-reads at higher countsPossibly taken @kaihere14 claimed this 10 days ago. Open
Difficulty 3/5 1-2 days Newbie friendliness 72/100
CCExtractor/ccextractor#2365 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 68/100
CCExtractor/ccextractor#2358 · 1 comment ·
Maintainers usually reply within 1 day
-
--tpages-all extracts less than --tpagePossibly taken @SajalDevX claimed this 18 days ago. Open
Difficulty 3/5 1-2 days Newbie friendliness 65/100
CCExtractor/ccextractor#2355 ·
Maintainers usually reply within 1 day
All issues in CCExtractor/ccextractor
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 63/100
Xinyuan-LilyGO/T-Display-S3#352 · 3 comments ·
-
documentation severity/minor
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
docs: AGENTS.md has no rule against running deploy scripts into the owner's game installPossibly taken @thesprockee claimed this today. Open
Difficulty 1/5 Under an hour Newbie friendliness 85/100
EchoTools/nevr-runtime#524 ·
Maintainers usually reply within 1 day
-
python library: btc_sign() sends antiklepto host nonce for taproot miniscript (tr() policy) inputs because is_taproot() only recognizes simple P2TRPossibly taken @benma-agent claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
BitBoxSwiss/bitbox02-firmware#2145 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 74/100
Genymobile/scrcpy#7097 ·
Maintainers usually reply within 1 day