Error in assembly function put_8tap_neon()
Description: Use the open source library to build libdav1d.so on the linux system so that it can be used on the Android/armv7a platform. Then push the libdav1d.so and davld to the mobile phone, use dav1d to play a specific video, and an error occurs in decoding. The log shows the error in put_8tap_neon(). After commenting out put_8tap_neon(), the stream can be played normally. (The stream of this video comes from the youtube website)
Step as follows:
1、Run Meson
commad used:meson --cross-file android arm_api128.txt tmp
(--arm_api128.txt :arm_api128.txit in the attached file,The cross-compilation toolchain is used in the build process and needs to be downloaded from https://developer.android.com/ndk. Then modify the paths of sys_root, c, cpp, ar, and strip in arm_api128.txt.
--tmp: Folder for saving temporary dataandroid_arm_api28.txt)
2、ninja
3、push dav1d and libdav1d.so to the phone and use command "dav1d -i /sdcard/streadm.ivf -o /sdcard/1.yuv" to play.The error appears at frame 388.Log shows put_8tap_neon() error.
4、According to the error, try to comment out the function-init_mc_fn(FILTER_2D_8TAP_REGULAR,8tap_regular,neon) in mc_init_tmpl.c and play the video again with dav1d, no decoding error is reported.
(error.log and stream.ivf are in addached files,Search for the keyword “Crash” in error.log, and you will find an error in put_8tap_neon())stream.ivferoor.log