5 ms·
I was most curious about how they parallelise the encoding for the multiple resolutions. The juicy bits from the paper are [1] "MOT [multiple-output transcodin
by photojosh 6y ago
I was most curious about how they parallelise the encoding for the multiple resolutions. The juicy bits from the paper are [1]
"MOT [multiple-output transcoding] is an alternative approach where a single transcoding task
produces the desired combination of resolutions and formats for
a given chunk (Figure 2b). The input chunk is read and decoded
once, and then downscaled and encoded to all output variants in
parallel. This reduces the decoding overheads and allows efficient
sharing of control parameters obtained by analysis of the source
(e.g., detection of fades/flashes). MOT is generally preferred to SOT,
as it avoids redundant decodes for the same group of outputs, but
SOT may be used when memory or latency needs mandate it."
"Multiple-output transcoding (MOT) was considered foundational
for encoder utilization because of the benefits discussed in Section 2.
The efficiency of decoding once, scaling, and encoding an entire
MOT graph on a single VCU simplifies scheduling and reduces
resource consumption at the data center level. The typical structure
of a multi-output transcode is a single-decode and then the set of
conventional 16:9 outputs (e.g. for 1080p inputs: 1080p, 720p, 480p,
360p, 240p, and 144p are encoded). This scales down the decode
needs of the VCU by the number of outputs and generally only
doubles the encoding requirements. Few videos require an entire
VCU for their MOT, so we designed our VCUs to perform multiple
MOTs and SOTs in parallel to boost encoder and VCU utilization"
"In fact, our production workload is largely MOT, which was
not supported on our GPU baseline. Prior to VCU, the production
workload used multiple SOTs instead of running MOT on CPU
given the high latency. MOT throughput is 1.2-1.3x higher than
SOT (976 Mpix/s on H.264 and 927 Mpix/s on VP9), stemming from
the single decode that is reused to produce all the output resolutions."
I grabbed the list of formats for a current popular video too [0] just to give me an idea.
160 mp4 256x128 144p 64k , mp4_dash container, avc1.4d400c@ 64k, 30fps, video only, 5.28MiB
278 webm 256x128 144p 68k , webm_dash container, vp9@ 68k, 30fps, video only, 5.59MiB
242 webm 426x214 240p 113k , webm_dash container, vp9@ 113k, 30fps, video only, 9.27MiB
133 mp4 426x214 240p 145k , mp4_dash container, avc1.4d400d@ 145k, 30fps, video only, 11.90MiB
243 webm 640x320 360p 209k , webm_dash container, vp9@ 209k, 30fps, video only, 17.12MiB
134 mp4 640x320 360p 253k , mp4_dash container, avc1.4d401e@ 253k, 30fps, video only, 20.71MiB
244 webm 854x428 480p 347k , webm_dash container, vp9@ 347k, 30fps, video only, 28.40MiB
135 mp4 854x428 480p 482k , mp4_dash container, avc1.4d401f@ 482k, 30fps, video only, 39.45MiB
247 webm 1280x640 720p 630k , webm_dash container, vp9@ 630k, 30fps, video only, 51.52MiB
136 mp4 1280x640 720p 834k , mp4_dash container, avc1.64001f@ 834k, 30fps, video only, 68.17MiB
248 webm 1920x960 1080p 1103k , webm_dash container, vp9@1103k, 30fps, video only, 90.18MiB
137 mp4 1920x960 1080p 1507k , mp4_dash container, avc1.640028@1507k, 30fps, video only, 123.22MiB
271 webm 2560x1280 1440p 2608k , webm_dash container, vp9@2608k, 30fps, video only, 213.13MiB
313 webm 3840x1920 2160p 7953k , webm_dash container, vp9@7953k, 30fps, video only, 649.98MiB
18 mp4 640x320 360p 395k , avc1.42001E, 30fps, mp4a.40.2 (44100Hz), 32.35MiB
22 mp4 1280x640 720p 962k , avc1.64001F, 30fps, mp4a.40.2 (44100Hz) (best)
[0] https://www.youtube.com/watch?v=ehv3zQAa9zM https://www.youtube.com/watch?v=ehv3zQAa9zM
[1] https://dl.acm.org/doi/abs/10.1145/3445814.3446723 https://dl.acm.org/doi/abs/10.1145/3445814.3446723