OpenVisualCloud / SVT-HEVC

SVT HEVC encoder. Scalable Video Technology (SVT) is a software-based video coding technology that is highly optimized for Intel® Xeon® processors. Using the open source SVT-HEVC encoder, it is possible to spread video encoding processing across multiple Intel® Xeon® processors to achieve a real advantage of processing efficiency.
Other
516 stars 172 forks source link

About the VBR algorithm #547

Open Dillon14281118 opened 4 years ago

Dillon14281118 commented 4 years ago

What't the theory of the VBR in Svt-HEVC? Are there some papers to introduce the VBR algorithm? In Svt-HEVC,which functions implement vbr?

tianjunwork commented 4 years ago

Could you take a look at SVT-AV1 design doc? Both encoders share the same VBR algorithm. Below are processes related to BRC. Initial rate control process: https://github.com/OpenVisualCloud/SVT-AV1/blob/master/Docs/svt-av1-encoder-design.md#initial-rate-control-process Rate control process: https://github.com/OpenVisualCloud/SVT-AV1/blob/master/Docs/svt-av1-encoder-design.md#rate-control-process Let me know if you need further information.

Dillon14281118 commented 4 years ago

Thank you,it's helpful. When I use Svt-HEVC to encode a 1920x1080 seqs,I set FrameRate=15, RateControlMode=1 TargetBitRate=2048000 in Sample.cfg, I use ffmpeg to calc the PSNR,the PSNR is always a little low. And the actual bitrate is a little high. I want to know why? Is the vbr question?

Dillon14281118 commented 4 years ago

And I run the same command in VBR mode several times,the result is a little different every time.

tianjunwork commented 4 years ago

https://github.com/OpenVisualCloud/SVT-HEVC#demo-features-and-limitations When set to encode in VBR mode, the encoder does not produce a bit-exact output from one run to another

You can experiment with -encMode, which provide you different trade-off between speed and coding efficiency. With lower encMode, you should get higher PSNR.

Dillon14281118 commented 4 years ago

Is vbr implemented in EbInitialRateControlProcess.c,EbInitialRateControlReorderQueue.c,EbInitialRateControlResults.c? I want to learn more about vbr.

tianjunwork commented 4 years ago

Yes, BRC algo is mainly in EbInitialRateControlProcess.c and EbRateControlProcess.c. Recommend you read high level encoder arch first, to understand the data and control flow. https://github.com/OpenVisualCloud/SVT-AV1/blob/master/Docs/svt-av1-encoder-design.md#high-level-encoder-architecture https://github.com/OpenVisualCloud/SVT-AV1/blob/master/Docs/svt-av1-encoder-design.md#inter-process-data-and-control-management

Dillon14281118 commented 4 years ago

Have you compared svt-hevc with other open source codecs like x265,HM?