[PR #1843] [MERGED] fix: McPoodle DVD raw format read/write (Issue #1524) #2606

Closed
opened 2026-01-29 17:23:03 +00:00 by claunia · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/CCExtractor/ccextractor/pull/1843
Author: @cfsmp3
Created: 12/18/2025
Status: Merged
Merged: 12/18/2025
Merged by: @cfsmp3

Base: masterHead: fix/issue-1524-mcpoodle-dvdraw


📝 Commits (2)

  • ac49bb5 fix: McPoodle DVD raw format read/write (Issue #1524)
  • 88fbe91 style: Fix formatting and clippy warnings

📊 Changes

11 files changed (+697 additions, -47 deletions)

View changed files

📝 src/lib_ccx/ccx_common_constants.c (+2 -2)
📝 src/lib_ccx/ccx_common_constants.h (+2 -2)
📝 src/lib_ccx/general_loop.c (+26 -5)
📝 src/lib_ccx/lib_ccx.h (+5 -0)
📝 src/lib_ccx/output.c (+71 -35)
📝 src/lib_ccx/stream_functions.c (+13 -0)
📝 src/rust/lib_ccxr/src/common/constants.rs (+2 -2)
src/rust/src/demuxer/dvdraw.rs (+477 -0)
📝 src/rust/src/demuxer/mod.rs (+1 -0)
📝 src/rust/src/demuxer/stream_functions.rs (+15 -0)
📝 src/rust/src/libccxr_exports/demuxer.rs (+83 -1)

📄 Description

Summary

Fixes #1524 - McPoodle DVD raw format can neither be read nor written correctly.

Reading

  • Migrate DVD raw parser from C to Rust (src/rust/src/demuxer/dvdraw.rs)
  • Add FFI exports: ccxr_process_dvdraw(), ccxr_is_dvdraw_header()
  • Handle both McPoodle's single-byte and legacy 2-byte loop markers
  • Add 15 unit tests covering all edge cases

Writing

  • Fix LC3/LC4 constants from 2-byte to 1-byte to match McPoodle's format
  • Output files now have identical size to McPoodle's original (118,527 bytes for test file)

Test Results

Test Result
Read McPoodle's dvdraw Correct captions extracted
Write dvdraw from TS Correct file size (matches McPoodle's)
Roundtrip (TS→dvdraw→SRT) Caption content identical to direct extraction
Rust unit tests All 15 pass

Test plan

  • Verify reading McPoodle's original dvdraw file produces correct captions
  • Verify writing dvdraw from TS produces file with identical size to McPoodle's
  • Verify roundtrip (TS → dvdraw → SRT) produces same captions as direct extraction
  • Run Rust tests: cargo test dvdraw

🤖 Generated with Claude Code


🔄 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/1843 **Author:** [@cfsmp3](https://github.com/cfsmp3) **Created:** 12/18/2025 **Status:** ✅ Merged **Merged:** 12/18/2025 **Merged by:** [@cfsmp3](https://github.com/cfsmp3) **Base:** `master` ← **Head:** `fix/issue-1524-mcpoodle-dvdraw` --- ### 📝 Commits (2) - [`ac49bb5`](https://github.com/CCExtractor/ccextractor/commit/ac49bb59785d5fcb98a4d7ce0106e9777cb6d29a) fix: McPoodle DVD raw format read/write (Issue #1524) - [`88fbe91`](https://github.com/CCExtractor/ccextractor/commit/88fbe9190ad2c3aef25160f08877080dbac28758) style: Fix formatting and clippy warnings ### 📊 Changes **11 files changed** (+697 additions, -47 deletions) <details> <summary>View changed files</summary> 📝 `src/lib_ccx/ccx_common_constants.c` (+2 -2) 📝 `src/lib_ccx/ccx_common_constants.h` (+2 -2) 📝 `src/lib_ccx/general_loop.c` (+26 -5) 📝 `src/lib_ccx/lib_ccx.h` (+5 -0) 📝 `src/lib_ccx/output.c` (+71 -35) 📝 `src/lib_ccx/stream_functions.c` (+13 -0) 📝 `src/rust/lib_ccxr/src/common/constants.rs` (+2 -2) ➕ `src/rust/src/demuxer/dvdraw.rs` (+477 -0) 📝 `src/rust/src/demuxer/mod.rs` (+1 -0) 📝 `src/rust/src/demuxer/stream_functions.rs` (+15 -0) 📝 `src/rust/src/libccxr_exports/demuxer.rs` (+83 -1) </details> ### 📄 Description ## Summary Fixes #1524 - McPoodle DVD raw format can neither be read nor written correctly. ### Reading - Migrate DVD raw parser from C to Rust (`src/rust/src/demuxer/dvdraw.rs`) - Add FFI exports: `ccxr_process_dvdraw()`, `ccxr_is_dvdraw_header()` - Handle both McPoodle's single-byte and legacy 2-byte loop markers - Add 15 unit tests covering all edge cases ### Writing - Fix LC3/LC4 constants from 2-byte to 1-byte to match McPoodle's format - Output files now have identical size to McPoodle's original (118,527 bytes for test file) ## Test Results | Test | Result | |------|--------| | Read McPoodle's dvdraw | ✅ Correct captions extracted | | Write dvdraw from TS | ✅ Correct file size (matches McPoodle's) | | Roundtrip (TS→dvdraw→SRT) | ✅ Caption content identical to direct extraction | | Rust unit tests | ✅ All 15 pass | ## Test plan - [ ] Verify reading McPoodle's original dvdraw file produces correct captions - [ ] Verify writing dvdraw from TS produces file with identical size to McPoodle's - [ ] Verify roundtrip (TS → dvdraw → SRT) produces same captions as direct extraction - [ ] Run Rust tests: `cargo test dvdraw` 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <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:23:03 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/ccextractor#2606