All Projects → JuliaIO → TranscodingStreams.jl

JuliaIO / TranscodingStreams.jl

Licence: other
Simple, consistent interfaces for any codec.

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to TranscodingStreams.jl

Opus
Modern audio compression for the internet.
Stars: ✭ 1,171 (+1549.3%)
Mutual labels:  compression, codec
Speex
Speex voice codec mirror - THIS IS A MIRROR, DEVELOPMENT HAPPENS AT https://gitlab.xiph.org/xiph/speex
Stars: ✭ 254 (+257.75%)
Mutual labels:  compression, codec
Digital video introduction
A hands-on introduction to video technology: image, video, codec (av1, vp9, h265) and more (ffmpeg encoding).
Stars: ✭ 12,184 (+17060.56%)
Mutual labels:  compression, codec
Theora
Reference implementation of the Theora video compression format.
Stars: ✭ 59 (-16.9%)
Mutual labels:  compression, codec
Turbobench
Compression Benchmark
Stars: ✭ 211 (+197.18%)
Mutual labels:  compression, codec
zstd-rs
zstd-decoder in pure rust
Stars: ✭ 148 (+108.45%)
Mutual labels:  compression
go7z
A native Go 7z archive reader.
Stars: ✭ 46 (-35.21%)
Mutual labels:  compression
NBT
A java implementation of the NBT protocol, including a way to implement custom tags.
Stars: ✭ 128 (+80.28%)
Mutual labels:  compression
scale.rb
Ruby SCALE Codec Library & Substrate Client
Stars: ✭ 17 (-76.06%)
Mutual labels:  codec
VszLib
7-zip VB6 Helper
Stars: ✭ 35 (-50.7%)
Mutual labels:  compression
qlZipInfo
MacOSX QuickLook Generator for zip, jar, tar, tar.gz (.tgz), tar.bz2 (.tbz2/.tbz), tar.Z. xar (.xar, .pkg), debian (.deb), RedHat Package Manager (.rpm), 7zip (.7z), xz, Microsoft cabinet (.cab), gzip (.gz), lha, BinHex 4.0 (.hqx), and Stuffit (.sit) archives, and ISO9660 images
Stars: ✭ 47 (-33.8%)
Mutual labels:  compression
nason
🗜 Ultra tiny serializer / encoder with plugin-support. Useful to build binary files containing images, strings, numbers and more!
Stars: ✭ 30 (-57.75%)
Mutual labels:  compression
web-config
A Rollup configuration to build modern web applications with sweet features as for example SCSS imports, Service Worker generation with Workbox, Karma testing, live reloading, coping resources, chunking, treeshaking, Typescript, license extraction, filesize visualizer, JSON import, budgets, build progress, minifying and compression with brotli a…
Stars: ✭ 17 (-76.06%)
Mutual labels:  compression
power-gzip
POWER9 gzip engine documentation and code samples
Stars: ✭ 16 (-77.46%)
Mutual labels:  compression
lossyless
Generic image compressor for machine learning. Pytorch code for our paper "Lossy compression for lossless prediction".
Stars: ✭ 81 (+14.08%)
Mutual labels:  compression
salvador
A free, open-source compressor for the ZX0 format
Stars: ✭ 35 (-50.7%)
Mutual labels:  compression
zpaqfranz
Deduplicating archiver with encryption and paranoid-level tests. Swiss army knife for the serious backup and disaster recovery manager. Ransomware neutralizer. Win/Linux/Unix
Stars: ✭ 86 (+21.13%)
Mutual labels:  compression
fo-dicom.Codecs
Cross-platform Dicom native codecs for fo-dicom
Stars: ✭ 41 (-42.25%)
Mutual labels:  codec
fpzip
Cython bindings for fpzip, a floating point image compression algorithm.
Stars: ✭ 24 (-66.2%)
Mutual labels:  compression
fairytale
encode.ru community archiver
Stars: ✭ 29 (-59.15%)
Mutual labels:  compression

TranscodingStreams.jl

Docs Stable Docs Latest TravisCI Status codecov.io

TranscodingStream

TranscodingStreams.jl is a package for transcoding data streams, which is:

  • fast: small overhead and specialized methods,
  • consistent: basic I/O operations you already know will work as you expect,
  • generic: support any I/O objects like files, buffers, pipes, etc., and
  • extensible: you can define a new codec to transcode data.

Installation

Pkg.add("TranscodingStreams")

Installing a codec package will install TranscodingStreams.jl as well, and so in general you don't need to explicitly install it.

Usage

using TranscodingStreams, CodecZlib

# Some text.
text = """
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sollicitudin
mauris non nisi consectetur, a dapibus urna pretium. Vestibulum non posuere
erat. Donec luctus a turpis eget aliquet. Cras tristique iaculis ex, eu
malesuada sem interdum sed. Vestibulum ante ipsum primis in faucibus orci luctus
et ultrices posuere cubilia Curae; Etiam volutpat, risus nec gravida ultricies,
erat ex bibendum ipsum, sed varius ipsum ipsum vitae dui.
"""

# Streaming API.
stream = IOBuffer(text)
stream = TranscodingStream(GzipCompressor(), stream)
stream = TranscodingStream(GzipDecompressor(), stream)
for line in eachline(stream)
    println(line)
end
close(stream)

# Array API.
array = Vector{UInt8}(text)
array = transcode(GzipCompressor, array)
array = transcode(GzipDecompressor, array)
@assert text == String(array)

Each codec has an alias to its transcoding stream type for ease of use. For example, GzipCompressorStream{S} = TranscodingStream{GzipCompressor,S} where S<:IO.

Consult the docs for more details and examples.

Codec packages

TranscodingStreams.jl offers I/O interfaces to users. It also offers a protocol suite to communicate with various codecs. However, specific codecs are not included in this package except the Noop codec, which does nothing to data. The user need to install codecs as a plug-in to do something meaningful.

The following codec packages support the protocol suite:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].