Scalable encoder project
DataHoarder
487786bc69
All checks were successful
continuous-integration/drone/push Build is passing
|
||
---|---|---|
build | ||
cli | ||
color | ||
decoder | ||
encoder | ||
frame | ||
testdata | ||
utilities | ||
.dockerignore | ||
.drone.yml | ||
.gitignore | ||
go.mod | ||
go.sum | ||
LICENSE | ||
README.md |
Supported
- y4m pipes
- Frame tested support for 4:4:4, 4:2:2, 4:2:0. Probably 4:0:0 as well, untested.
- Frame tested support for 8, 10, 12 bit depth. Probably 14 and 16 as well, untested.
- VMAF tools
- IVF reader
- Frameserver
- TODO: make list per encoder and decoder.
Bitdepth / subsampling Frame support matrix
Depth/Sampling | 4:0:0 | 4:2:0 | 4:2:2 | 4:4:4 |
---|---|---|---|---|
8-bit | ✅ | ✅ | ✅ | ✅ |
10-bit | ✅ | ✅ | ⚠️ | ⚠️ |
12-bit | ⚠️ | ⚠️ | ⚠️ | ✅ |
14-bit | ❔ | ❔ | ❔ | ❔ |
16-bit | ❔ | ❔ | ❔ | ❔ |
Legend:
✅ = supported, tested regularly
⚠️ = supported, tested sparsely/manually
❔ = probably supported, not tested
❌ = unsupported
Formats supported
Format | Decoder | Encoder | Notes |
---|---|---|---|
YUV4MPEG2 | ✅ | ❌ | Supports most bitdepth and chroma subsampling. Library limited, not format limited. Decoding via S.O.N.G/Ignite |
H.264 | ❌ | ✅ | Supports 8-bit and 10-bit; 4:0:0, 4:2:0, 4:2:2, 4:4:4 chroma subsampling. Encoding via x264 into .h264 bitstream. |
H.265 | ❌ | ❌ | |
VP9 | ❌ | ❌ | |
AV1 | ✅ | ✅ | Supports 8-bit, 10-bit and 12-bit; 4:0:0, 4:2:0, 4:2:2, 4:4:4 chroma subsampling. Decoding via dav1d from .ivf bitstream Encoding via libaom-av1 into .ivf bitstream. |
Additionally, a safe command-line call to ffmpeg can be made to decode into compatible YUV4MPEG2 via the integrated ffmpeg decoder.
TODO
- No SAR/PAR handling.
- No color primary / transfer / matrix coefficients handling.
Build tags
Several Golang build tags exist to change which features are included in the project.
disable_library_[library]
This tag disables support for the specified library dependencies.
Current implemented [library]: libdav1d, libaom, libx264, libvmaf
.