A new lossy image format for the internet
C++ HTML JavaScript C Makefile SourcePawn Other
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
butteraugli Use PIK image in local Butteraugli Jul 13, 2018
comparison_tool Add a comparison tool Jul 13, 2018
docs Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
guetzli Remove unused guetzli files Jul 13, 2018
simd MSVC fixes Jul 2, 2018
third_party Add lodePNG (replaces libpng) Jul 10, 2018
.gitmodules Update .gitmodules Jul 10, 2018
.travis.yml Update travis to gcc7 (thanks eustas) Jul 10, 2018
CMakeLists.txt Remove unused guetzli files Jul 13, 2018
CONTRIBUTING.md Contributing: please via issues Sep 4, 2017
LICENSE Initial release. Jul 24, 2017
Makefile Makefile improvements Jul 27, 2018
README.md Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
adaptive_quantization.cc Container improvements+warning fixes Jul 13, 2018
adaptive_quantization.h Container improvements+warning fixes Jul 13, 2018
af_edge_preserving_filter.cc Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
af_edge_preserving_filter.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
af_solver.h SIMD simplification, allow building without SIMD, Butteraugli update,… Dec 19, 2017
af_stats.cc Major update: add edge-preserving filter, ubsan fixes, partially para… Apr 20, 2018
af_stats.h SIMD simplification, allow building without SIMD, Butteraugli update,… Dec 19, 2017
alpha_blend.cc Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
alpha_blend.h SIMD simplification, allow building without SIMD, Butteraugli update,… Dec 19, 2017
ans_common.cc Entropy coding cleanup Jun 22, 2018
ans_common.h Entropy coding cleanup Jun 22, 2018
ans_decode.cc Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
ans_decode.h Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
ans_encode.cc Container improvements+warning fixes Jul 13, 2018
ans_encode.h Entropy coding cleanup Jun 22, 2018
ans_params.h SIMD simplification, allow building without SIMD, Butteraugli update,… Dec 19, 2017
approx_cube_root.h Add approx_cube_root Jul 24, 2017
arch_specific.cc Major update: add edge-preserving filter, ubsan fixes, partially para… Apr 20, 2018
arch_specific.h Major update: add edge-preserving filter, ubsan fixes, partially para… Apr 20, 2018
args.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
arith_decode.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
bit_reader.h Entropy coding cleanup Jun 22, 2018
bits.h MSVC fixes Jul 2, 2018
brunsli_v2_common.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
brunsli_v2_decode.cc Warning fixes Jul 10, 2018
brunsli_v2_decode.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
brunsli_v2_encode.cc Warning fixes Jul 10, 2018
brunsli_v2_encode.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
brunsli_v2_input.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
butteraugli_comparator.cc Use PIK image in local Butteraugli Jul 13, 2018
butteraugli_comparator.h Use PIK image in local Butteraugli Jul 13, 2018
butteraugli_distance.cc Use PIK image in local Butteraugli Jul 13, 2018
butteraugli_distance.h Use PIK image in local Butteraugli Jul 13, 2018
butteraugli_main.cc Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
byte_order.h Initial release. Jul 24, 2017
cache_aligned.h Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
cluster.h Faster encode of small images by merging symbols, add debug infrastru… Feb 5, 2018
common.h Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
compiler_specific.h Use new simd/ library, remove prior vector*.h Oct 4, 2017
compressed_image.cc Container improvements+warning fixes Jul 13, 2018
compressed_image.h Container improvements+warning fixes Jul 13, 2018
container.cc Container improvements+warning fixes Jul 13, 2018
container.h Container improvements+warning fixes Jul 13, 2018
context.cc Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
context.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
context_map_decode.cc Export latest version Aug 29, 2017
context_map_decode.h Export latest version Aug 16, 2017
context_map_encode.cc Warning fixes Jul 10, 2018
context_map_encode.h Initial release. Jul 24, 2017
convolve.h Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
cpik.cc Allow the use of --target_size Jul 26, 2018
data_parallel.h Warning fixes Jul 10, 2018
data_stream.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
dc_predictor.cc Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
dc_predictor.h Container improvements+warning fixes Jul 13, 2018
dc_predictor_slow.h Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
dct.cc Container improvements+warning fixes Jul 13, 2018
dct.h Container improvements+warning fixes Jul 13, 2018
dct_util.cc Container improvements+warning fixes Jul 13, 2018
dct_util.h Container improvements+warning fixes Jul 13, 2018
deconvolve.cc Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
deconvolve.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
distributions.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
dpik.cc Improved cmdline output Jun 22, 2018
entropy_coder.cc Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
entropy_coder.h Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
entropy_source.h Entropy coding cleanup Jun 22, 2018
fast_log.h Initial release. Jul 24, 2017
fields.h Container improvements+warning fixes Jul 13, 2018
gamma_correct.cc Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
gamma_correct.h Container improvements+warning fixes Jul 13, 2018
gamma_correct_poly.h gcc fixes Jun 22, 2018
gauss_blur.cc Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
gauss_blur.h Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
header.cc Container improvements+warning fixes Jul 13, 2018
header.h Container improvements+warning fixes Jul 13, 2018
huffman_decode.cc Export latest version Aug 16, 2017
huffman_decode.h SIMD simplification, allow building without SIMD, Butteraugli update,… Dec 19, 2017
huffman_encode.cc MSVC fixes Jul 2, 2018
huffman_encode.h Initial release. Jul 24, 2017
image.cc add MutablePlane, remove Row+Deconstruct Jun 22, 2018
image.h Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
image_io.cc Container improvements+warning fixes Jul 13, 2018
image_io.h Container improvements+warning fixes Jul 13, 2018
jpeg_quant_tables.cc Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
jpeg_quant_tables.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
lehmer_code.cc Initial release. Jul 24, 2017
lehmer_code.h Initial release. Jul 24, 2017
linalg.cc Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
linalg.h Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
noise.cc MSVC fixes Jul 2, 2018
noise.h Major update: add edge-preserving filter, ubsan fixes, partially para… Apr 20, 2018
opsin_image.cc add MutablePlane, remove Row+Deconstruct Jun 22, 2018
opsin_image.h Major update: add edge-preserving filter, ubsan fixes, partially para… Apr 20, 2018
opsin_inverse.cc MSVC fixes Jul 2, 2018
opsin_inverse.h MSVC fixes Jul 2, 2018
opsin_params.cc Major update: add edge-preserving filter, ubsan fixes, partially para… Apr 20, 2018
opsin_params.h MSVC fixes Jul 2, 2018
optimize.h Container improvements+warning fixes Jul 13, 2018
os_specific.cc MSVC fixes Jul 2, 2018
os_specific.h Major update: add edge-preserving filter, ubsan fixes, partially para… Apr 20, 2018
padded_bytes.cc Parallel decoder speedup, high-quality improvements Jun 22, 2018
padded_bytes.h Container improvements+warning fixes Jul 13, 2018
pik.cc Fix the target_size logic Jul 30, 2018
pik.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
pik_alpha.cc faster parallel decode, use constants Jul 2, 2018
pik_alpha.h Container improvements+warning fixes Jul 13, 2018
pik_info.cc Major update: add edge-preserving filter, ubsan fixes, partially para… Apr 20, 2018
pik_info.h Minor cleanup Jun 22, 2018
pik_params.h Container improvements+warning fixes Jul 13, 2018
prevent_elision.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
profiler.h Warning fixes Jul 10, 2018
quantizer.cc Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
quantizer.h Container improvements+warning fixes Jul 13, 2018
rational_polynomial.h Major update: add edge-preserving filter, ubsan fixes, partially para… Apr 20, 2018
resample.h Fix a crash on small images in SharpenDC Jul 27, 2018
robust_statistics.h Minor cleanup Jun 22, 2018
simd_helpers.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
status.h Container improvements+warning fixes Jul 13, 2018
tile_flow.cc Minor cleanup Jun 22, 2018
tile_flow.h Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
tsc_timer.h MSVC fixes Jul 2, 2018
upscaler.cc Container improvements+warning fixes Jul 13, 2018
upscaler.h Add JPEG->PIK mode, optimizations, improved denoising Jun 7, 2018
write_bits.h Cleanup Jun 22, 2018
xorshift128plus.h Major update: add edge-preserving filter, ubsan fixes, partially para… Apr 20, 2018
yuv_convert.cc Decoder improvements: remove jpeg/png, speedup, add gradient layer Jul 10, 2018
yuv_convert.h Major SIMD update; add quick_reference and instruction_matrix Oct 20, 2017

