Skip to content
This repository has been archived by the owner on Jul 29, 2024. It is now read-only.

About the VBR algorithm #547

Open
Dillon14281118 opened this issue Jun 23, 2020 · 7 comments
Open

About the VBR algorithm #547

Dillon14281118 opened this issue Jun 23, 2020 · 7 comments

Comments

@Dillon14281118
Copy link

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
Copy link
Contributor

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
Copy link
Author

Dillon14281118 commented Jun 23, 2020

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
Copy link
Author

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

@tianjunwork
Copy link
Contributor

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
Copy link
Author

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

@tianjunwork
Copy link
Contributor

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
Copy link
Author

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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants