Added support for CABAC entropy coding.
Added support for B slices.
Fixed an issue in rate control constant QP mode.
Change-Id: Ib759d35e8e943f941aa9b8bbff0362d92c619994
Most of them was benign and didn't risk any data race; they
were used for write-only memory during init.
The array as_itt_memtab in ih264e_get_rate_control_mem_tab
could however cause a real data race, if multiple threads
try to initialize an encoder at the same time, since it
used as temporary storage when mapping between different
structs.
Change-Id: I3ca29f0e3be2fad154becc3ee29867e591975a74
If i4_header_mode is set (without the caller explicitly requesting it),
the next frame to be encoded will be missed altogether (when only
a header is output).
Instead force a header to be generated prepended to the next frame.
If the caller explicitly requests header mode, it will be output
in a separate call.
Change-Id: If475717edf980bccb2076f880c60c9dd7dede904
Don't do concatenation with strncat; the length parameter in strncat
is only for how many chars to append at most, not for the full output
buffer size. To safely use strncat, one would have to do
strncat(buf, str, sizeof(buf) - strlen(buf)).
By using snprintf, we guarantee that the buffer is null terminated, and
we don't need to use strnlen at all.
(If compatibility with older MSVC versions that lack snprintf, one
can use _snprintf instead and manually add the null termination.)
Change-Id: I1c2322c7a406ddd5e6551a96c460da60deeffda1
Handled non-multiple of 16 dimensions for 420 semiplanar input
Modified test code to remove alignment of width and height
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
Change-Id: I111093950f94698296d8499a2845cfe2db6c557b