compress.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /**
  2. * @file compress.h
  3. * LZSS based compression HAL API
  4. */
  5. #pragma once
  6. #include <stdbool.h>
  7. #include <stdint.h>
  8. #include <stddef.h>
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. /** Compress Icon control structure */
  13. typedef struct CompressIcon CompressIcon;
  14. /** Initialize icon compressor
  15. *
  16. * @return Compress Icon instance
  17. */
  18. CompressIcon* compress_icon_alloc();
  19. /** Free icon compressor
  20. *
  21. * @param instance The Compress Icon instance
  22. */
  23. void compress_icon_free(CompressIcon* instance);
  24. /** Decompress icon
  25. *
  26. * @warning decoded_buff pointer set by this function is valid till next
  27. * `compress_icon_decode` or `compress_icon_free` call
  28. *
  29. * @param instance The Compress Icon instance
  30. * @param icon_data pointer to icon data
  31. * @param[in] decoded_buff pointer to decoded buffer pointer
  32. */
  33. void compress_icon_decode(CompressIcon* instance, const uint8_t* icon_data, uint8_t** decoded_buff);
  34. /** Compress control structure */
  35. typedef struct Compress Compress;
  36. /** Allocate encoder and decoder
  37. *
  38. * @param compress_buff_size size of decoder and encoder buffer to allocate
  39. *
  40. * @return Compress instance
  41. */
  42. Compress* compress_alloc(uint16_t compress_buff_size);
  43. /** Free encoder and decoder
  44. *
  45. * @param compress Compress instance
  46. */
  47. void compress_free(Compress* compress);
  48. /** Encode data
  49. *
  50. * @param compress Compress instance
  51. * @param data_in pointer to input data
  52. * @param data_in_size size of input data
  53. * @param data_out maximum size of output data
  54. * @param data_res_size pointer to result output data size
  55. *
  56. * @return true on success
  57. */
  58. bool compress_encode(
  59. Compress* compress,
  60. uint8_t* data_in,
  61. size_t data_in_size,
  62. uint8_t* data_out,
  63. size_t data_out_size,
  64. size_t* data_res_size);
  65. /** Decode data
  66. *
  67. * @param compress Compress instance
  68. * @param data_in pointer to input data
  69. * @param data_in_size size of input data
  70. * @param data_out maximum size of output data
  71. * @param data_res_size pointer to result output data size
  72. *
  73. * @return true on success
  74. */
  75. bool compress_decode(
  76. Compress* compress,
  77. uint8_t* data_in,
  78. size_t data_in_size,
  79. uint8_t* data_out,
  80. size_t data_out_size,
  81. size_t* data_res_size);
  82. #ifdef __cplusplus
  83. }
  84. #endif