libbrotlienc.vapi 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /* libbrotlienc Vala bindings
  2. *
  3. * Bindings for the Brotli compression library (encoder only)
  4. * Based on brotli encode.h and types.h
  5. */
  6. [CCode (cprefix = "BROTLI_", lower_case_cprefix = "brotli_", cheader_filename = "brotli/encode.h,brotli/types.h")]
  7. namespace Brotli {
  8. /* Boolean type */
  9. [CCode (cname = "BROTLI_BOOL", has_type_id = false, default_value = "BROTLI_FALSE")]
  10. public struct Bool : int {
  11. }
  12. [CCode (cname = "BROTLI_TRUE")]
  13. public const Bool TRUE;
  14. [CCode (cname = "BROTLI_FALSE")]
  15. public const Bool FALSE;
  16. [CCode (cname = "TO_BROTLI_BOOL")]
  17. public Bool to_bool(int x);
  18. /* Memory allocation callbacks */
  19. [CCode (cname = "brotli_alloc_func", has_target = false)]
  20. public delegate void* AllocFunc(void* opaque, size_t size);
  21. [CCode (cname = "brotli_free_func", has_target = false)]
  22. public delegate void FreeFunc(void* opaque, void* address);
  23. /* Constants from encode.h */
  24. [CCode (cname = "BROTLI_MIN_WINDOW_BITS")]
  25. public const int MIN_WINDOW_BITS;
  26. [CCode (cname = "BROTLI_MAX_WINDOW_BITS")]
  27. public const int MAX_WINDOW_BITS;
  28. [CCode (cname = "BROTLI_LARGE_MAX_WINDOW_BITS")]
  29. public const int LARGE_MAX_WINDOW_BITS;
  30. [CCode (cname = "BROTLI_MIN_INPUT_BLOCK_BITS")]
  31. public const int MIN_INPUT_BLOCK_BITS;
  32. [CCode (cname = "BROTLI_MAX_INPUT_BLOCK_BITS")]
  33. public const int MAX_INPUT_BLOCK_BITS;
  34. [CCode (cname = "BROTLI_MIN_QUALITY")]
  35. public const int MIN_QUALITY;
  36. [CCode (cname = "BROTLI_MAX_QUALITY")]
  37. public const int MAX_QUALITY;
  38. [CCode (cname = "BROTLI_DEFAULT_QUALITY")]
  39. public const int DEFAULT_QUALITY;
  40. [CCode (cname = "BROTLI_DEFAULT_WINDOW")]
  41. public const int DEFAULT_WINDOW;
  42. /* Encoder mode */
  43. [CCode (cname = "BrotliEncoderMode", has_type_id = false)]
  44. public enum EncoderMode {
  45. [CCode (cname = "BROTLI_MODE_GENERIC")]
  46. GENERIC,
  47. [CCode (cname = "BROTLI_MODE_TEXT")]
  48. TEXT,
  49. [CCode (cname = "BROTLI_MODE_FONT")]
  50. FONT
  51. }
  52. /* Encoder operation for streaming */
  53. [CCode (cname = "BrotliEncoderOperation", has_type_id = false)]
  54. public enum EncoderOperation {
  55. [CCode (cname = "BROTLI_OPERATION_PROCESS")]
  56. PROCESS,
  57. [CCode (cname = "BROTLI_OPERATION_FLUSH")]
  58. FLUSH,
  59. [CCode (cname = "BROTLI_OPERATION_FINISH")]
  60. FINISH,
  61. [CCode (cname = "BROTLI_OPERATION_EMIT_METADATA")]
  62. EMIT_METADATA
  63. }
  64. /* Encoder parameters */
  65. [CCode (cname = "BrotliEncoderParameter", has_type_id = false)]
  66. public enum EncoderParameter {
  67. [CCode (cname = "BROTLI_PARAM_MODE")]
  68. MODE,
  69. [CCode (cname = "BROTLI_PARAM_QUALITY")]
  70. QUALITY,
  71. [CCode (cname = "BROTLI_PARAM_LGWIN")]
  72. LGWIN,
  73. [CCode (cname = "BROTLI_PARAM_LGBLOCK")]
  74. LGBLOCK,
  75. [CCode (cname = "BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING")]
  76. DISABLE_LITERAL_CONTEXT_MODELING,
  77. [CCode (cname = "BROTLI_PARAM_SIZE_HINT")]
  78. SIZE_HINT,
  79. [CCode (cname = "BROTLI_PARAM_LARGE_WINDOW")]
  80. LARGE_WINDOW,
  81. [CCode (cname = "BROTLI_PARAM_NPOSTFIX")]
  82. NPOSTFIX,
  83. [CCode (cname = "BROTLI_PARAM_NDIRECT")]
  84. NDIRECT,
  85. [CCode (cname = "BROTLI_PARAM_STREAM_OFFSET")]
  86. STREAM_OFFSET
  87. }
  88. /* Encoder state - opaque structure */
  89. [CCode (cname = "BrotliEncoderState", free_function = "BrotliEncoderDestroyInstance")]
  90. [Compact]
  91. public class EncoderState {
  92. [CCode (cname = "BrotliEncoderCreateInstance")]
  93. public EncoderState(AllocFunc? alloc_func, FreeFunc? free_func, void* opaque);
  94. [CCode (cname = "BrotliEncoderSetParameter")]
  95. public Bool set_parameter(EncoderParameter param, uint32 value);
  96. [CCode (cname = "BrotliEncoderCompressStream")]
  97. public Bool compress_stream(EncoderOperation op, ref size_t available_in,
  98. ref uint8* next_in, ref size_t available_out, ref uint8* next_out,
  99. out size_t total_out);
  100. [CCode (cname = "BrotliEncoderIsFinished")]
  101. public Bool is_finished();
  102. [CCode (cname = "BrotliEncoderHasMoreOutput")]
  103. public Bool has_more_output();
  104. [CCode (cname = "BrotliEncoderTakeOutput")]
  105. public unowned uint8* take_output(ref size_t size);
  106. }
  107. /* Encoder one-shot functions */
  108. [CCode (cname = "BrotliEncoderMaxCompressedSize")]
  109. public size_t encoder_max_compressed_size(size_t input_size);
  110. [CCode (cname = "BrotliEncoderCompress")]
  111. public Bool encoder_compress(int quality, int lgwin, EncoderMode mode,
  112. size_t input_size, uint8* input_buffer,
  113. ref size_t encoded_size, uint8* encoded_buffer);
  114. [CCode (cname = "BrotliEncoderVersion")]
  115. public uint32 encoder_version();
  116. }