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

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

📋 Pull Request Information

Original PR: https://github.com/CCExtractor/ccextractor/pull/1793
Author: @VyankateshD206
Created: 12/12/2025
Status: Closed

Base: masterHead: fix-empty-output-files-issue-1282


📝 Commits (7)

  • d171ad4 Fix #1282: Implement deferred file creation to prevent empty output files
  • 763f824 Fix: Broken and DVB issues
  • 049e970 Merge branch 'master' into fix-empty-output-files-issue-1282
  • c199d4c Fix XDS data writing - ensure file opened before writing XDS content
  • 3869b0f Fix SAMI encoder - add missing header writes to stringz and buffer functions
  • 6b79eb5 Fix transcript and DVDRAW encoders - add missing header writes
  • 22838e0 Fix transcript encoder - defer header write until after data validation

📊 Changes

11 files changed (+195 additions, -14 deletions)

View changed files

📝 src/lib_ccx/ccx_encoders_common.c (+41 -2)
📝 src/lib_ccx/ccx_encoders_common.h (+1 -0)
📝 src/lib_ccx/ccx_encoders_sami.c (+12 -0)
📝 src/lib_ccx/ccx_encoders_smptett.c (+12 -0)
📝 src/lib_ccx/ccx_encoders_srt.c (+12 -0)
📝 src/lib_ccx/ccx_encoders_ssa.c (+12 -0)
📝 src/lib_ccx/ccx_encoders_structs.h (+1 -0)
📝 src/lib_ccx/ccx_encoders_transcript.c (+14 -0)
📝 src/lib_ccx/ccx_encoders_webvtt.c (+12 -0)
📝 src/lib_ccx/lib_ccx.h (+1 -0)
📝 src/lib_ccx/output.c (+77 -12)

📄 Description

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.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/CCExtractor/ccextractor/pull/1793 **Author:** [@VyankateshD206](https://github.com/VyankateshD206) **Created:** 12/12/2025 **Status:** ❌ Closed **Base:** `master` ← **Head:** `fix-empty-output-files-issue-1282` --- ### 📝 Commits (7) - [`d171ad4`](https://github.com/CCExtractor/ccextractor/commit/d171ad490c4d0b9b8b7f8e8912c3ce9fbf112a30) Fix #1282: Implement deferred file creation to prevent empty output files - [`763f824`](https://github.com/CCExtractor/ccextractor/commit/763f824e959c5624fed46031080c8420b4551685) Fix: Broken and DVB issues - [`049e970`](https://github.com/CCExtractor/ccextractor/commit/049e97080ec41dbd9f6a77670e59b7cb379f8880) Merge branch 'master' into fix-empty-output-files-issue-1282 - [`c199d4c`](https://github.com/CCExtractor/ccextractor/commit/c199d4c19b8113db613b5924eab9a0b6c42f7f69) Fix XDS data writing - ensure file opened before writing XDS content - [`3869b0f`](https://github.com/CCExtractor/ccextractor/commit/3869b0fe0a3e4fe8b94ee0eca304d72281526249) Fix SAMI encoder - add missing header writes to stringz and buffer functions - [`6b79eb5`](https://github.com/CCExtractor/ccextractor/commit/6b79eb52ea116c33819682f739006b444d8c93e0) Fix transcript and DVDRAW encoders - add missing header writes - [`22838e0`](https://github.com/CCExtractor/ccextractor/commit/22838e027440f123338e34ba20394c82dfc599aa) Fix transcript encoder - defer header write until after data validation ### 📊 Changes **11 files changed** (+195 additions, -14 deletions) <details> <summary>View changed files</summary> 📝 `src/lib_ccx/ccx_encoders_common.c` (+41 -2) 📝 `src/lib_ccx/ccx_encoders_common.h` (+1 -0) 📝 `src/lib_ccx/ccx_encoders_sami.c` (+12 -0) 📝 `src/lib_ccx/ccx_encoders_smptett.c` (+12 -0) 📝 `src/lib_ccx/ccx_encoders_srt.c` (+12 -0) 📝 `src/lib_ccx/ccx_encoders_ssa.c` (+12 -0) 📝 `src/lib_ccx/ccx_encoders_structs.h` (+1 -0) 📝 `src/lib_ccx/ccx_encoders_transcript.c` (+14 -0) 📝 `src/lib_ccx/ccx_encoders_webvtt.c` (+12 -0) 📝 `src/lib_ccx/lib_ccx.h` (+1 -0) 📝 `src/lib_ccx/output.c` (+77 -12) </details> ### 📄 Description <!-- 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. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
claunia added the pull-request label 2026-01-29 17:22:36 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/ccextractor#2527