Hi,
May I ask if the SDK (08.06.00.12) supports the use of "tivxVideoEncoderNode"? Apply the "encode_module" from SDK (07.03) version in SDK (08.06.00.12) to replace the gstreamer encoding method in SDK (08.06.00.12).
Regards,
Yueqian
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi,
May I ask if the SDK (08.06.00.12) supports the use of "tivxVideoEncoderNode"? Apply the "encode_module" from SDK (07.03) version in SDK (08.06.00.12) to replace the gstreamer encoding method in SDK (08.06.00.12).
Regards,
Yueqian
Hi,
No Encoder node is no longer supported. Encoder is supported via gStreamer or V4L2 on Linux, Please refer to Linux userguide for more information.
Regards,
Brijesh
Hi Brijesh,
1.That means there is no interface related to "tivxVideoEncoderNode" in the SDK (08.06.00.12), right?
2.May I ask how can I optimize CPU usage if I use gstreamer for encoding? The "output io mode=4 capture io mode=2" used here did not have an optimization effect, and the settings are as follows:
snprintf(params->m_AppSrcNameArr[ch] , CODEC_MAX_LEN_ELEM_NAME, "myAppSrc%d" , ch); i += snprintf(¶ms->m_cmdString[i], CODEC_MAX_LEN_CMD_STR-i,"appsrc format=GST_FORMAT_TIME is-live=true do-timestamp=true block=false name=%s ! queue \n",params->m_AppSrcNameArr[ch]); i += snprintf(¶ms->m_cmdString[i], CODEC_MAX_LEN_CMD_STR-i,"! video/x-raw, width=(int)%d, height=(int)%d, framerate=(fraction)30/1, format=(string)%s, interlace-mode=(string)progressive, colorimetry=(string)bt601 \n", params->in_width, params->in_height, params->in_format); i += snprintf(¶ms->m_cmdString[i], CODEC_MAX_LEN_CMD_STR-i,"! v4l2h264enc output-io-mode=4 capture-io-mode=2 bitrate=1500000 \n");
and
snprintf(params->m_AppSinkNameArr[ch], CODEC_MAX_LEN_ELEM_NAME, "myAppSink%d", ch); i += snprintf(¶ms->m_cmdString[i], CODEC_MAX_LEN_CMD_STR-i,"! appsink name=%s drop=true wait-on-eos=false max-buffers=4\n",params->m_AppSinkNameArr[ch]);
Regards,
Yueqian
1.That means there is no interface related to "tivxVideoEncoderNode" in the SDK (08.06.00.12), right?
Yes, that's correct.
2.May I ask how can I optimize CPU usage if I use gstreamer for encoding? The "output io mode=4 capture io mode=2" used here did not have an optimization effect, and the settings are as follows:
Sorry, did not get it. What do you mean optimization here? CPU optimization?
Regards,
Brijesh
Yes, I want to optimize the CPU usage of encoding. The CPU usage is high when using the parameters set above.
Can the data copied from frames be used in shared memory (by pre allocating some memory for recycling). May I ask where the interface encoded in the SDK (08.06.00.12) "app_multi_cam_codec" is located? Can relevant optimizations be carried out?
Regards,
Yueqian
Hi,
I would let Sarabesh and Brandon to help you our here.
Regards,
Brijesh
Hi Brijesh,
May I ask if there are any other interfaces in TIOVX that can implement encoding and decoding without using gstreamer in SDK (08.06.00.12)?
By the way, why have the interfaces related to "tivxVideoEncoderNode" been removed here? What are the drawbacks of "tivxVideoEncoderNode"? What are the advantages of using gstreamer?
Regards,
Yueqian
Hi Yueqian,
May I ask if there are any other interfaces in TIOVX that can implement encoding and decoding without using gstreamer in SDK (08.06.00.12)?
I think you can use V4L2, but not TIOVX.
By the way, why have the interfaces related to "tivxVideoEncoderNode" been removed here? What are the drawbacks of "tivxVideoEncoderNode"? What are the advantages of using gstreamer?
Can we please ask these to your local TI FAE/support team?
Regards,
Brijesh
Hi Yueqian,
Yes, I want to optimize the CPU usage of encoding. The CPU usage is high when using the parameters set above.
Can the data copied from frames be used in shared memory (by pre allocating some memory for recycling). May I ask where the interface encoded in the SDK (08.06.00.12) "app_multi_cam_codec" is located? Can relevant optimizations be carried out?
There are optimizations to CPU that can be made using DMA by setting v4l2src to capture-io-mode=5 and then have v4l2h264enc use output-io-mode=4. However, this can only be done for specific camera inputs that the driver supports. What type of camera is being used?
Thank you,
Sarabesh S
Hi Yueqian,
I believe you can use dmabuf framework to optimize CPU usage when using this camera type. I am looking further into it to see what gstreamer parameters need to be set to allow this when using appsrc. I will update you when I have more information.
Thanks,
Sarabesh S
Hi,
OK, looking forward to receiving your good news in a timely manner!
Regards,
Yueqian
Hi Yueqian,
After taking a look, to import DMA buffers to be used by appSrc, you need to add the output-io-mode=4 parameter to the v4l2h264enc element. I saw you have a similar thread with Brandon where he walked through these modifications (https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1308410/tda4vm-hi-does-the-app_multi_cam_codec-application-occupy-cpu-resources-does-encoding-and-decoding-occupy-a-high-proportion).
Outside of these changes, there is nothing else to reduce the CPU utilization from the encoder pipeline perspective. If there are no further questions I will close this thread.
Thank you,
Sarabesh S
Hi,
"There are optimizations to CPU that can be made using DMA by setting v4l2src to capture-io-mode=5 and then have v4l2h264enc use output-io-mode=4. However, this can only be done for specific camera inputs that the driver supports. What type of camera is being used?"
1.May I ask if GMSL cameras support it?
2.May I ask what type of camera TI comes with?
3.What is the CPU occupied by camera encoding when using TI equipped cameras and deserializers? Can you provide a comparative reference data on CPU usage?
Regards,
Yueqian
Hi,
1. If you go to /opt/imaging and ls the directory, you should see the listed compatible cameras (i.e. ar0233, ar0820, imx219, imx390). GMSL is supported with these arXXXX cameras listed.
2. Our cameras are typically CSI cameras, but I believe it does not matter what the camera is if it is supported by the driver.
3. CPU usage should be the same regardless of what camera is being used as long as its supported by the driver. I will do some tests on the camera I currently have with the SDK version you are on and will update you with my results.
Thank You,
Sarabesh S
Hi Yueqian,
These are my CPU performance statistics with no changes made to the app_multi_cam_codec code with a single camera capture->encode and decode->display. This was done on SDK 9.0 with a IMX390 camera.
Summary of CPU load, ==================== CPU: mpu1_0: TOTAL LOAD = 12. 9 % ( HWI = 0.11 %, SWI = 0. 4 % ) CPU: mcu2_0: TOTAL LOAD = 13. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: mcu2_1: TOTAL LOAD = 1. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: mcu3_0: TOTAL LOAD = 1. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: mcu3_1: TOTAL LOAD = 1. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: mcu4_0: TOTAL LOAD = 1. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: mcu4_1: TOTAL LOAD = 1. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: c7x_1: TOTAL LOAD = 0. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: c7x_2: TOTAL LOAD = 0. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: c7x_3: TOTAL LOAD = 0. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: c7x_4: TOTAL LOAD = 1. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) HWA performance statistics, =========================== HWA: VISS: LOAD = 8.27 % ( 50 MP/s ) HWA: LDC : LOAD = 7. 9 % ( 49 MP/s ) HWA: MSC0: LOAD = 10.96 % ( 98 MP/s ) DDR performance statistics, =========================== DDR: READ BW: AVG = 1213 MB/s, PEAK = 22755 MB/s DDR: WRITE BW: AVG = 856 MB/s, PEAK = 11605 MB/s DDR: TOTAL BW: AVG = 2069 MB/s, PEAK = 34360 MB/s Detailed CPU performance/memory statistics, =========================================== DDR_SHARED_MEM: Alloc's: 48 alloc's of 95933931 bytes DDR_SHARED_MEM: Free's : 5 free's of 12441610 bytes DDR_SHARED_MEM: Open's : 43 allocs of 83492321 bytes CPU: mcu2_0: TASK: FREERTOS_TA: 0. 0 % CPU: mcu2_0: TASK: IPC_RX: 0. 0 % CPU: mcu2_0: TASK: REMOTE_SRV: 87.71 % CPU: mcu2_0: TASK: LOAD_TEST: 0. 0 % CPU: mcu2_0: TASK: lwIP main l: 0. 0 % CPU: mcu2_0: TASK: TIVX_CPU_0: 0. 0 % CPU: mcu2_0: TASK: TIVX_V1NF: 0. 0 % CPU: mcu2_0: TASK: TIVX_V1LDC1: 0. 0 % CPU: mcu2_0: TASK: TIVX_V1SC1: 0. 0 % CPU: mcu2_0: TASK: TIVX_V1MSC2: 0. 0 % CPU: mcu2_0: TASK: TIVXVVISS1: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT1: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT2: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP1: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP2: 0. 0 % CPU: mcu2_0: TASK: TIVX_CSITX: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT3: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT4: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT5: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT6: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT7: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT8: 0. 0 % CPU: mcu2_0: TASK: TIVX_DPM2M1: 0. 0 % CPU: mcu2_0: TASK: TIVX_DPM2M2: 0. 0 % CPU: mcu2_0: HEAP: DDR_LOCAL_MEM: size = 16777216 B, free = 16047104 B ( 95 % unused) CPU: mcu2_0: HEAP: L3_MEM: size = 262144 B, free = 245248 B ( 93 % unused) CPU: mcu2_1: TASK: FREERTOS_TA: 0. 0 % CPU: mcu2_1: TASK: IPC_RX: 0. 0 % CPU: mcu2_1: TASK: REMOTE_SRV: 2. 3 % CPU: mcu2_1: TASK: LOAD_TEST: 0. 0 % CPU: mcu2_1: TASK: TIVX_CPU_1: 0. 0 % CPU: mcu2_1: TASK: TIVX_SDE: 0. 0 % CPU: mcu2_1: TASK: TIVX_DOF: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_RX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: HEAP: DDR_LOCAL_MEM: size = 16777216 B, free = 16776960 B ( 99 % unused) CPU: mcu2_1: HEAP: L3_MEM: size = 262144 B, free = 262144 B (100 % unused) CPU: mcu3_0: TASK: FREERTOS_TA: 0. 0 % CPU: mcu3_0: TASK: IPC_RX: 0. 0 % CPU: mcu3_0: TASK: REMOTE_SRV: 0.84 % CPU: mcu3_0: TASK: LOAD_TEST: 0. 0 % CPU: mcu3_0: TASK: TIVX_MCU3_0: 0. 0 % CPU: mcu3_0: TASK: IPC_TEST_RX: 0. 0 % CPU: mcu3_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_0: HEAP: DDR_LOCAL_MEM: size = 8388608 B, free = 8388352 B ( 99 % unused) CPU: mcu3_1: TASK: FREERTOS_TA: 0. 0 % CPU: mcu3_1: TASK: IPC_RX: 0. 0 % CPU: mcu3_1: TASK: REMOTE_SRV: 0. 0 % CPU: mcu3_1: TASK: LOAD_TEST: 0. 0 % CPU: mcu3_1: TASK: TIVX_MCU3_1: 0. 0 % CPU: mcu3_1: TASK: IPC_TEST_RX: 0. 0 % CPU: mcu3_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu3_1: HEAP: DDR_LOCAL_MEM: size = 8388608 B, free = 8388352 B ( 99 % unused) CPU: mcu4_0: TASK: FREERTOS_TA: 0. 0 % CPU: mcu4_0: TASK: IPC_RX: 0. 0 % CPU: mcu4_0: TASK: REMOTE_SRV: 0. 1 % CPU: mcu4_0: TASK: LOAD_TEST: 0. 0 % CPU: mcu4_0: TASK: TIVX_MCU4_0: 0. 0 % CPU: mcu4_0: TASK: TIVX_V2NF: 0. 0 % CPU: mcu4_0: TASK: TIVXV2LDC1: 0. 0 % CPU: mcu4_0: TASK: TIVXV2MSC1: 0. 0 % CPU: mcu4_0: TASK: TIVXV2MSC2: 0. 0 % CPU: mcu4_0: TASK: TIVXV2VISS1: 0. 0 % CPU: mcu4_0: TASK: IPC_TEST_RX: 0. 0 % CPU: mcu4_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_0: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_0: HEAP: DDR_LOCAL_MEM: size = 8388608 B, free = 8384512 B ( 99 % unused) CPU: mcu4_0: HEAP: L3_MEM: size = 524288 B, free = 524288 B (100 % unused) CPU: mcu4_1: TASK: FREERTOS_TA: 0. 0 % CPU: mcu4_1: TASK: IPC_RX: 0. 0 % CPU: mcu4_1: TASK: REMOTE_SRV: 0. 0 % CPU: mcu4_1: TASK: LOAD_TEST: 0. 0 % CPU: mcu4_1: TASK: TIVX_MCU4_1: 0. 0 % CPU: mcu4_1: TASK: IPC_TEST_RX: 0. 0 % CPU: mcu4_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu4_1: HEAP: DDR_LOCAL_MEM: size = 8388608 B, free = 8388352 B ( 99 % unused) CPU: c7x_1: TASK: FREERTOS_TA: 0. 0 % CPU: c7x_1: TASK: IPC_RX: 0. 0 % CPU: c7x_1: TASK: REMOTE_SRV: 0. 0 % CPU: c7x_1: TASK: LOAD_TEST: 0. 0 % CPU: c7x_1: TASK: TIVX_C71_P1: 0. 0 % CPU: c7x_1: TASK: TIVX_C71_P2: 0. 0 % CPU: c7x_1: TASK: TIVX_C71_P3: 0. 0 % CPU: c7x_1: TASK: TIVX_C71_P4: 0. 0 % CPU: c7x_1: TASK: TIVX_C71_P5: 0. 0 % CPU: c7x_1: TASK: TIVX_C71_P6: 0. 0 % CPU: c7x_1: TASK: TIVX_C71_P7: 0. 0 % CPU: c7x_1: TASK: TIVX_C71_P8: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_RX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: HEAP: DDR_LOCAL_MEM: size = 134217728 B, free = 134217472 B ( 99 % unused) CPU: c7x_1: HEAP: L3_MEM: size = 3145728 B, free = 3145728 B (100 % unused) CPU: c7x_1: HEAP: L2_MEM: size = 458752 B, free = 458752 B (100 % unused) CPU: c7x_1: HEAP: L1_MEM: size = 16384 B, free = 16384 B (100 % unused) CPU: c7x_1: HEAP: DDR_SCRATCH_MEM: size = 134217728 B, free = 134217728 B (100 % unused) CPU: c7x_1: HEAP: DDR_NON_CACHE_M: size = 134217728 B, free = 134217728 B (100 % unused) CPU: c7x_1: HEAP: DDR_SCRATCH_NON: size = 134217728 B, free = 134217728 B (100 % unused) CPU: c7x_2: TASK: FREERTOS_TA: 0. 0 % CPU: c7x_2: TASK: IPC_RX: 0. 0 % CPU: c7x_2: TASK: REMOTE_SRV: 0. 0 % CPU: c7x_2: TASK: LOAD_TEST: 0. 0 % CPU: c7x_2: TASK: TIVX_C72_P1: 0. 0 % CPU: c7x_2: TASK: TIVX_C72_P2: 0. 0 % CPU: c7x_2: TASK: TIVX_C72_P3: 0. 0 % CPU: c7x_2: TASK: TIVX_C72_P4: 0. 0 % CPU: c7x_2: TASK: TIVX_C72_P5: 0. 0 % CPU: c7x_2: TASK: TIVX_C72_P6: 0. 0 % CPU: c7x_2: TASK: TIVX_C72_P7: 0. 0 % CPU: c7x_2: TASK: TIVX_C72_P8: 0. 0 % CPU: c7x_2: TASK: IPC_TEST_RX: 0. 0 % CPU: c7x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_2: HEAP: DDR_LOCAL_MEM: size = 134217728 B, free = 134213120 B ( 99 % unused) CPU: c7x_2: HEAP: L3_MEM: size = 3145728 B, free = 3145728 B (100 % unused) CPU: c7x_2: HEAP: L2_MEM: size = 458752 B, free = 458752 B (100 % unused) CPU: c7x_2: HEAP: L1_MEM: size = 16384 B, free = 16384 B (100 % unused) CPU: c7x_2: HEAP: DDR_SCRATCH_MEM: size = 134217728 B, free = 134217728 B (100 % unused) CPU: c7x_2: HEAP: DDR_NON_CACHE_M: size = 134217728 B, free = 134217728 B (100 % unused) CPU: c7x_2: HEAP: DDR_SCRATCH_NON: size = 134217728 B, free = 134217728 B (100 % unused) CPU: c7x_3: TASK: FREERTOS_TA: 0. 0 % CPU: c7x_3: TASK: IPC_RX: 0. 0 % CPU: c7x_3: TASK: REMOTE_SRV: 0. 0 % CPU: c7x_3: TASK: LOAD_TEST: 0. 0 % CPU: c7x_3: TASK: TIVX_C73_P1: 0. 0 % CPU: c7x_3: TASK: TIVX_C73_P2: 0. 0 % CPU: c7x_3: TASK: TIVX_C73_P3: 0. 0 % CPU: c7x_3: TASK: TIVX_C73_P4: 0. 0 % CPU: c7x_3: TASK: TIVX_C73_P5: 0. 0 % CPU: c7x_3: TASK: TIVX_C73_P6: 0. 0 % CPU: c7x_3: TASK: TIVX_C73_P7: 0. 0 % CPU: c7x_3: TASK: TIVX_C73_P8: 0. 0 % CPU: c7x_3: TASK: IPC_TEST_RX: 0. 0 % CPU: c7x_3: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_3: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_3: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_3: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_3: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_3: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_3: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_3: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_3: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_3: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_3: HEAP: DDR_LOCAL_MEM: size = 134217728 B, free = 134213120 B ( 99 % unused) CPU: c7x_3: HEAP: L3_MEM: size = 3145728 B, free = 3145728 B (100 % unused) CPU: c7x_3: HEAP: L2_MEM: size = 458752 B, free = 458752 B (100 % unused) CPU: c7x_3: HEAP: L1_MEM: size = 16384 B, free = 16384 B (100 % unused) CPU: c7x_3: HEAP: DDR_SCRATCH_MEM: size = 134217728 B, free = 134217728 B (100 % unused) CPU: c7x_3: HEAP: DDR_NON_CACHE_M: size = 134217728 B, free = 134217728 B (100 % unused) CPU: c7x_3: HEAP: DDR_SCRATCH_NON: size = 134217728 B, free = 134217728 B (100 % unused) CPU: c7x_4: TASK: FREERTOS_TA: 0. 0 % CPU: c7x_4: TASK: IPC_RX: 0. 0 % CPU: c7x_4: TASK: REMOTE_SRV: 0. 0 % CPU: c7x_4: TASK: LOAD_TEST: 0. 0 % CPU: c7x_4: TASK: TIVX_C74_P1: 0. 0 % CPU: c7x_4: TASK: TIVX_C74_P2: 0. 0 % CPU: c7x_4: TASK: TIVX_C74_P3: 0. 0 % CPU: c7x_4: TASK: TIVX_C74_P4: 0. 0 % CPU: c7x_4: TASK: TIVX_C74_P5: 0. 0 % CPU: c7x_4: TASK: TIVX_C74_P6: 0. 0 % CPU: c7x_4: TASK: TIVX_C74_P7: 0. 0 % CPU: c7x_4: TASK: TIVX_C74_P8: 0. 0 % CPU: c7x_4: TASK: IPC_TEST_RX: 0. 0 % CPU: c7x_4: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_4: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_4: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_4: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_4: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_4: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_4: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_4: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_4: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_4: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_4: HEAP: DDR_LOCAL_MEM: size = 134217728 B, free = 134213120 B ( 99 % unused) CPU: c7x_4: HEAP: L3_MEM: size = 3145728 B, free = 3145728 B (100 % unused) CPU: c7x_4: HEAP: L2_MEM: size = 458752 B, free = 458752 B (100 % unused) CPU: c7x_4: HEAP: L1_MEM: size = 16384 B, free = 16384 B (100 % unused) CPU: c7x_4: HEAP: DDR_SCRATCH_MEM: size = 134217728 B, free = 134217728 B (100 % unused) CPU: c7x_4: HEAP: DDR_NON_CACHE_M: size = 134217728 B, free = 134217728 B (100 % unused) CPU: c7x_4: HEAP: DDR_SCRATCH_NON: size = 134217728 B, free = 134217728 B (100 % unused) GRAPH: capture_graph (#nodes = 4, #executions = 1781) NODE: CAPTURE1: capture_node: avg = 4363 usecs, min/max = 71 / 61321 usecs, #executions = 1781 NODE: VPAC_VISS1: viss_node: avg = 3995 usecs, min/max = 3917 / 4246 usecs, #executions = 1781 NODE: MCU2-0: aewb_node: avg = 283 usecs, min/max = 36 / 4641 usecs, #executions = 1781 NODE: VPAC_LDC1: ldc_node: avg = 3041 usecs, min/max = 3012 / 3822 usecs, #executions = 1781 GRAPH: display_graph (#nodes = 2, #executions = 1776) NODE: VPAC_MSC1: img_mosaic_node: avg = 4793 usecs, min/max = 4732 / 14338 usecs, #executions = 1776 NODE: DISPLAY1: DisplayNode: avg = 8616 usecs, min/max = 61 / 16987 usecs, #executions = 1776 PERF: FILEIO: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0 PERF: TOTAL: avg = 42071 usecs, min/max = 34030 / 54810 usecs, #executions = 366 PERF: TOTAL: 23.76 FPS GST_WRAPPER PUSH/PULL COUNTS: Push count : 1787 Pull count : 1784
Thank you,
Sarabesh S
Hi,
OK, thank you. Could you please obtain the CPU usage status through "top" or "htop" and help me take a picture? So that I can have a more intuitive comparison.
In addition, besides taking screenshots of CPU usage for a single camera, it would be even more perfect if four cameras could be run to take screenshots of CPU usage.
Regards,
Yueqian
Hi Yueqian,
Sure, attached is the CPU usage statistics through top on a per thread basis. This is also with 4 cameras, using both capture->encode and decode->display. I made no changes to the demo code which means it is not using DMA Buf framework.
Regards,
Sarabesh S
Hi,
All right, I found that the CPU usage is basically the same.
Thank you!
Regards,
Yueqian