diff --git a/README.md b/README.md
index c105f12..bcaa00e 100644
--- a/README.md
+++ b/README.md
@@ -3,4 +3,16 @@
_(ametlik nimi uurimustööl?)_
## Uurimustöö programmi jooksutamine
-`git clone https://git.wut.ee/mikroskeem/java-class-compression-research` ja `mvn`. Java 8 on vajalik.
\ No newline at end of file
+`git clone https://git.wut.ee/mikroskeem/java-class-compression-research` ja `mvn`. Java 8 on vajalik.
+
+## Testitud algoritmid
+- BZip2
+- GZip
+- LZ4 (fast ja HC)
+- LZMA
+- XZ
+- Zip
+
+## Mittetuntud testitud algoritmid
+- [Brotli](https://github.com/google/brotli)
+- [Zstandard](https://github.com/facebook/zstd)
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 9019dd8..f81ebf9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,6 +27,11 @@
true
+
+ bintray-nitram509-jbrotli
+ bintray
+ http://dl.bintray.com/nitram509/jbrotli
+
@@ -102,5 +107,19 @@
lz4
1.3.0
+
+
+
+ org.meteogroup.jbrotli
+ jbrotli
+ 0.5.0
+
+
+
+
+ com.github.luben
+ zstd-jni
+ 1.1.4
+
diff --git a/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Brotli.java b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Brotli.java
new file mode 100644
index 0000000..c9378aa
--- /dev/null
+++ b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Brotli.java
@@ -0,0 +1,31 @@
+package eu.mikroskeem.uurimustoo.algoritmidetest.algoritmid;
+
+import lombok.Getter;
+import org.meteogroup.jbrotli.BrotliStreamCompressor;
+import org.meteogroup.jbrotli.BrotliStreamDeCompressor;
+import org.meteogroup.jbrotli.libloader.BrotliLibraryLoader;
+
+/**
+ * @author Mark Vainomaa
+ */
+public class Brotli extends AbstractAlgorithm {
+ @Getter private final String name = "Brotli";
+
+ static {
+ BrotliLibraryLoader.loadBrotli();
+ }
+
+ @Override
+ public byte[] compress(byte[] input) {
+ BrotliStreamCompressor compressor = new BrotliStreamCompressor();
+ return compressor.compressArray(input, true);
+ }
+
+ @Override
+ public byte[] decompress(byte[] input) {
+ BrotliStreamDeCompressor decompressor = new BrotliStreamDeCompressor();
+ byte[] buf = new byte[8192]; // *sigh*
+ decompressor.deCompress(input, buf);
+ return buf;
+ }
+}
diff --git a/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Zstandard.java b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Zstandard.java
new file mode 100644
index 0000000..b6a2c4f
--- /dev/null
+++ b/src/main/java/eu/mikroskeem/uurimustoo/algoritmidetest/algoritmid/Zstandard.java
@@ -0,0 +1,26 @@
+package eu.mikroskeem.uurimustoo.algoritmidetest.algoritmid;
+
+import com.github.luben.zstd.ZstdInputStream;
+import com.github.luben.zstd.ZstdOutputStream;
+import lombok.Getter;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * @author Mark Vainomaa
+ */
+public class Zstandard extends AbstractAlgorithm {
+ @Getter private final String name = "Zstandard";
+
+ @Override
+ public OutputStream createCompressor(OutputStream outputStream) throws IOException {
+ return new ZstdOutputStream(outputStream);
+ }
+
+ @Override
+ public InputStream createDecompressor(InputStream inputStream) throws IOException {
+ return new ZstdInputStream(inputStream);
+ }
+}