SVT-HEVC icon indicating copy to clipboard operation
SVT-HEVC copied to clipboard

About the VBR algorithm

Open Dillon14281118 opened this issue 4 years ago • 7 comments

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?

Dillon14281118 avatar Jun 23 '20 01:06 Dillon14281118

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.

tianjunwork avatar Jun 23 '20 02:06 tianjunwork

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 avatar Jun 23 '20 03:06 Dillon14281118

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

Dillon14281118 avatar Jun 23 '20 03:06 Dillon14281118

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.

tianjunwork avatar Jun 23 '20 04:06 tianjunwork

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

Dillon14281118 avatar Jun 23 '20 07:06 Dillon14281118

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

tianjunwork avatar Jun 23 '20 19:06 tianjunwork

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

Dillon14281118 avatar Jun 24 '20 03:06 Dillon14281118