Scripts and Dockerfiles to simplify building of image processing libraries such as libheif, libdav1d, librav1e etc.
Multi-stage Docker builds are used to build the library for the current hardware.
Builds are currently targeting debian:bullseye
.
After compiling, an empty Docker image is created FROM scratch
and the build
artifacts are copied to it in order to allow easy
access in other docker builds:
FROM debian:bullseye as builder
COPY --from=sunside/libdav1d:1.1.0-x64 /dav1d/lib/ /usr/local/lib/
RUN ldconfig
Please consult the detail sections below for the directory layout of each image.
The .env
file contains configuration shared by all build scripts.
If you need to rebuild the libraries under different conditions,
make sure to adjust this file to your needs:
BASE_IMAGE=debian:bullseye
DOCKER_REGISTRY=sunside/
# etc.
Two helper scripts exist:
list-image-contents.sh
lists the contents of the created scratch imageextract-image-contents.sh
extracts the files from the scratch image and bundles it up in a.tar.gz
file.
libheif is an ISO/IEC 23008-12:2017 HEIF and AVIF (AV1 Image File Format) file format decoder and encoder.
HEIF and AVIF are new image file formats employing HEVC (h.265) or AV1 image coding, respectively, for the best compression ratios currently possible.
This build depends on libde265
, librav1e
and libdav1d
built with the scripts below.
See build-heif.sh for the specific versions used.
To produce sunside/libheif:1.1.0-x64
(Docker Hub), run:
./build-heif.sh
This builds libheif
as a shared object.
Output
.
|-lib
| |-libheif.so.1
| |-cmake
| | |-libheif
| | | |-libheif-config-release.cmake
| | | |-libheif-config.cmake
| | | |-libheif-config-version.cmake
| |-libheif.so.1.15.1
| |-libheif.so
| |-libheif
| | |-libheif-rav1e.so
| |-pkgconfig
| | |-libheif.pc
|-share
| |-thumbnailers
| | |-heif.thumbnailer
|-base-image
|-COPYING
|-include
| |-libheif
| | |-heif.h
| | |-heif_version.h
| | |-heif_cxx.h
| | |-heif_plugin.h
dav1d is an AV1 cross-platform decoder, open-source, and focused on speed and correctness.
To produce sunside/libdav1d:1.1.0-x64
(Docker Hub), run:
./build-dav1d.sh
This builds libdav1d
as both a shared object and static archive.
Output
.
|-lib
| |-x86_64-linux-gnu
| | |-libdav1d.so
| | |-libdav1d.so.6
| | |-libdav1d.so.6.8.0
| | |-libdav1d.a
| | |-pkgconfig
| | | |-dav1d.pc
|-base-image
|-COPYING
|-include
| |-dav1d
| | |-data.h
| | |-picture.h
| | |-common.h
| | |-headers.h
| | |-version.h
| | |-meson.build
| | |-dav1d.h
| | |-version.h.in
libde265 is an open source implementation of the h.265 video codec.
To produce sunside/libde265:1.0.11-x64
(Docker Hub), run:
./build-de265.sh
This builds libde265
as a shared object.
Output
.
|-lib
| |-cmake
| | |-libde265
| | | |-libde265Config-release.cmake
| | | |-libde265ConfigVersion.cmake
| | | |-libde265Config.cmake
| |-pkgconfig
| | |-libde265.pc
| |-libde265.so
|-base-image
|-COPYING
|-include
| |-libde265
| | |-en265.h
| | |-de265-version.h
| | |-de265.h
The fastest and safest AV1 encoder.
To produce sunside/librav1e:0.6.3-x64
(Docker Hub), run:
./build-rav1e.sh
This builds librav1e
as both a shared object and a static archive.
Output
.
|-lib
| |-librav1e.a
| |-librav1e.so
| |-librav1e.so.0.6.3
| |-pkgconfig
| | |-rav1e.pc
| |-librav1e.so.0
|-base-image
|-include
| |-rav1e
| | |-rav1e.h
|-LICENSE