This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
We are trying to configure the H.264 Encoder on the C6678 processor to work in the CBR Rate Control mode. We additionally, want the encoder to encode periodic Intra pictures (lets say once every 10sec). What we are observing is that the quality of the I picture severely degrades. I am trying to see if we can better the quality on the I picture.
Ours is a video communication application, but we do like to send regular intra picture (spaced out over several seconds) so that the terminals can refresh any packet losses they might have incurred. For the test run, we are trying to encode a CIF sequence @ 15FPS @ 384kbps. Intra picture space is 10seconds. HRD buffer size is set to ~0.5 seconds.
I am attaching the encoded sequence for your reference. Also attaching the encoder configuration file. The source picture can be downloaded from here in case thats required media.xiph.org/.../ or else I can provide via a FTP site.
Hi Arvind,
The link is not working. Can you update it. Please share encoded stream along with the configuration parameters.
Before that can you try to reduce the qp related to I frames (i.e qpMaxI,qpI)
Regards
Gajanan
H.264Enc-Experiment-7.7zHi Gajanan,
I was able to download the .7z file from my original post. In any case I realized that the archive I had uploaded earlier had the HRD buffer size set to ~250msec. The one uploaded with this post sets it to 500msec.
Sure. We will try your suggestion to lower qpMaxI and qpI. I am assuming this would force the encoder to consume more bits on the I picture, but then skip a few future frames to maintain the CBR constraints. Will get back on this thread once we have those results.
Best regards
Arvind
Hi Arvind,
Below are few observations based on your shared configuration -
1 - To achieve 500msec exactly , you need to update the below changes
initialBufferLevel = 192000 # Initial Buffer level for HRD compliance, keep same as HRDBufferSize for best quality
HRDBufferSize = 192000 # Hypothetical Reference Decoder Buffer Size in bits - 2*bitrate for VBR
2 - Currently set with below values. Is this specific requirement of slicesize should be 1500 bytes. If requirement can be changed, then make the slicemode = 0.
sliceMode = 2 # Type of slice coding, 0 => slice coding mode is frame based, 1 => Slices are controlled based upon number of Macroblocks
sliceUnitSize = 1500 # Number of macroblocks per slice
3 - Try with EncodingPreset = 1 (High Quality) ---------- Experiment
With this enable, you will loose some control of few parameters (i.e you cant enable/disable)
4 - entropyCodingMode = 1 (CABAC)
I hope with this changes, the I frame quality will improve.
Regards
Gajanan