diff --git a/docs/CHANGES.TXT b/docs/CHANGES.TXT index 4503d0f43..fbd0fe800 100644 --- a/docs/CHANGES.TXT +++ b/docs/CHANGES.TXT @@ -41,6 +41,7 @@ - Fix: Resolve compile-time error about implicit declarations (#1646) - Fix: fatal out of memory error extracting from a VOB PS - Fix: Unit Test Rust failing due to changes in Rust Version 1.86.0 +- Fix: handle row_count decrease in CEA-708 C decoder 0.94 (2021-12-14) ----------------- diff --git a/src/lib_ccx/ccx_decoders_708.c b/src/lib_ccx/ccx_decoders_708.c index 1af54a094..3f7e53de2 100644 --- a/src/lib_ccx/ccx_decoders_708.c +++ b/src/lib_ccx/ccx_decoders_708.c @@ -1046,6 +1046,18 @@ void dtvcc_handle_DFx_DefineWindow(dtvcc_service_decoder *decoder, int window_id if (anchor_horizontal > CCX_DTVCC_SCREENGRID_COLUMNS - col_count) anchor_horizontal = CCX_DTVCC_SCREENGRID_COLUMNS - col_count; + if (window->is_defined) + { + if (row_count < window->row_count) + { + // Remove the oldest row if the row count is reduced + for (int i = row_count; i < window->row_count; i++) + { + dtvcc_window_rollup(decoder, window); + } + } + } + window->priority = priority; window->col_lock = col_lock; window->row_lock = row_lock;