To debug control software based application (ctrlsw_encoder, ctrlsw_decoder), perform the following steps.
- Run file to file-based encoder and decoder sample applications to ensure they
operate as expected.
- H.264 decoding
file-to-file
ctrlsw_decoder -avc -in input-avc-file.h264 -out ouput.yuv - H.265 decoding file-to-file
ctrlsw_decoder -hevc -in input-hevc-file.h265 -out ouput.yuv - Encoding file-to-file
ctrlsw_encoder –cfg encode_simple.cfg
The application exits with appropriate error message. Refer error description table for more details. For example, if the VCU power is insufficient to encode 4kp resolution file at 120fps, the following message appears:
ctrlsw_encoder -cfg AVC_test.cfg -i test_4Kp120_nv12.yuv -o /dev/null Allegro DVT2 - AVC/HEVC Encoder Reference Software v1.0.41 - Copyright (C) 2018 Confidential material Channel creation failed, processing power of the available cores insufficient Codec error: Channel creation failed, processing power of the available cores insufficient To debug above error, change either Frame rate(4kp60) or resolution(1080p120) in cfg file which can be handled by VCU and re-run.Application exit with memory error if CMA is insufficient. For example:
ctrlsw_encoder -cfg AVC_test.cfg -i test_4Kp60_nv12.yuv -o /dev/null Allegro DVT2 - AVC/HEVC Encoder Reference Software v1.0.41 - Copyright (C) 2018 Confidential material [53.119829] cma: cma_alloc: alloc failed, req-size: 3078 pages, ret: -12 [53.126542] al5e a0100000.al5e: Can't alloc DMA buffer of size 12607488 GET_DMA_FD: Cannot allocate memory [53.137916] cma: cma_alloc: alloc failed, req-size: 10522 pages, ret: -12 [53.144712] al5e a0100000.al5e: Failed internal buffers allocation, channel wasn't created Memory shortage detected (DMA, embedded memory or virtual memory) Codec error: Memory shortage detected (DMA, embedded memory or virtual memory)To mitigate the memory error, check that CMATotal and CMAFree are sufficient using the following command:
cat /proc/meminfoIncrease CMA size either in U-Boot using a command,
setenv bootargs ${bootargs} cma=xxxxMor, while building the Linux kernel using kernel configuration property. - H.264 decoding
file-to-file
- If the output file is not generated and no failure/error message occurs on the
terminal, check for kernel level message using a command:
dmesgCheck "al5e", “al5d” keyword in the dmesg log for the error, if any.
- If the application freezes, debug using “gdb”. For that, remove optimization
from control software Makefile as below.
replace: CFLAGS+=-O3 By CFLAGS+=-O0Then run the application using the following command:
gdb –args ctrlsw_encoder -cfg AVC_test.cfg -i test_4Kp60_nv12.yuv -o /dev/nullwhich provides the gdb shell. Type “run” to execute the application
(gdb)runWhen it hangs, use the backtrace function to view the last function flow from where it hangs.
(gdb)bt