|
6 | 6 | |-------|--------|--------|-----| |
7 | 7 | | Phase 1: Rust Core | ✅ COMPLETE | `fix/1499-dtvcc-persistent-state` | #1782 | |
8 | 8 | | Phase 2: C Headers | ✅ COMPLETE | `fix/1499-dtvcc-persistent-state` | #1782 | |
9 | | -| Phase 3: C Implementation | 🔲 NOT STARTED | - | - | |
| 9 | +| Phase 3: C Implementation | ✅ COMPLETE | `fix/1499-dtvcc-persistent-state` | #1782 | |
10 | 10 | | Phase 4: Testing | 🔲 NOT STARTED | - | - | |
11 | 11 |
|
12 | 12 | --- |
@@ -303,20 +303,20 @@ Also modifies `ccxr_process_cc_data` to not create new Dtvcc. |
303 | 303 | - File: `src/lib_ccx/ccx_decoders_common.h` |
304 | 304 | - Added extern declaration for `ccxr_flush_active_decoders` |
305 | 305 |
|
306 | | -### Phase 3: C Implementation Changes |
| 306 | +### Phase 3: C Implementation Changes ✅ COMPLETE |
307 | 307 |
|
308 | | -**Step 3.1: Update decoder initialization/destruction** |
| 308 | +**Step 3.1: Update decoder initialization/destruction** ✅ |
309 | 309 | - File: `src/lib_ccx/ccx_decoders_common.c` |
310 | 310 | - In `init_cc_decode()`: Use `ccxr_dtvcc_init()` when Rust enabled |
311 | 311 | - In `dinit_cc_decode()`: Use `ccxr_dtvcc_free()` when Rust enabled |
312 | 312 | - In `flush_cc_decode()`: Use `ccxr_flush_active_decoders()` when Rust enabled |
313 | | -- Remove old `ccxr_flush_decoder` extern declaration |
| 313 | +- Added `ccxr_dtvcc_is_active()` declaration to `ccx_dtvcc.h` |
314 | 314 |
|
315 | | -**Step 3.2: Update encoder assignment points** |
| 315 | +**Step 3.2: Update encoder assignment points** ✅ |
316 | 316 | - File: `src/lib_ccx/general_loop.c` |
317 | | -- Three locations need `ccxr_dtvcc_set_encoder()` calls |
| 317 | +- Three locations updated with `ccxr_dtvcc_set_encoder()` calls |
318 | 318 | - File: `src/lib_ccx/mp4.c` |
319 | | -- Use `ccxr_dtvcc_set_encoder()` and `ccxr_dtvcc_process_data()` |
| 319 | +- Updated with `ccxr_dtvcc_set_encoder()` and `ccxr_dtvcc_process_data()` |
320 | 320 |
|
321 | 321 | ### Phase 4: Testing |
322 | 322 |
|
@@ -364,21 +364,22 @@ Also modifies `ccxr_process_cc_data` to not create new Dtvcc. |
364 | 364 | | `src/lib_ccx/lib_ccx.h` | C Header | ✅ | Added `ccxr_dtvcc_set_encoder` declaration | |
365 | 365 | | `src/lib_ccx/ccx_decoders_common.h` | C Header | ✅ | Added `ccxr_flush_active_decoders` declaration | |
366 | 366 |
|
367 | | -### Phase 3 (Pending) |
| 367 | +### Phase 3 (Complete) |
368 | 368 |
|
369 | 369 | | File | Type | Status | Changes | |
370 | 370 | |------|------|--------|---------| |
371 | | -| `src/lib_ccx/ccx_decoders_common.c` | C | 🔲 | Use Rust init/free/flush | |
372 | | -| `src/lib_ccx/general_loop.c` | C | 🔲 | Set encoder via Rust function | |
373 | | -| `src/lib_ccx/mp4.c` | C | 🔲 | Use Rust processing for MP4 | |
| 371 | +| `src/lib_ccx/ccx_decoders_common.c` | C | ✅ | Use Rust init/free/flush with `#ifndef DISABLE_RUST` guards | |
| 372 | +| `src/lib_ccx/general_loop.c` | C | ✅ | Set encoder via `ccxr_dtvcc_set_encoder()` at 3 locations | |
| 373 | +| `src/lib_ccx/mp4.c` | C | ✅ | Use `ccxr_dtvcc_set_encoder()` and `ccxr_dtvcc_process_data()` | |
| 374 | +| `src/lib_ccx/ccx_dtvcc.h` | C Header | ✅ | Added `ccxr_dtvcc_is_active()` declaration | |
374 | 375 |
|
375 | 376 | --- |
376 | 377 |
|
377 | 378 | ## Estimated Complexity |
378 | 379 |
|
379 | 380 | - **Phase 1 (Rust)**: ✅ COMPLETE - Added new struct alongside existing code |
380 | 381 | - **Phase 2 (C Headers)**: ✅ COMPLETE - Added field and extern declarations |
381 | | -- **Phase 3 (C Implementation)**: Low-Medium - conditional compilation blocks |
| 382 | +- **Phase 3 (C Implementation)**: ✅ COMPLETE - Added conditional compilation blocks |
382 | 383 | - **Phase 4 (Testing)**: Medium - need to verify state persistence works correctly |
383 | 384 |
|
384 | 385 | **Total estimate**: This is a significant change touching core decoder logic. Recommend implementing in small, testable increments. |
|
0 commit comments