====== Encoding-Quality-Testing ====== Created with the [[https://github.com/voc/voctoquality|voctoquality]] repo. ===== Reference content ===== Reference content is either our own (https://media.ccc.de) or from Xiph (https://media.xiph.org/video/derf/). The specific sources are found in https://github.com/voc/voctoquality/blob/master/data/sources.json All the reference content is converted to 8bit 1080p25. ===== Software ===== * ffmpeg-4.1.4 (same as in buster) * libvmaf-1.3.15 * libvpx-1.8.2 (bullseye) * libx264-2:0.155.2917+git0a84d98-2 (bullseye) ===== Testing VAAPI vs. software encoding for live streaming ===== The codec settings are the ones currently in use by the C3VOC for live streaming. See https://github.com/voc/voctoquality/blob/master/data/profiles/voc_streaming.py for the specific ffmpeg options. The codecs are tested with bitrates from 1Mbit/s to 5.2Mbit/s. ==== Graphs ==== {{ :experiment:streaming_rates.pdf |}} {{ :experiment:streaming_refs.pdf |}} {{ :experiment:streaming_speeds.pdf |}} ==== Comments ==== ^ Platform ^ Label ^ Hardware Codecs ^ Comments ^ ^ Intel 6th Gen (i7-6600U) | skylake | h.264, h.265 | h.264 scores better than our VP9 and x264 streaming settings and is pretty fast\\ h.265 even scores a little bit higher but is considerably slower | ^ Intel 8th Gen (i7-8665U) | whiskeylake | h.264, h.265, VP9 | h.264 and h.265 results worse but faster than skylake, have to check whats up with that\\ VP9 scores worse than H.264 and has broken rate-control for <2mbit/s | ^ AMD Navi (RX 5700 XT) + Ryzen 2nd Gen (R5-2600) | navi10 | h.264, h.265 | h.264 is worse than x264 on veryfast...\\ h.265 produces 1920x1088 output? | ^ Nvidia Turing (RTX2080 Super) | turing | h.264, h.265 | nvidia-driver-460, cuda-toolkit 9.1.85\\ best h.265 encode, h.264 behind Intel | ==== Finding a Tracker VP9 Profile ==== === HD-Profile === Goals: * improve quality over previous libvpx (VP8) profile * don't increase encoding time too much * smaller size but similar quality as x264 master Notes: * realtime + speed <= 3: slower and worse than quality good ``` -i $ref -c:v libvpx-vp9 -quality:v good -crf:v 30 -b:v 6000k -maxrate:v 8000k -minrate:v 2000k -row-mt 1 -frame-parallel:v 1 -tile-columns:v 2 ``` === SD-Profile === * worse parallelization and therefore speed than HD-profile * worse rate-control than HD-profile (doesn't reach target bitrate) * bufsize doesn't change anything * no threads parallelizes best * frame-parallel doesn't work (frame too small?) * bitrate with crf is more like maxrate