Currently avc encoder creates desired number of threads at
the start of every frame and joins after frame is processed.
This change modifies the thread creation part. Now the threads
are created at the start of the sequence. Kept alive through
out the sequence and joined at the end of the sequence. This
helps in reduction of thread creation and deletion overhead.
This change does not effect the encoded bitstream. That is,
encoded output with this change is same as encoded output
without this change.
Bug: 288998933
Test: avcenc -c enc.cfg
Change-Id: I98784169052a5f05c109aaf1de97a5e46d7a773d
The following lines of code have been removed to improve coverage -
[x] Functions -
- isvc_interleaved_copy
- isvc_16bit_interleaved_copy
- isvc_16bit_interleaved_memset
- isvc_iquant_itrans_recon_chroma_4x4_neon
- isvc_iquant_itrans_recon_chroma_4x4_sse42
- isvc_iquant_itrans_recon_4x4_dc_with_res_output_neon
- isvc_iquant_itrans_recon_res_dc_4x4_sse42
- isvc_iquant_itrans_recon_4x4_dc_with_res_accumulate_neon
- isvc_iquant_itrans_recon_res_dc_with_res_acc_4x4_sse42
- isvce_wait_for_thread
[x] Function pointer initialisations for the functions above
Test: svc_enc_fuzzer
This commit does not introduce any new functionality w.r.t previous
commit. But it fixes few things. They are listed below
1. Guard Bands in header files are fixed
2. Header files contains function definition comments. These are same
as in source file. Maintaining same comment at two locations is
unnecessary. These are removed.
3. Maintain Indentation consistency across the code.
4. Remove unused code
- Add SII flag and SII parameters for the encoder and decoder.
- Encoder: Added support for SII SEI
- Decoder: Added support for SII SEI parsing and exporting
Added support for encoding 'Scalable Baseline' profile, corresponding to
profile_idc of 83 in 'Rec. ITU-T H.264 (11/2007)'.
Bug: 248891908
Test: svcenc -c enc.cfg
Change-Id: Ib12ca4c4a8c0e674738ae2af01558a08cefe0929
Use generic function pointers on riscv.
Test: built for aosp_riscv64
Signed-off-by: Mao Han <han_mao@linux.alibaba.com>
Change-Id: I424d15396d7e9711d23a6118f92aee0fc7924c28
- Set CMAKE_C_STANDARD to 90
Because of this, moved some declarations to start of the block
- Move PROFILE_ENABLE and MD5_DISABLE to specific targets as these
macros are not used when building libraries
Bug: 242076773
Test: Builds
Change-Id: Icd0b8a48f015a695185ce2220800348f7a7512f1
Added support for decoding 'Multiview High' profile, corresponding to
profile_idc of 118 in 'Rec. ITU-T H.264 (08/2021)'.
Bug: 232169767
Test: atest CtsMediaV2TestCases
Change-Id: I63256344a8a205e74f2bcebe555f5ba6cc3163d0
While calculating the residual for inter 4x4 MB, the intrinsic
instruction reads extra 4-bytes from the prediction buffer
Test: POC in the bug description
Bug: 204704614
Change-Id: I72b5cb8b63351efb60b65ecbb5e7a8c8bc1fcd94
(cherry picked from commit c79d0f5092)
Merged-In: I72b5cb8b63351efb60b65ecbb5e7a8c8bc1fcd94
Current design of AVC Decoder creates new threads
to process each frame. This CL adds support to reuse
the threads across frames.
Test: avcdec -c dec.cfg
Bug: 191124963
Change-Id: I087699c4c7ce6aa59a1d8b078ae196a50dcf889c
Cmake scripts are now modular. Separate scripts now handle
build specifications for each target and dependency.
Toolchain files have been added for armv7, armv8 builds.
Bug: 213579857
Test: Builds using cmake
Test: Builds in OSS-fuzz
Change-Id: Iac62b443c0a0de09a2ce6553a660db2c3d5dc846
This commit add support for encoding and decoding of MDCV, CLL, CCV and
AVE SEI messages
Test: avcenc -c enc.cfg, avcdec -c dec.cfg
Bug: 141931623
Change-Id: Idc0b0db5291482ae2bc19cdff65669c32374b02a
Since left shift by 32 is undefined value, making it 31.
Bug: 73337905
Bug: 73337480
Bug: 73337472
Test: manual
Change-Id: Id03991e75ea32d29bafa2d0bbb2bda7d5876fb03
When the arm code has been ported to aarch64, occurrances of
the rsb instruction have been replaced according to the
following pattern:
arm:
rsb rB, rA, #X
aarch64:
sub xTMP, xA, #X
neg xB, xTMP
When the immediate constant #X is zero, we can just as well
use a plain neg instruction without any extra subtraction.
Change-Id: I637be20b469d8d4e7fac712e8039c7e3eedb8c54
After loading a single byte with ldrb and immediately moving
it into a vector register with dup .8b, there's no point in
sign extending it to 64 bit inbetween.
Similarly in the second case, when adding a number of pixels,
there's no need to sign extend between additions, just do the
additions using the 32 bit register names.
Change-Id: Ie37f47b93138643ffd05169a3792bc39967dbea3
For WORD32 parameters, the upper half of the parameter
registers is undefined (even though it is zero in most cases).
When easily doable, use the 'w' register names for such
parameters instead of doing the sign extension with a
separate instruction.
This fixes crashes in some configurations, when built with
clang, which can pass nonzero bits in the high half of registers
more aggressively than GCC.
Also fix the parameter/register mappings; use wN register
names where applicable, and fix incorrect parameter
placement. (Some functions still were documented to have
only 4 parameters in registers.)
Change-Id: Icedf6503b064149d1a651ff1c6a76de5c01722ea
Some parameters had incorrect types. Some were consistently
wrong in both arm and armv8 versions, while others only were
wrong in the armv8 version.
Change-Id: I3efd5c66b32516484fbaa42067d3b12d73fbf09e
Previously they were only marked as the pointers pointing to const
data, but the array themselves being non-const.
Change-Id: Ib5a9af6298615b2c40367a21e728899418b09935
This fixes building with compilers that are strict about the pre-C99
rule about having all variable declarations before statements.
Change-Id: I06dd0cc42a6dbe90025c3c913a0c8d9ffb0acbcb
binutils gas automatically produces vqmovun when vqshrun is used
with a zero shift.
This is required for building the armv8 assembly with the clang built-in
assembler.
Change-Id: Ie986978e4508a085e4e4c76f8db9a8a8394c4fec
clang only supports the new, unified arm syntax (UAL), while binutils
gas supports both (and defaults to the old syntax). Explicitly declare
that the unified syntax is used, and use the right form of these
instructions that is supported by both.
Change-Id: I9a3940e060c129861c7a542ccf09035dbd1766ae