]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/BrotliCompress/enc/block_splitter.h
BaseTools: Copy Brotli algorithm 3rd party source code for tool
[mirror_edk2.git] / BaseTools / Source / C / BrotliCompress / enc / block_splitter.h
diff --git a/BaseTools/Source/C/BrotliCompress/enc/block_splitter.h b/BaseTools/Source/C/BrotliCompress/enc/block_splitter.h
new file mode 100644 (file)
index 0000000..ebe46c0
--- /dev/null
@@ -0,0 +1,51 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.\r
+\r
+   Distributed under MIT license.\r
+   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT\r
+*/\r
+\r
+/* Block split point selection utilities. */\r
+\r
+#ifndef BROTLI_ENC_BLOCK_SPLITTER_H_\r
+#define BROTLI_ENC_BLOCK_SPLITTER_H_\r
+\r
+#include "../common/types.h"\r
+#include "./command.h"\r
+#include "./memory.h"\r
+#include "./port.h"\r
+#include "./quality.h"\r
+\r
+#if defined(__cplusplus) || defined(c_plusplus)\r
+extern "C" {\r
+#endif\r
+\r
+typedef struct BlockSplit {\r
+  size_t num_types;  /* Amount of distinct types */\r
+  size_t num_blocks;  /* Amount of values in types and length */\r
+  uint8_t* types;\r
+  uint32_t* lengths;\r
+\r
+  size_t types_alloc_size;\r
+  size_t lengths_alloc_size;\r
+} BlockSplit;\r
+\r
+BROTLI_INTERNAL void BrotliInitBlockSplit(BlockSplit* self);\r
+BROTLI_INTERNAL void BrotliDestroyBlockSplit(MemoryManager* m,\r
+                                             BlockSplit* self);\r
+\r
+BROTLI_INTERNAL void BrotliSplitBlock(MemoryManager* m,\r
+                                      const Command* cmds,\r
+                                      const size_t num_commands,\r
+                                      const uint8_t* data,\r
+                                      const size_t offset,\r
+                                      const size_t mask,\r
+                                      const BrotliEncoderParams* params,\r
+                                      BlockSplit* literal_split,\r
+                                      BlockSplit* insert_and_copy_split,\r
+                                      BlockSplit* dist_split);\r
+\r
+#if defined(__cplusplus) || defined(c_plusplus)\r
+}  /* extern "C" */\r
+#endif\r
+\r
+#endif  /* BROTLI_ENC_BLOCK_SPLITTER_H_ */\r