diff --git a/lib/decompress/decmp.c b/lib/decompress/decmp.c index dcd8c334a1637d13c86edbf48d700ee02bee3150..482677ba76cad56847f2eb492ecf59980461a854 100644 --- a/lib/decompress/decmp.c +++ b/lib/decompress/decmp.c @@ -830,287 +830,6 @@ static int decompress_s_fx_efx_ncob_ecob(const struct cmp_cfg *cfg, struct bit_d } -/** - * @brief decompress fast normal light flux (F_FX) data - * - * @param cfg pointer to the compression configuration structure - * @param dec a pointer to a bit_decoder context - * - * @returns 0 on success; otherwise error - */ - -static int decompress_f_fx(const struct cmp_cfg *cfg, struct bit_decoder *dec) -{ - size_t i; - int err; - uint32_t decoded_value; - struct decoder_setup setup_fx; - struct f_fx *data_buf = get_collection_data(cfg->input_buf); - struct f_fx *model_buf = get_collection_data(cfg->model_buf); - struct f_fx *up_model_buf; - struct f_fx *next_model_p; - struct f_fx model; - - if (model_mode_is_used(cfg->cmp_mode)) { - up_model_buf = get_collection_data(cfg->icu_new_model_buf); - model = model_buf[0]; - next_model_p = &model_buf[1]; - } else { - up_model_buf = NULL; - memset(&model, 0, sizeof(model)); - next_model_p = data_buf; - } - - configure_decoder_setup(&setup_fx, dec, cfg->cmp_mode, cfg->cmp_par_fx, cfg->spill_fx, - cfg->round, cfg->max_used_bits->f_fx); - - for (i = 0; ; i++) { - err = decode_value(&setup_fx, &decoded_value, model.fx); - if (err) - break; - data_buf[i].fx = decoded_value; - - if (up_model_buf) - up_model_buf[i].fx = cmp_up_model(data_buf[i].fx, model.fx, - cfg->model_value, setup_fx.lossy_par); - - if (i >= cfg->samples-1) - break; - - model = next_model_p[i]; - } - return err; -} - - -/** - * @brief decompress F_FX_EFX data - * - * @param cfg pointer to the compression configuration structure - * @param dec a pointer to a bit_decoder context - * - * @returns 0 on success; otherwise error - */ - -static int decompress_f_fx_efx(const struct cmp_cfg *cfg, struct bit_decoder *dec) -{ - size_t i; - int err; - uint32_t decoded_value; - struct decoder_setup setup_fx, setup_efx; - struct f_fx_efx *data_buf = get_collection_data(cfg->input_buf); - struct f_fx_efx *model_buf = get_collection_data(cfg->model_buf); - struct f_fx_efx *up_model_buf; - struct f_fx_efx *next_model_p; - struct f_fx_efx model; - - if (model_mode_is_used(cfg->cmp_mode)) { - up_model_buf = get_collection_data(cfg->icu_new_model_buf); - model = model_buf[0]; - next_model_p = &model_buf[1]; - } else { - up_model_buf = NULL; - memset(&model, 0, sizeof(model)); - next_model_p = data_buf; - } - - configure_decoder_setup(&setup_fx, dec, cfg->cmp_mode, cfg->cmp_par_fx, cfg->spill_fx, - cfg->round, cfg->max_used_bits->f_fx); - configure_decoder_setup(&setup_efx, dec, cfg->cmp_mode, cfg->cmp_par_efx, cfg->spill_efx, - cfg->round, cfg->max_used_bits->f_efx); - - for (i = 0; ; i++) { - err = decode_value(&setup_fx, &decoded_value, model.fx); - if (err) - break; - data_buf[i].fx = decoded_value; - - err = decode_value(&setup_efx, &decoded_value, model.efx); - if (err) - break; - data_buf[i].efx = decoded_value; - - if (up_model_buf) { - up_model_buf[i].fx = cmp_up_model(data_buf[i].fx, model.fx, - cfg->model_value, setup_fx.lossy_par); - up_model_buf[i].efx = cmp_up_model(data_buf[i].efx, model.efx, - cfg->model_value, setup_efx.lossy_par); - } - - if (i >= cfg->samples-1) - break; - - model = next_model_p[i]; - } - return err; -} - - -/** - * @brief decompress short F_FX_NCOB data - * - * @param cfg pointer to the compression configuration structure - * @param dec a pointer to a bit_decoder context - * - * @returns 0 on success; otherwise error - */ - -static int decompress_f_fx_ncob(const struct cmp_cfg *cfg, struct bit_decoder *dec) -{ - size_t i; - int err; - uint32_t decoded_value; - struct decoder_setup setup_fx, setup_ncob; - struct f_fx_ncob *data_buf = get_collection_data(cfg->input_buf); - struct f_fx_ncob *model_buf = get_collection_data(cfg->model_buf); - struct f_fx_ncob *up_model_buf; - struct f_fx_ncob *next_model_p; - struct f_fx_ncob model; - - if (model_mode_is_used(cfg->cmp_mode)) { - up_model_buf = get_collection_data(cfg->icu_new_model_buf); - model = model_buf[0]; - next_model_p = &model_buf[1]; - } else { - up_model_buf = NULL; - memset(&model, 0, sizeof(model)); - next_model_p = data_buf; - } - - configure_decoder_setup(&setup_fx, dec, cfg->cmp_mode, cfg->cmp_par_fx, cfg->spill_fx, - cfg->round, cfg->max_used_bits->f_fx); - configure_decoder_setup(&setup_ncob, dec, cfg->cmp_mode, cfg->cmp_par_ncob, cfg->spill_ncob, - cfg->round, cfg->max_used_bits->f_ncob); - - for (i = 0; ; i++) { - err = decode_value(&setup_fx, &decoded_value, model.fx); - if (err) - break; - data_buf[i].fx = decoded_value; - - err = decode_value(&setup_ncob, &decoded_value, model.ncob_x); - if (err) - break; - data_buf[i].ncob_x = decoded_value; - - err = decode_value(&setup_ncob, &decoded_value, model.ncob_y); - if (err) - break; - data_buf[i].ncob_y = decoded_value; - - if (up_model_buf) { - up_model_buf[i].fx = cmp_up_model(data_buf[i].fx, model.fx, - cfg->model_value, setup_fx.lossy_par); - up_model_buf[i].ncob_x = cmp_up_model(data_buf[i].ncob_x, model.ncob_x, - cfg->model_value, setup_ncob.lossy_par); - up_model_buf[i].ncob_y = cmp_up_model(data_buf[i].ncob_y, model.ncob_y, - cfg->model_value, setup_ncob.lossy_par); - } - - if (i >= cfg->samples-1) - break; - - model = next_model_p[i]; - } - return err; -} - - -/** - * @brief decompress short F_FX_NCOB_ECOB data - * - * @param cfg pointer to the compression configuration structure - * @param dec a pointer to a bit_decoder context - * - * @returns 0 on success; otherwise error - */ - -static int decompress_f_fx_efx_ncob_ecob(const struct cmp_cfg *cfg, struct bit_decoder *dec) -{ - size_t i; - int err; - uint32_t decoded_value; - struct decoder_setup setup_fx, setup_ncob, setup_efx, setup_ecob; - struct f_fx_efx_ncob_ecob *data_buf = get_collection_data(cfg->input_buf); - struct f_fx_efx_ncob_ecob *model_buf = get_collection_data(cfg->model_buf); - struct f_fx_efx_ncob_ecob *up_model_buf; - struct f_fx_efx_ncob_ecob *next_model_p; - struct f_fx_efx_ncob_ecob model; - - if (model_mode_is_used(cfg->cmp_mode)) { - up_model_buf = get_collection_data(cfg->icu_new_model_buf); - model = model_buf[0]; - next_model_p = &model_buf[1]; - } else { - up_model_buf = NULL; - memset(&model, 0, sizeof(model)); - next_model_p = data_buf; - } - - configure_decoder_setup(&setup_fx, dec, cfg->cmp_mode, cfg->cmp_par_fx, cfg->spill_fx, - cfg->round, cfg->max_used_bits->f_fx); - configure_decoder_setup(&setup_ncob, dec, cfg->cmp_mode, cfg->cmp_par_ncob, cfg->spill_ncob, - cfg->round, cfg->max_used_bits->f_ncob); - configure_decoder_setup(&setup_efx, dec, cfg->cmp_mode, cfg->cmp_par_efx, cfg->spill_efx, - cfg->round, cfg->max_used_bits->f_efx); - configure_decoder_setup(&setup_ecob, dec, cfg->cmp_mode, cfg->cmp_par_ecob, cfg->spill_ecob, - cfg->round, cfg->max_used_bits->f_ecob); - - for (i = 0; ; i++) { - err = decode_value(&setup_fx, &decoded_value, model.fx); - if (err) - break; - data_buf[i].fx = decoded_value; - - err = decode_value(&setup_ncob, &decoded_value, model.ncob_x); - if (err) - break; - data_buf[i].ncob_x = decoded_value; - - err = decode_value(&setup_ncob, &decoded_value, model.ncob_y); - if (err) - break; - data_buf[i].ncob_y = decoded_value; - - err = decode_value(&setup_efx, &decoded_value, model.efx); - if (err) - break; - data_buf[i].efx = decoded_value; - - err = decode_value(&setup_ecob, &decoded_value, model.ecob_x); - if (err) - break; - data_buf[i].ecob_x = decoded_value; - - err = decode_value(&setup_ecob, &decoded_value, model.ecob_y); - if (err) - break; - data_buf[i].ecob_y = decoded_value; - - if (up_model_buf) { - up_model_buf[i].fx = cmp_up_model(data_buf[i].fx, model.fx, - cfg->model_value, setup_fx.lossy_par); - up_model_buf[i].ncob_x = cmp_up_model(data_buf[i].ncob_x, model.ncob_x, - cfg->model_value, setup_ncob.lossy_par); - up_model_buf[i].ncob_y = cmp_up_model(data_buf[i].ncob_y, model.ncob_y, - cfg->model_value, setup_ncob.lossy_par); - up_model_buf[i].efx = cmp_up_model(data_buf[i].efx, model.efx, - cfg->model_value, setup_efx.lossy_par); - up_model_buf[i].ecob_x = cmp_up_model(data_buf[i].ecob_x, model.ecob_x, - cfg->model_value, setup_ecob.lossy_par); - up_model_buf[i].ecob_y = cmp_up_model(data_buf[i].ecob_y, model.ecob_y, - cfg->model_value, setup_ecob.lossy_par); - } - - if (i >= cfg->samples-1) - break; - - model = next_model_p[i]; - } - return err; -} - - /** * @brief decompress long normal light flux (L_FX) data * @@ -1882,19 +1601,6 @@ static int decompressed_data_internal(const struct cmp_cfg *cfg, enum decmp_type err = decompress_s_fx_efx_ncob_ecob(cfg, &dec); break; - case DATA_TYPE_F_FX: - err = decompress_f_fx(cfg, &dec); - break; - case DATA_TYPE_F_FX_EFX: - err = decompress_f_fx_efx(cfg, &dec); - break; - case DATA_TYPE_F_FX_NCOB: - err = decompress_f_fx_ncob(cfg, &dec); - break; - case DATA_TYPE_F_FX_EFX_NCOB_ECOB: - err = decompress_f_fx_efx_ncob_ecob(cfg, &dec); - break; - case DATA_TYPE_L_FX: err = decompress_l_fx(cfg, &dec); break; @@ -1920,6 +1626,10 @@ static int decompressed_data_internal(const struct cmp_cfg *cfg, enum decmp_type err = decompress_smearing(cfg, &dec); break; + case DATA_TYPE_F_FX: + case DATA_TYPE_F_FX_EFX: + case DATA_TYPE_F_FX_NCOB: + case DATA_TYPE_F_FX_EFX_NCOB_ECOB: case DATA_TYPE_UNKNOWN: default: err = -1; diff --git a/lib/icu_compress/cmp_icu.c b/lib/icu_compress/cmp_icu.c index d9816c0372c54837c767539ae23f2471ecd51ed6..985beb8cad78df9220a014ddfdd86926ed1b9781 100644 --- a/lib/icu_compress/cmp_icu.c +++ b/lib/icu_compress/cmp_icu.c @@ -874,276 +874,6 @@ static uint32_t compress_s_fx_efx_ncob_ecob(const struct cmp_cfg *cfg, uint32_t } -/** - * @brief compress F_FX data - * - * @param cfg pointer to the compression configuration structure - * - * @returns the bit length of the bitstream on success; negative on error, - * CMP_ERROR_SMALL_BUF if the bitstream buffer is too small to put the - * value in the bitstream - */ - -static uint32_t compress_f_fx(const struct cmp_cfg *cfg, uint32_t stream_len) -{ - size_t i; - - struct f_fx *data_buf = cfg->input_buf; - struct f_fx *model_buf = cfg->model_buf; - struct f_fx *up_model_buf = NULL; - struct f_fx *next_model_p; - struct f_fx model; - struct encoder_setup setup_fx; - - if (model_mode_is_used(cfg->cmp_mode)) { - model = model_buf[0]; - next_model_p = &model_buf[1]; - up_model_buf = cfg->icu_new_model_buf; - } else { - memset(&model, 0, sizeof(model)); - next_model_p = data_buf; - } - - configure_encoder_setup(&setup_fx, cfg->cmp_par_fx, cfg->spill_fx, - cfg->round, cfg->max_used_bits->f_fx, cfg); - - for (i = 0;; i++) { - stream_len = encode_value(data_buf[i].fx, model.fx, stream_len, - &setup_fx); - if (cmp_is_error(stream_len)) - break; - - if (up_model_buf) { - up_model_buf[i].fx = cmp_up_model(data_buf[i].fx, model.fx, - cfg->model_value, setup_fx.lossy_par); - } - - if (i >= cfg->samples-1) - break; - - model = next_model_p[i]; - } - return stream_len; -} - - -/** - * @brief compress F_FX_EFX data - * - * @param cfg pointer to the compression configuration structure - * - * @returns the bit length of the bitstream on success; negative on error, - * CMP_ERROR_SMALL_BUF if the bitstream buffer is too small to put the - * value in the bitstream - */ - -static uint32_t compress_f_fx_efx(const struct cmp_cfg *cfg, uint32_t stream_len) -{ - size_t i; - - struct f_fx_efx *data_buf = cfg->input_buf; - struct f_fx_efx *model_buf = cfg->model_buf; - struct f_fx_efx *up_model_buf = NULL; - struct f_fx_efx *next_model_p; - struct f_fx_efx model; - struct encoder_setup setup_fx, setup_efx; - - if (model_mode_is_used(cfg->cmp_mode)) { - model = model_buf[0]; - next_model_p = &model_buf[1]; - up_model_buf = cfg->icu_new_model_buf; - } else { - memset(&model, 0, sizeof(model)); - next_model_p = data_buf; - } - - configure_encoder_setup(&setup_fx, cfg->cmp_par_fx, cfg->spill_fx, - cfg->round, cfg->max_used_bits->f_fx, cfg); - configure_encoder_setup(&setup_efx, cfg->cmp_par_efx, cfg->spill_efx, - cfg->round, cfg->max_used_bits->f_efx, cfg); - - for (i = 0;; i++) { - stream_len = encode_value(data_buf[i].fx, model.fx, stream_len, - &setup_fx); - if (cmp_is_error(stream_len)) - break; - stream_len = encode_value(data_buf[i].efx, model.efx, - stream_len, &setup_efx); - if (cmp_is_error(stream_len)) - break; - - if (up_model_buf) { - up_model_buf[i].fx = cmp_up_model(data_buf[i].fx, model.fx, - cfg->model_value, setup_fx.lossy_par); - up_model_buf[i].efx = cmp_up_model(data_buf[i].efx, model.efx, - cfg->model_value, setup_efx.lossy_par); - } - - if (i >= cfg->samples-1) - break; - - model = next_model_p[i]; - } - return stream_len; -} - - -/** - * @brief compress F_FX_NCOB data - * - * @param cfg pointer to the compression configuration structure - * - * @returns the bit length of the bitstream on success; negative on error, - * CMP_ERROR_SMALL_BUF if the bitstream buffer is too small to put the - * value in the bitstream - */ - -static uint32_t compress_f_fx_ncob(const struct cmp_cfg *cfg, uint32_t stream_len) -{ - size_t i; - - struct f_fx_ncob *data_buf = cfg->input_buf; - struct f_fx_ncob *model_buf = cfg->model_buf; - struct f_fx_ncob *up_model_buf = NULL; - struct f_fx_ncob *next_model_p; - struct f_fx_ncob model; - struct encoder_setup setup_fx, setup_ncob; - - if (model_mode_is_used(cfg->cmp_mode)) { - model = model_buf[0]; - next_model_p = &model_buf[1]; - up_model_buf = cfg->icu_new_model_buf; - } else { - memset(&model, 0, sizeof(model)); - next_model_p = data_buf; - } - - configure_encoder_setup(&setup_fx, cfg->cmp_par_fx, cfg->spill_fx, - cfg->round, cfg->max_used_bits->f_fx, cfg); - configure_encoder_setup(&setup_ncob, cfg->cmp_par_ncob, cfg->spill_ncob, - cfg->round, cfg->max_used_bits->f_ncob, cfg); - - for (i = 0;; i++) { - stream_len = encode_value(data_buf[i].fx, model.fx, stream_len, - &setup_fx); - if (cmp_is_error(stream_len)) - break; - stream_len = encode_value(data_buf[i].ncob_x, model.ncob_x, - stream_len, &setup_ncob); - if (cmp_is_error(stream_len)) - break; - stream_len = encode_value(data_buf[i].ncob_y, model.ncob_y, - stream_len, &setup_ncob); - if (cmp_is_error(stream_len)) - break; - - if (up_model_buf) { - up_model_buf[i].fx = cmp_up_model(data_buf[i].fx, model.fx, - cfg->model_value, setup_fx.lossy_par); - up_model_buf[i].ncob_x = cmp_up_model(data_buf[i].ncob_x, model.ncob_x, - cfg->model_value, setup_ncob.lossy_par); - up_model_buf[i].ncob_y = cmp_up_model(data_buf[i].ncob_y, model.ncob_y, - cfg->model_value, setup_ncob.lossy_par); - } - - if (i >= cfg->samples-1) - break; - - model = next_model_p[i]; - } - return stream_len; -} - - -/** - * @brief compress F_FX_EFX_NCOB_ECOB data - * - * @param cfg pointer to the compression configuration structure - * - * @returns the bit length of the bitstream on success; negative on error, - * CMP_ERROR_SMALL_BUF if the bitstream buffer is too small to put the - * value in the bitstream - */ - -static uint32_t compress_f_fx_efx_ncob_ecob(const struct cmp_cfg *cfg, uint32_t stream_len) -{ - size_t i; - - struct f_fx_efx_ncob_ecob *data_buf = cfg->input_buf; - struct f_fx_efx_ncob_ecob *model_buf = cfg->model_buf; - struct f_fx_efx_ncob_ecob *up_model_buf = NULL; - struct f_fx_efx_ncob_ecob *next_model_p; - struct f_fx_efx_ncob_ecob model; - struct encoder_setup setup_fx, setup_ncob, setup_efx, setup_ecob; - - if (model_mode_is_used(cfg->cmp_mode)) { - model = model_buf[0]; - next_model_p = &model_buf[1]; - up_model_buf = cfg->icu_new_model_buf; - } else { - memset(&model, 0, sizeof(model)); - next_model_p = data_buf; - } - - configure_encoder_setup(&setup_fx, cfg->cmp_par_fx, cfg->spill_fx, - cfg->round, cfg->max_used_bits->f_fx, cfg); - configure_encoder_setup(&setup_ncob, cfg->cmp_par_ncob, cfg->spill_ncob, - cfg->round, cfg->max_used_bits->f_ncob, cfg); - configure_encoder_setup(&setup_efx, cfg->cmp_par_efx, cfg->spill_efx, - cfg->round, cfg->max_used_bits->f_efx, cfg); - configure_encoder_setup(&setup_ecob, cfg->cmp_par_ecob, cfg->spill_ecob, - cfg->round, cfg->max_used_bits->f_ecob, cfg); - - for (i = 0;; i++) { - stream_len = encode_value(data_buf[i].fx, model.fx, stream_len, - &setup_fx); - if (cmp_is_error(stream_len)) - break; - stream_len = encode_value(data_buf[i].ncob_x, model.ncob_x, - stream_len, &setup_ncob); - if (cmp_is_error(stream_len)) - break; - stream_len = encode_value(data_buf[i].ncob_y, model.ncob_y, - stream_len, &setup_ncob); - if (cmp_is_error(stream_len)) - break; - stream_len = encode_value(data_buf[i].efx, model.efx, - stream_len, &setup_efx); - if (cmp_is_error(stream_len)) - break; - stream_len = encode_value(data_buf[i].ecob_x, model.ecob_x, - stream_len, &setup_ecob); - if (cmp_is_error(stream_len)) - break; - stream_len = encode_value(data_buf[i].ecob_y, model.ecob_y, - stream_len, &setup_ecob); - if (cmp_is_error(stream_len)) - break; - - if (up_model_buf) { - up_model_buf[i].fx = cmp_up_model(data_buf[i].fx, model.fx, - cfg->model_value, setup_fx.lossy_par); - up_model_buf[i].ncob_x = cmp_up_model(data_buf[i].ncob_x, model.ncob_x, - cfg->model_value, setup_ncob.lossy_par); - up_model_buf[i].ncob_y = cmp_up_model(data_buf[i].ncob_y, model.ncob_y, - cfg->model_value, setup_ncob.lossy_par); - up_model_buf[i].efx = cmp_up_model(data_buf[i].efx, model.efx, - cfg->model_value, setup_efx.lossy_par); - up_model_buf[i].ecob_x = cmp_up_model(data_buf[i].ecob_x, model.ecob_x, - cfg->model_value, setup_ecob.lossy_par); - up_model_buf[i].ecob_y = cmp_up_model(data_buf[i].ecob_y, model.ecob_y, - cfg->model_value, setup_ecob.lossy_par); - } - - if (i >= cfg->samples-1) - break; - - model = next_model_p[i]; - } - return stream_len; -} - - /** * @brief compress L_FX data * @@ -1875,18 +1605,6 @@ static uint32_t compress_data_internal(const struct cmp_cfg *cfg, uint32_t strea bitsize = compress_s_fx_efx_ncob_ecob(cfg, stream_len); break; - case DATA_TYPE_F_FX: - bitsize = compress_f_fx(cfg, stream_len); - break; - case DATA_TYPE_F_FX_EFX: - bitsize = compress_f_fx_efx(cfg, stream_len); - break; - case DATA_TYPE_F_FX_NCOB: - bitsize = compress_f_fx_ncob(cfg, stream_len); - break; - case DATA_TYPE_F_FX_EFX_NCOB_ECOB: - bitsize = compress_f_fx_efx_ncob_ecob(cfg, stream_len); - break; case DATA_TYPE_L_FX: bitsize = compress_l_fx(cfg, stream_len); @@ -1912,13 +1630,14 @@ static uint32_t compress_data_internal(const struct cmp_cfg *cfg, uint32_t strea case DATA_TYPE_SMEARING: bitsize = compress_smearing(cfg, stream_len); break; - - /* LCOV_EXCL_START */ + case DATA_TYPE_F_FX: + case DATA_TYPE_F_FX_EFX: + case DATA_TYPE_F_FX_NCOB: + case DATA_TYPE_F_FX_EFX_NCOB_ECOB: case DATA_TYPE_UNKNOWN: default: RETURN_ERROR(INT_DATA_TYPE_UNSUPPORTED, ""); } - /* LCOV_EXCL_STOP */ } if (cmp_is_error(bitsize))