Abstract

The increase in video streaming in recent years has led to the development of advanced video encoders to save bandwidth while meeting practical encoding complexity requirements. Video encoders, therefore, need to provide faster turnaround time through toolset optimizations and/or multithreading (MT). The multithread performance of a video encoder depends on the levels of parallel processing available in the encoder. For the libaom AV1 encoder, the default parallelism is limited to row/tile-based processing within a frame, resulting in low MT scaling even when configured with a high number of threads. We present our proposed frame-parallel MT approach for improving the existing libaom AV1 encoder’s performance. For encoding multiple frames in parallel, it is critical to consider their temporal encoding dependencies. To facilitate the parallel encoding of frames, some frames are prevented from acting as references by either marking them nonreference frames or temporarily removing them from the active reference list. The cross-frame dependencies of various encoding parameters are resolved by disabling or delaying their updates across the frames in a parallel encode set. The proposed method offers an average 31% encode-time reduction at the cost of a reasonable YUV-PSNR BD-rate loss of 1.17% for encoding ultra-high-definition sequences using single tile encoding for cpu-used = 2 with 32 threads. The corresponding MT scaling ratio also improved to 7.1x from 4.9x of the existing libaom implementation.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call