This field isn't used at the moment at all. The public field
ive_ctl_set_dimensions_ip_t.u4_strd is kept to avoid breaking
other calling code, although it doesn't have any actual function
any longer.
Change-Id: Icfc88846fa63f209c67b8e1f8e0cc21bc4ddb73a
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
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
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
The x18 register is platform specific, and using it in portable assembler
code should be avoided.
In this particular case, using it is not actually needed at all.
Change-Id: I07016fdd3a264ed77eba37abcd1748b51cf7a49e
Some versions of the clang built-in assembler interprets /* as a start
of a multi-line comment, even within lines starting with a @. Therefore,
make sure to terminate these properly.
This fixes warnings about /* within a block comment when building
using the clang built-in assembler (in some versions of clang), and
fixes issues where part of the assembly source was effectively
commented out, when building with this assembler.
Change-Id: I4b520334d92740f8c60def94ee990561b2cb8b7c
This fixes running when built with clang - by pure luck the out of bounds
writes didn't cause any harm when the calling C code was built with gcc.
Change-Id: I4e33dd403b785cbcd24fb80f4db7a86310a32225
When specifying one specific lane of the vector, the number of
lanes don't need to be specified.
The clang built-in assembler doesn't allow the redundant
declarations, while binutils gas work fine with both forms.
Change-Id: I86077ce0774d4594a1295b6860e4944df87dde2f
This uses the same mechanism as in ih264e_fmt_conv_420p_to_420sp_a9q
to do an overlapping copy of the last few pixels.
Change-Id: Ic93a00d0683337fd0f6f540119000466685f64bd
Added support for CABAC entropy coding.
Added support for B slices.
Fixed an issue in rate control constant QP mode.
Change-Id: Ib759d35e8e943f941aa9b8bbff0362d92c619994
Handled non-multiple of 16 dimensions for 420 semiplanar input
Modified test code to remove alignment of width and height
Bug: 21586373
Change-Id: I83ff8165364a863d577fcac81e711b07eec9c004
The function ih264e_get_lvl_idx lacked handling of them
before, which meant that it returned index 0 (corresponding
to level 1.0) if level 5.0 or 5.1 were selected.
Change-Id: I482213e68e11fd091c72ec57a593392aa1a0a4ae
After incrementing the macroblock position in ih264e_update_proc_ctxt,
the slice index of the next macroblock is read. The value that is read
isn't actually used, but make sure that the array is large enough to
avoid overreads.
Change-Id: I44ddb49773244c7d1e404199fc57a9e30a8959e0
Chroma is already accounted for in e.g. num_samples by multiplying
the number of luma samples by 3/2, so include it in the padding
calculation as well.
This fixes encoding 176x144 at level 1.0 - normally this isn't an issue
since the padding is a bit overestimated, but for this particular
resolution/level combination, it fails unless this is calculated properly.
Change-Id: Id5df6e5aee4d3d78f4c28a3b7d5fed6fe42a1f2c
Resolved warnings seen in x86 modules
Fixed alignment of few modules
Updated comments in few arm modules for consistency
Fixed warnings seen in clang build
Change-Id: I0623169b5e84a6a6f09c3d2212e754101272f5e9
Added support for encoding non-multiple of 16 dimensions
Added support for encoding dimensions smaller than 64x64
Aligned coeff data to 4 byte boundary
Bug: 20554276
Change-Id: I111093950f94698296d8499a2845cfe2db6c557b