README.md

Pik

Build status

Pik is a new lossy image format for the internet. This directory contains an encoder and a decoder for the format.

This project is in the initial research stage, please don't use it for any purpose.

Project Goals

Pik is to have roughly the same performance requirements space that JPEG is holding today. We aim to have roughly similar decoding speed, i.e., no more than 50 % slower in decoding, but adding more modern compression and prediction methods, giving 55 % more density. We plan to improve to 65 % before freezing the format. Some of these new advances may come with a moderate drop in decoding speed (possibly 40 % of jpeg speed).

The bitstream supports tiles so that multi-core decoding can decode a single image faster (up to 1 GB/s).

We are planning to keep the format 8x8 DCT based, possibly with some support for non-integral-transform-based direct mode blocks (or overlay blocks).

Build instructions

The software currently requires an AVX2 and FMA capable CPU, e.g. Haswell.

Please run git submodule init && git submodule update, then make -j8, which creates cpik and dpik binaries in bin/.

The --distance command line argument to cpik is a Butteraugli distance (see http://github.com/google/butteraugli), which indicates the largest acceptable error. Larger values lead to smaller files and lower quality. Try 1.0 for a visually lossless result.

Related projects

  • Butteraugli (HVS-aware image differences)
  • Guetzli (JPEG encoder with denser packing)

This is not an official Google product.