code associated with pre enc intra processing is cleaned up.
Unreachable code and debug code is removed. Structure members that
are unused or used for debugging purpose are removed. Control
code is simplified. This helps in memory footprint and object size
foot print.
Test: hevcenc -c vid_enc_cfg.txt
Bug: 139400699
Change-Id: I7697b05ea1d470d93bdb9cb14304cb0bfefd8054
1. Removed excess buffer contexts between core encoding and entropy
2. Allocate memory for lookahead feature on a need basis as opposed to
allocation based on a pre-defined macro
3. Removed unused/debug structure members
Test: hevcenc -c vid_enc_cfg.txt
Bug: 139400088
Change-Id: Ibc7228181b51ec97f355b3657df87d70f207cdd9
Currently deblocking, sao and subpel plane generation are happening for every
CTB serially. This change enables deblocking to be finished for the entire row first.
Then performs SAO for the entire row and finally performs subpel plane
generation for the entire row. This change does not have any effect on the
end bitstream but is expected to give performance gains on devices with
low instruction cache.
On arm platforms, it is noticed that for P5 preset, performance is improved by 15%.
Test: hevcenc -c vid_enc_cfg.txt
Bug: 135510351
Change-Id: I6d09e6cc1d36e967a9b3dd3e68f75bdd0b476a1c
When cu level rc is enabled, the lagrange param is left
uninitialized at the start of row. This is causing the
outputs to vary from run to run when multi-thread is
enabled, for a given input and encoding options. This is
now corrected.
Test: hevcenc -c vid_enc_cfg.txt
Bug: 139402085
Change-Id: Ic9693e9a547d9d5dc1c3b7ef4a46640850723829
While encoding inputs for size 64 x ht for ht > 64, there is a possible
race condition. Before performing deblocking/sao for current CTB, its
top right CTB is checked for its deblocking/sao completion. This can be
skipped for last CTB of a row, provided you have atleast 2 CTB's per row.
The skip is happening for rows with single CTB as well. This is corrected.
Test: hevcenc -c vid_enc_cfg.txt --src_width 64 --src_height 512 \
--input night_64x512.yuv --num_cores 4
Bug: 135516662
Change-Id: Ifed1ae25e5e460cb59d84533e5ad87730ebb3395
Output receive buffer was waiting for one extra picture,
corrected latency.
Bug:135986218
Test: hevcenc -c vid_enc_cfg.txt --max_temporal_layers 1
Change-Id: I2623e59e1b62d1fcbe432f0fe0bab6350ab23889
In one of the returns paths from rc library, it is seen that frame qp is
exceeding the max value configured. At extremely low bitrates, this is
exceeding the max allowable qp and is causing access violation.
Test: hevcenc -c vid_enc_cfg.txt --tgt_bitrate 64000
Bug: 130018957
Test: poc
Change-Id: Iff64c73752d2fd795276678b0d681ab10b550750
(cherry picked from commit 79b1da48eb)
1. While encoding uniform content, it is possible to have perfect
prediction, thus yielding zero distortion. Ratio of Log(cu distortion),
Log(avg cu distortion) is used in cu level qp modulation.
So avoid log(zero) calls.
2. Limit peak-br to twice of tgt-br.
Test: hevcenc -c vid_enc_cfg.txt --input night_320x240_1.yuv --src_width 320 --src_height 240
Bug: 130019940
Change-Id: I9ec68e385b06af25f216c51bcb90910750a5b3bf
(cherry picked from commit 79d3f2a354)
Earlier min frame rate allowed was 7.5.
Encoder now supports min frame rate of 1 which is needed for image
encoding
Bug: 132450110
Test: With HeifWriter demo application for 512x512 image
Change-Id: I1c39ecef3f489d9acc3ae1e6ef8f7ad587b3f2e1