mirror of
https://github.com/ittiam-systems/libhevc.git
synced 2026-10-03 01:02:43 +07:00
In common/arm64/ihevc_intra_pred_chroma_mode_18_34.s, nt_32 used
v8-v15 in row_kernel_32 without preserving d8-d15 on the stack.
Under AAPCS64 calling conventions, d8-d15 are callee-saved registers.
Clobbering them corrupted caller-saved state (such as d10 in main.c,
which cached e_cmd = IVD_CMD_VIDEO_DECODE), causing subsequent decode
calls on 4:4:4 8-bit streams to fail with IVD_INVALID_API_CMD.
Replace the use of v8-v15 with caller-saved registers v16-v23, matching
the convention used in kernel for nt < 32 in the same file.
Also update tests/common/ihevc_chroma_intra_pred_test.cc to test
block size 32.
Test: ./hevcdec
Test: ./ihevc_chroma_intra_pred_test
Change-Id: I40411c04ab00d7e23842eb1d033c4923e3ec76e9
(cherry picked from commit
|
||
|---|---|---|
| .. | ||
| Android.bp | ||
| BitsBuf.cpp | ||
| BitsBuf.h | ||
| BitsFile.cpp | ||
| BitsFile.h | ||
| common.cmake | ||
| func_selector.cc | ||
| func_selector.h | ||
| helpers.cmake | ||
| ihevc_chroma_inter_pred_test.cc | ||
| ihevc_chroma_intra_pred_test.cc | ||
| ihevc_chroma_itrans_recon_test.cc | ||
| ihevc_chroma_recon_test.cc | ||
| ihevc_deblk_test.cc | ||
| ihevc_itrans_recon_test.cc | ||
| ihevc_itrans_res_test.cc | ||
| ihevc_itrans_test.cc | ||
| ihevc_luma_inter_pred_test.cc | ||
| ihevc_luma_intra_pred_test.cc | ||
| ihevc_mem_fns_test.cc | ||
| ihevc_padding_test.cc | ||
| ihevc_recon_test.cc | ||
| ihevc_sao_test.cc | ||
| ihevc_weighted_pred_test.cc | ||
| Md5Wrapper.cpp | ||
| Md5Wrapper.h | ||
| RawBuf.cpp | ||
| RawBuf.h | ||
| RawFile.cpp | ||
| RawFile.h | ||
| TestCommon.cc | ||
| TestCommon.h | ||
| TestEnums.h | ||