[PR #1793] Fix #1282: Implement deferred file creation to prevent empty output f… #2530

Open
opened 2026-01-29 17:22:37 +00:00 by claunia · 0 comments
Owner

Original Pull Request: https://github.com/CCExtractor/ccextractor/pull/1793

State: closed
Merged: No


In raising this pull request, I confirm the following (please check boxes):

  • I have read and understood the contributors guide.
  • I have checked that another pull request for this purpose does not exist.
  • I have considered, and confirmed that this submission will be valuable to others.
  • I accept that this submission may not be used, and the pull request closed at the will of the maintainer.
  • I give this submission freely, and claim no ownership to its content.
  • I have mentioned this change in the changelog.

My familiarity with the project is as follows (check one):

  • I have never used CCExtractor.
  • I have used CCExtractor just a couple of times.
  • I absolutely love CCExtractor, but have not contributed previously.
  • I am an active contributor to CCExtractor.

[FIX] Prevent creation of empty per-stream subtitle files (Fixes #1282)

This pull request implements deferred output file creation to avoid producing zero-byte .srt files for caption streams that contain no actual data (e.g., CC3 when using the -12 option). Previously, CCExtractor would create all output files during initialization regardless of whether the stream ever produced captions, resulting in empty files such as *_2.srt.

What This PR Does:

  • Introduces open_output_file_if_needed() to create files lazily on first write.
  • Removes eager open() calls from writer initialization.
  • Adds a header_written flag to prevent duplicate header writes.
  • Makes subtitle header writing deferred and safe by calling it only when needed.
  • Updates all encoder write paths (SRT, SSA, WebVTT, SAMI, SMPTE-TT, etc.) to use the new lazy-open logic.
  • Keeps append-mode behavior unchanged for backward compatibility.
**Original Pull Request:** https://github.com/CCExtractor/ccextractor/pull/1793 **State:** closed **Merged:** No --- <!-- Please prefix your pull request with one of the following: **[FEATURE]** **[FIX]** **[IMPROVEMENT]**. --> **In raising this pull request, I confirm the following (please check boxes):** - [X] I have read and understood the [contributors guide](https://github.com/CCExtractor/ccextractor/blob/master/.github/CONTRIBUTING.md). - [X] I have checked that another pull request for this purpose does not exist. - [X] I have considered, and confirmed that this submission will be valuable to others. - [X] I accept that this submission may not be used, and the pull request closed at the will of the maintainer. - [X] I give this submission freely, and claim no ownership to its content. - [X] **I have mentioned this change in the [changelog](https://github.com/CCExtractor/ccextractor/blob/master/docs/CHANGES.TXT).** **My familiarity with the project is as follows (check one):** - [ ] I have never used CCExtractor. - [X] I have used CCExtractor just a couple of times. - [ ] I absolutely love CCExtractor, but have not contributed previously. - [ ] I am an active contributor to CCExtractor. --- ## **[FIX] Prevent creation of empty per-stream subtitle files (Fixes #1282)** #### This pull request implements deferred output file creation to avoid producing zero-byte `.srt` files for caption streams that contain no actual data (e.g., CC3 when using the `-12` option). Previously, CCExtractor would create all output files during initialization regardless of whether the stream ever produced captions, resulting in empty files such as `*_2.srt`. ### What This PR Does: - Introduces `open_output_file_if_needed()` to create files lazily on first write. - Removes eager `open()` calls from writer initialization. - Adds a `header_written` flag to prevent duplicate header writes. - Makes subtitle header writing deferred and safe by calling it only when needed. - Updates all encoder write paths (SRT, SSA, WebVTT, SAMI, SMPTE-TT, etc.) to use the new lazy-open logic. - Keeps append-mode behavior unchanged for backward compatibility.
claunia added the pull-request label 2026-01-29 17:22:37 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/ccextractor#2530