Commit graph

18 commits

Author SHA1 Message Date
Ram Mohan
82fb2d30cd avcenc: Allow intra mode evaluation during fast skip
For static content, skip and intra modes often compete with each other
neck and neck during mode evaluation. Upon fast skip detection, instead of
skipping all further mode analysis, disable motion search and allow intra
analysis.

This change applies to all presets except FASTEST.

Average bdrate improves by 1%.

Test: Tested on clips of different resolutions.

Change-Id: Ia0aabca5c1dcad03359bebaf071b7be27898e735
2017-12-04 11:55:54 +05:30
Ray Essick
fef5e9e203 Merge "Encoder: Defined structures for accessing MB header data"
am: 8aa140b8a5

Change-Id: Ib3e9cad8eb8ddbd5c941ff4d4c96a12e0f309831
2016-11-29 14:33:27 +00:00
Harish Mahendrakar
c7d9c91417 Encoder: Defined structures for accessing MB header data
Instead of using hard coded address offsets,
defined structures to access MB Header for each MB type
This improves readability of the code

Also helps in maintaining required alignment for MV
MV elements need to be aligned to 2 byte boundary
Unaligned accesses result in undefined behavior

Bug: 33073518
Test: Tested with -fsanitize=alignment enabled on avcenc
Change-Id: I51c009b7deded76315a4bf2880444d21ae7d517f
2016-11-24 12:25:49 +05:30
Doney Alex
983e1aecd4 Encoder: Added support for configuring VUI parameters.
Bug: 27442922

Change-Id: I781195e78c480e7449f49467abb1df71902e568d
2016-07-12 14:41:59 -07:00
Doney Alex
6581cbf841 DO NOT MERGE Encoder: Fixed adaptive intra refresh.
Earlier if an MB was coded as intra in the previous frame,
corresponding MB in the current frame will not be coded as intra
even though it was supposed to be intra according to adaptive intra refresh.
Now the MB will honour adaptive intra refresh irrespective of its type
in previous frame.

Change-Id: Icc84ddf962dad6f7d1f4d11e9cb2a37bcda567b8
2016-03-12 00:11:40 +00:00
Doney Alex
4f067b6d46 Encoder: Fixed adaptive intra refresh.
Earlier if an MB was coded as intra in the previous frame,
corresponding MB in the current frame will not be coded as intra
even though it was supposed to be intra according to adaptive intra refresh.
Now the MB will honour adaptive intra refresh irrespective of its type
in previous frame.

Change-Id: Icc84ddf962dad6f7d1f4d11e9cb2a37bcda567b8
2016-02-24 19:30:29 +05:30
Hamsalekha S
4202606c70 Encoder added support for VUI params
SPS will now include vui params
Removed a trailing space in ih264e_api.c

Change-Id: I67a57741689206e571e9a83f7e3360149f87e06a
2015-08-04 11:27:29 +05:30
Harinarayanan K K
8588303afa Added code to handle cases with qp less than 10
When qp goes less than 10, all I16x16 mode evaluations
are disabled and I4x4 evaluations are enabled irrespective
of preset. This will ensure that the residual will not
exceed the supported range of entropy

Minimum Qp cannot be set less than 4 now. When QP goes lesser,
the residual may exceed the supported range even with I4x4 enabled.

Change-Id: I25b404fcd9c9e9dbdd77679280968635ee047eb3
2015-06-24 21:04:58 +00:00
Harinarayanan K K
6cb6772805 Reduced memory requirements.
Buffer allocation is based on minimum level required for the
input resolution rather than the input max level.

Number of maximum context sets can be set to 1 to reduce
memory usage.

Added a macro ENC_MIN_PU_SIZE for minimum size of
inter prediction unit supported by encoder.

Changed the maximum constraint on number of MBs for NMB
processing to width in Mbs.

Change-Id: I5a9255e93935d90c13262681aafc772aedf8ae81
2015-06-24 21:04:04 +00:00
Martin Storsjo
f768297941 Always copy data to a local buffer if padding is needed
If horizontal padding is needed, copy the data to avoid having to try
to write into the input buffer.

If vertical padding is needed, we could get away with only copying
the last MB row (as previously was done), but then one extra row of
pixels are needed for intra pred. Thus always copy all of the picture,
for simplicity, if padding is needed.

Change-Id: I6b456a12956120d64e7c6b86d7b571e159f4566b
2015-06-24 20:54:23 +00:00
Martin Storsjo
90a3904fd3 Set the luma/chroma strides depending on source buffer
If the data is read directly from the input buffer, set the stride
values to those of the input buffer. If the data is copied, set the
stride to the value of the local buffer instead.

This fixes handling of cases where the input buffer stride is
(significantly) larger than the maxwidth of the video.

This also effectively makes the parameter
ive_ctl_set_dimensions_ip_t.u4_strd useless - nothing needs to
know the stride until you actually encode a frame, and at that point,
we can either use the stride of the input buffer, or of the local
pu1_y_csc_buf_base where the copied content is stored.

Change-Id: Icde400b4a0867d25855e621e143454e608748aa3
2015-06-24 20:50:12 +00:00
Martin Storsjo
53c6878c15 Use a separate field for the chroma stride
When both luma and chroma are copied to the local buffer (either
due to yuv format conversion, or due to padding), they have got
the same stride, but if chroma is copied while luma is used directly
from the input buffer, they might have different strides.

Therefore add a separate field for chroma stride.

This commit only adds the field, while it still has got the same
value as before.

Change-Id: I0dce97ad4d91cd1d9aba4b4472c6a0de45a314bc
2015-06-24 20:49:50 +00:00
Harinarayanan K K
134291ea0b Added support for Main Profile toolsets in encoder.
Added support for CABAC entropy coding.
Added support for B slices.
Fixed an issue in rate control constant QP mode.

Change-Id: Ib759d35e8e943f941aa9b8bbff0362d92c619994
2015-06-24 20:36:11 +00:00
Harish Mahendrakar
5cdb888fea Fixed an overread in YUV420 Semi-planar input usecase
Handled non-multiple of 16 dimensions for 420 semiplanar input
Modified test code to remove alignment of width and height

Change-Id: I83ff8165364a863d577fcac81e711b07eec9c004
2015-06-11 10:52:36 +05:30
Martin Storsjo
1bc6742182 Only initialize u4_deblk_prev_row if it will be used
This avoids reads out of bounds when encoding videos with a height
of one single macroblock.

Change-Id: Iec982cebb0995c8ecf160751eaa72df38604e8b0
2015-05-25 20:31:02 +03:00
Lajos Molnar
cd9e51fc2b fix file permissions
Change-Id: Ia4f99d5b963acd8d8a1afc2fbdf06b122d898f63
2015-05-05 17:34:51 +00:00
Harish Mahendrakar
c72323e723 Fixed few issues seen in CTS tests
Added support for encoding non-multiple of 16 dimensions
Added support for encoding dimensions smaller than 64x64
Aligned coeff data to 4 byte boundary

Change-Id: I111093950f94698296d8499a2845cfe2db6c557b
2015-04-28 19:17:04 +05:30
Hamsalekha S
8d3d303c79 Initial version
Change-Id: I7efe9a589cd24edf86e8d086b40c27cbbf8b4017
2015-04-02 15:59:02 +05:30