./vpxenc -v -o out/test.webm --ivf --verbose --psnr --codec=vp9 --passes=1 --fpf=out/test.txt --min-q=0 --max-q=51 <file>.y4m > out/<file2>.txt
Hello Everyone,My research is about video compression and was mainly working on HEVC (HM reference software).Brief Background: In Low-Delay-P of HEVC, the encoder assigns all its frames a P-type except for the first one (I-frame). In addition, there is a predefined referencing and QP structure for these frames.Objective: Run Low-Delay-P (IPPPP) in VP9 while observing frame types, rates/PSNR per frame, QPsTo achieve my goal, I would like to ask a few questions that will help me understand VP9's code and configurations:
- What is the set of configurations to achieve my goal? So far, I am running the following command:
./vpxenc -v -o out/test.webm --ivf --verbose --psnr --codec=vp9 --passes=1 --fpf=out/test.txt --min-q=0 --max-q=51 <file>.y4m > out/<file2>.txt
- What does --min_q and --max_q do? How does the encoder decide upon the QP of each frame?
- Can someone please explain in further detail what CQ mode in VP9 is? Does that mean the encoder assigns constant QP to all frames?
- How can I output an encoding trace file? In HM, it is a file that contains frames types, QPs, and their corresponding BRs and PSNRs. Should I use ffprobe? or I should write my own code?
- In HM, based on the input QP, there is a fixed relationship to calculate lambda - Is there a similar concept for HM?
Hi Jingning,Thank you very much for your detailed reply!I understood what you explained about the newly introduced source frame (S-frame). I previously read a similar concept in the literature. Can I infer that the referencing structure that VP9 uses only relies on this S-frame for every GOP?
Clear Goal: Ultimately, I would like to integrate my newly developed adaptive QP method into VP9.My method significantly improves LD-HEVC, so I am searching for a similar and simple benchmark in VP9 that I can (A) build upon (B) compare my results after integration.I was previously advised to use the CQ mode with --min_q and --max_q. Do you think that setting all of these parameters into the same QP value should be a good starting point? How does the current VP9 encoder decide upon the QP in order to meet the rate constraints?
I will search for rd.RDMUL, but do you know what the keyword is for the QP? I looked up QP, but it is no good.
About the trace file, does VP9 produce a file that contains the referencing structure, QP per frame, bits per frame, and PSNR per frame? This is an example of a file that's produced by HM: