Scalable encoder project
Go to file
DataHoarder 487786bc69
All checks were successful
continuous-integration/drone/push Build is passing
Return mismatched structs in error
2024-04-17 06:20:32 +02:00
build Add ffmpeg cli decoder, default env variables for VMAF_MODEL_PATH / FFMPEG_PATH 2023-11-04 15:13:39 +01:00
cli Return mismatched structs in error 2024-04-17 06:20:32 +02:00
color Implemented encode server 2023-10-21 23:00:19 +02:00
decoder Add pix_fmt argument to ffmpeg decoder 2024-02-15 23:48:24 +01:00
encoder Fixed ffmpeg stdin not closing, io.Seeker and io.EOF errors 2023-11-07 09:24:01 +01:00
frame Improved libaom/libx264, proper pool, frame stats 2023-10-31 23:00:37 +01:00
testdata Frame pool, benchmark y4m decoder 2023-10-28 00:50:59 +02:00
utilities Fixed VFR pts end 2023-11-06 12:03:14 +01:00
.dockerignore Cleanup and add samples for tests, decode .y4m.xz streams 2023-08-10 12:44:17 +02:00
.drone.yml Fix ci build 2023-11-04 15:13:12 +01:00
.gitignore Initial commit: utilities, y4m parser, x264 encoder 2022-09-14 21:43:20 +02:00
go.mod VFR aware Y4M decoder and encoders 2023-10-26 06:44:41 +02:00
go.sum VFR aware Y4M decoder and encoders 2023-10-26 06:44:41 +02:00
LICENSE Initial commit: utilities, y4m parser, x264 encoder 2022-09-14 21:43:20 +02:00
README.md Add ffmpeg cli decoder, default env variables for VMAF_MODEL_PATH / FFMPEG_PATH 2023-11-04 15:13:39 +01:00

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.