# Home  ## Overview TranscodingStreams.jl is a package for transcoding data streams. Transcoding may be compression, decompression, ASCII encoding, and any other codec. The package exports a data type `TranscodingStream`, which is a subtype of `IO` and wraps other `IO` object to transcode data read from or written to the wrapped stream. In this page, we introduce the basic concepts of TranscodingStreams.jl and currently available packages. The [Examples](@ref) page demonstrates common usage. The [Reference](@ref) page offers a comprehensive API document. ## Introduction `TranscodingStream` has two type parameters, `C<:Codec` and `S<:IO`, and hence the concrete data type is written as `TranscodingStream{C<:Codec,S<:IO}`. This type wraps an underlying I/O stream `S` by a transcoding codec `C`. `C` and `S` are orthogonal and hence you can use any combination of these two types. The underlying stream may be any stream that supports I/O operations defined by the `Base` module. For example, it may be `IOStream`, `TTY`, `IOBuffer`, or `TranscodingStream`. The codec `C` must define the transcoding protocol defined in this package. We already have various codecs in packages listed below. Of course, you can define your own codec by implementing the transcoding protocol described in [`TranscodingStreams.Codec`](@ref). You can install codec packages using the standard package manager. These codec packages are independent of each other and can be installed separately. You won't need to explicitly install the TranscodingStreams.jl package unless you will use lower-level interfaces of it. Each codec package defines some codec types, which is a subtype of `TranscodingStreams.Codec`, and their corresponding transcoding stream aliases. These aliases are partially instantiated by a codec type; for example, `GzipDecompressionStream{S}` is an alias of `TranscodingStream{GzipDecompressor,S}`, where `S` is a subtype of `IO`. ```@raw html
Package | Library | Format | Codec | Stream alias | Description |
---|---|---|---|---|---|
CodecZlib.jl | zlib | RFC1952 | GzipCompressor |
GzipCompressorStream |
Compress data in gzip (.gz) format. |
GzipDecompressor |
GzipDecompressorStream |
Decompress data in gzip (.gz) format. | |||
RFC1950 | ZlibCompressor |
ZlibCompressorStream |
Compress data in zlib format. | ||
ZlibDecompressor |
ZlibDecompressorStream |
Decompress data in zlib format. | |||
RFC1951 | DeflateCompressor |
DeflateCompressorStream |
Compress data in deflate format. | ||
DeflateDecompressor |
DeflateDecompressorStream |
Decompress data in deflate format. | |||
CodecXz.jl | xz | The .xz File Format | XzCompressor |
XzCompressorStream |
Compress data in xz (.xz) format. |
XzDecompressor |
XzDecompressorStream |
Decompress data in xz (.xz) format. | |||
CodecZstd.jl | zstd | Zstandard Compression Format | ZstdCompressor |
ZstdCompressorStream |
Compress data in zstd (.zst) format. |
ZstdDecompressor |
ZstdDecompressorStream |
Decompress data in zstd (.zst) format. | |||
CodecBase.jl | native | RFC4648 | Base16Encoder |
Base16EncoderStream |
Encode binary in base16 format. |
Base16Decoder |
Base16DecoderStream |
Decode binary in base16 format. | |||
Base32Encoder |
Base32EncoderStream |
Encode binary in base32 format. | |||
Base32Decoder |
Base32DecoderStream |
Decode binary in base32 format. | |||
Base64Encoder |
Base64EncoderStream |
Encode binary in base64 format. | |||
Base64Decoder |
Base64DecoderStream |
Decode binary in base64 format. | |||
CodecBzip2.jl | bzip2 | Bzip2Compressor |
Bzip2CompressorStream |
Compress data in bzip2 (.bz2) format. | |
Bzip2Decompressor |
Bzip2DecompressorStream |
Decompress data in bzip2 (.bz2) format. |