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.

TDA4VM: Does TDA4VM support 4ch 1280*960 H.264 encoding?

Part Number: TDA4VM


Hi,

We need to encode 4ch 1280*960 with 30fps. Does TDA4x encoder can support it?
And how to config 4ch encode in vision_apps/apps/basic_demos/app_encode/ encode demo?

Best regards.

  • Hi,

    Yes, Video encoder IP is capable of encoding 4x1280*960@30fps H264 encoding.

    Currently RTOS SDK H264 encoder is limited to support only 2 channels because memory carveout constraint.

    1. Please refer to the below user guide for increasing the carveout. 

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/07_02_00_06/exports/docs/video_codec/docs_encoder/user_guide/rtos_docs/index.html

    2. You need to develop an application for 4ch config or update the basic_demos/ecnoder app.

    Thanks & Regards,

    Sunita.

  • Hi,Sunita Nadampalli:

    Thank you for you reply.
    1. I will try to carveout memory to support 4ch encode according to this link.
    2. With basic_demos/ecnoder app, I can encode 1 channel video. It there any patch or configs to support 2ch encode?

    Thanks.

  • Dear Sunita Nadampalli:

    We tried as user guide to carveout memory, but failed to enode 4 channel. Would you please check if any error in my action?

    1. Edit the file: vision_apps/apps/basic_demos/app_tirtos/tirtos_linux/gen_linker_mem_map.py

    mcu2_1_ddr_non_cache_size   = 64*MB - mcu2_0_ddr_non_cache_size;

    to

    mcu2_1_ddr_non_cache_size   = 128*MB - mcu2_0_ddr_non_cache_size;

    2. Run gen_linker_mem_map.py

    3. Edit mcu2_0/r5_mpu.xs and mcu2_1/r5_mpu.xs with same changes:

    3.1 Update:
    Before:

    MPU.setRegionMeta(index++, non_cache_base_addr + 0*16*MB, MPU.RegionSize_16M, attrs);
    MPU.setRegionMeta(index++, non_cache_base_addr + 1*16*MB, MPU.RegionSize_16M, attrs);
    MPU.setRegionMeta(index++, non_cache_base_addr + 2*16*MB, MPU.RegionSize_16M, attrs);
    MPU.setRegionMeta(index++, non_cache_base_addr + 3*16*MB, MPU.RegionSize_16M, attrs);
    

    After:

    MPU.setRegionMeta(index++, non_cache_base_addr + 0*32*MB, MPU.RegionSize_32M, attrs);
    MPU.setRegionMeta(index++, non_cache_base_addr + 1*32*MB, MPU.RegionSize_32M, attrs);
    

    3.2 Add:

    MPU.setRegionMeta(index++, non_cache_base_addr + 2*32*MB, MPU.RegionSize_32M, attrs);
    MPU.setRegionMeta(index++, non_cache_base_addr + 3*32*MB, MPU.RegionSize_32M, attrs);
    

    4. After that, we run encoder app error (We modify app_encode example to use 4 channel encoding nodes), but we got error message as follows:

    Encode graph done!
    App Create Graph Done!
    62.157835 s: VX_ZONE_ERROR:[ownContextSendCmd:782] Command ack message returned failure cmd_status: -7
    62.157858 s: VX_ZONE_ERROR:[ownContextSendCmd:818] tivxEventWait() failed.
    62.157879 s: VX_ZONE_ERROR:[ownNodeKernelInit:526] Target kernel, TIVX_CMD_NODE_CREATE failed
    62.157885 s: VX_ZONE_ERROR:[ownNodeKernelInit:527] Please be sure the target callbacks have been registered for this core
    62.157891 s: VX_ZONE_ERROR:[ownNodeKernelInit:528] If the target callbacks have been registered, please ensure no errors are occurring within the create callback of this kernel
    62.158065 s: VX_ZONE_ERROR:[ownGraphNodeKernelInit:583] kernel init for node 5, kernel com.ti.hwa.video_encoder ... failed !!!
    62.158077 s: VX_ZONE_ERROR:[vxVerifyGraph:2044] Node kernel init failed
    62.158082 s: VX_ZONE_ERROR:[vxVerifyGraph:2098] Graph verify failed
    [MCU2_0] 62.158319 s: ==========================================================
    [MCU2_0] 62.158414 s: Capture Status: Instance|0
    [MCU2_0] 62.158460 s: ==========================================================
    [MCU2_0] 62.158504 s: overflowCount: 0
    [MCU2_0] 62.158534 s: spuriousUdmaIntrCount: 0
    [MCU2_0] 62.158564 s: frontFIFOOvflCount: 0
    [MCU2_0] 62.158593 s: crcCount: 0
    [MCU2_0] 62.158618 s: eccCount: 0
    [MCU2_0] 62.158645 s: correctedEccCount: 0
    [MCU2_0] 62.158676 s: dataIdErrorCount: 0
    [MCU2_0] 62.158703 s: invalidAccessCount: 0
    [MCU2_0] 62.158733 s: invalidSpCount: 0
    [MCU2_0] 62.158762 s: strmFIFOOvflCount[0]: 0
    [MCU2_0] 62.158794 s: strmFIFOOvflCount[1]: 0
    [MCU2_0] 62.158826 s: strmFIFOOvflCount[2]: 83
    [MCU2_0] 62.158858 s: strmFIFOOvflCount[3]: 18
    [MCU2_0] 62.158905 s: Channel Num | Frame Queue Count | Frame De-queue Count | Frame Drop Count | Error Frame Count |
    [MCU2_0] 62.158984 s: 0 | 0 | 0 | 0 | 0 |
    [MCU2_0] 62.159047 s: 1 | 0 | 0 | 0 | 0 |
    [MCU2_0] 62.159108 s: 2 | 0 | 0 | 0 | 0 |
    [MCU2_0] 62.159165 s: 3 | 0 | 0 | 0 | 0 |
    [MCU2_1] 62.157709 s: VX_ZONE_ERROR:[tivxVideoEncoderCreate:421] Failed to Alloc Video Encoder Object
    [MCU2_1] 63.500296 s: TIMEOUT: topazdd_wait_on_sync timed out waiting for writeback 0x01000000.
    [MCU2_1] 64.831296 s: TIMEOUT: topazdd_wait_on_sync ti