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.

How can I config the H264 encode codecParams.cfg for HPENC in transcode project?

hello,

I am using c6678 evm and I want to use the transcode project in mcsdk_video_2_1_0_8, but the transcode default set the encode  as BP encode, I want to use HP encode, how can I config the codecParams.cfg? 

Best Regards,

Si

  • Hi could you please let me know which transcoder project in mcsdk_video are you trying? CCS example?

    thank you,

    Paula

     

  • hi Paula,

    I am sorry I am late for reply. I use the C:\ti\mcsdk_video_2_1_0_8\examples\transcode  project, project name is videoTranscode ,  which is imported from ccs. Yes, it 's ccs example.

     

    Regards,

    Si

  • Hi Si, please use latest MCSDK video release CCS transcoder example which includes H264HP encoder

    http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mcsdk_video/02_02_00_42/index_FDS.html

    alternatevely you can change used encoder

    videoTranscode->properties -> C6000 Compiler -> include Options -->  "${CODEC_ROOT}/C66x_h264hpvenc_01_00_02_00_ELF/packages"

    You would need to download/install H264 HP encoder from http://software-dl.ti.com/dsps/dsps_public_sw/codecs/C6678/index.html

    Finally, save changeds, clean project and  build project

    Thank you,

     

    Paula

     

  • hi Paula,

    The  MCSDK video link "http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mcsdk_video/02_02_00_42/index_FDS.html" is a post production release for the MCSDK 3.1.0 release, but my mcsdk version is mcsdk_2_01_02_06, so I will try the other way you said, and i have some questions.

    Q1: you said change incude options path as "${CODEC_ROOT}/C66x_h264hpvenc_01_00_02_00_ELF/packages",

     and I think I have to also change the “C6000 Linker -> File Searc Path ” to link h264hpvenc_ti.le66 lib,not  h264venc_ti.le66 lib, is it right?

    Q2:"C:\ti\Codecs\C66x_h264hpvenc_01_00_00_01_ELF\packages\ti\sdo\codecs\h264hpvenc\App\Client\Test\TestVecs\Config"  encoder.cfg file,  there is a config

    "Profile               = 100 # Encoding profile 100 => HP, 77 => MP, 66 => BP.  " , but for “C:\ti\mcsdk_video_2_1_0_8\examples\transcode\testVecs\config” codecParams.cfg, it 's default config is

    "ch1_static_param11  = 66           # profileIdc“, it is BP encoder, so for transcode project ,after I change Q1 path, need I config the codecParams.cfg? If it 's, how?

    Regards,

    Si

  • hi Paula,

    I download mcsdk_video/02_02_00_42 and find what you said"CCS transcoder example which includes H264HP encoder", then I build it, but there is some wrong, below is the error:

    "../linker.cmd", line 164: error #10099-D: program will not fit into available memory. run placement with alignment fails for section ".shared_mem_SL2_uncached" size 0x1f008 . Available memory ranges:
    MSMC size: 0x3fff00 unused: 0x1f638 max hole: 0xff00
    error #10010: errors encountered during linking; "videoTranscode.out" not built

    it likes that the MSMC memroy is almost full, there is not enough memory for shared_mem_SL2_uncached section. can you help me solve the problem?

    Regards,

    Si

  • Hi Si,

    You are right, example CCS was not test it on drop42 and it is not fitting.. I will report the issue so it gets resolve on a next drop.

    In Drop39 transcoder example CCS was checked (http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mcsdk_video/02_02_00_39/index_FDS.html) so you can use this drop better.

    This drop uses below codecs versions:

    C66x_h264hpvdec_01_01_02_07_ELF
    C66x_h264hpvenc_01_00_01_04_ELF

    thank you,

    Paula

     

  • Hi Paula,

    I download the mcsdk_video_02_02_00_39, and build the transcode project, and I can build and run it successfully.

    The project just uses one core  for transcoding, but I want to use core0~core1 decoder and then core2~core7

    encoder for one channel, what should I do? If I want to achieve multi channels,  what should I do?

    Regards,

    Si

  • Hi Si, you can check MCSDK video PCIe demos for a multicore multichannel implementation of H.264

    thank you,

    Paula

  • Hi Paula,

    PCIe demos has no source code , and  it 's not a ccs project, I want to have a ccs project base on a multicore multichannel implementation of H.264, how can I achieve it?

    Regards,

    Si

  • Hi Si, TFTP framework demos can be configured in multicore

    C:\TI\mcsdk_video_2_2_0_39\dsp\siu\vct\testVecs

    please check H.264HP encoder/decoder

    In codec params you can set number of cores and core teams

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    nCores = 2 # Number of Cores involved in the decode/encode operation

    coreTeamMapping = 0 1 -1 # Core IDs (0-based) involved in the

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    thank you,

    Paula

  • Paula,

    Yes,I find it,  but it 's not a ccs project, I need a ccs project example which can run encode and decode on different core,and the demo can not run transcode on different cores of one chip, just encode or decode.

    So what I want to achieve is  a ccs project which includes source code, and also which can run  multicore transcode.

    Can you help me to achieve it?

    Best Regards,

    Si

  • Si, current CCS transcoder example is a back-to-back transcoder using one core, changing it to multicore would require some changes, let me check it and come back to you. On the other hand, if you need a CCS project for multicore encoder and/or decoder (but not transcoder) you can always check codecs CCS testbench

     

    CCS project path example:

    C:\TI\Codecs\C66x_h264hpvdec_01_01_02_07_ELF\packages\ti\sdo\codecs\h264hpvdec\App\Client\Build\TestAppDecoder

    C:\TI\Codecs\C66x_h264hpvenc_01_00_02_00_ELF\packages\ti\sdo\codecs\h264hpvenc\App\Client\Build\C66X

     

    Number of cores can be configure in: C:\TI\Codecs\C66x_h264hpvdec_01_01_02_07_ELF\packages\ti\sdo\codecs\h264hpvdec\App\Client\Test\TestVecs\Config\Testparams.cfg

    C:\TI\Codecs\C66x_h264hpvenc_01_00_02_00_ELF\packages\ti\sdo\codecs\h264hpvenc\App\Client\Test\TestVecs\Config\encoder.cfg

    Thank you,

    Paula

  • Hi Paula,

    when I use the C66x_h264hpvenc_01_00_02_00_ELF and C66x_h264hpvdec_01_01_02_07_ELF project,in  the codecParams.cfg  file ,  I want to run encode fron core1 to core7, because core0 will run other program. I modify the config, is it right?

    codecName = H264HPENC     # Name of the codec (must be listed in siuVctsupportedCodecs.c)
    nCores = 7       # Number of Cores involved in the decode/encode operation
    coreTeamMapping =  1 2 3 4 5 6 7 -1 # Core IDs (0-based) involved in the decode/encode operation

    Regards,

    Si

     

  • Hi Si, yes your changes in the configuration file are OK. Addicionally you need to change ownerProcID from "0" to "1" inside h264hpvenc.cfg:

    SharedRegion.setEntryMeta(0,

        { base: Program.global.shmSL2Base,

          len: Program.global.shmSL2Size,

          ownerProcId: 1,

          isValid: true,

          cacheEnable: true,    

          cacheLineSize: 64,

          name: "ipc_internal_shared_mem",

        });

    Thank you,

    Paula

  • hi Paula,

    I have a try following you said, I load the .out file to core1~core7,it can run because   ipcAttachOwner(ncores),  So I load the out file to core0~core7, it can run over the    ipcAttachOwner(ncores),but also faild to encode, here is the output info:

    [C66xx_1] ---------------------------------------------------------
    [C66xx_2] ---------------------------------------------------------
    [C66xx_3] ---------------------------------------------------------
    [C66xx_4] ---------------------------------------------------------
    [C66xx_5] ---------------------------------------------------------
    [C66xx_7] ---------------------------------------------------------
    [C66xx_1] Test Case Number : 1
    [C66xx_2] Test Case Number : 1
    [C66xx_3] Test Case Number : 1
    [C66xx_4] Test Case Number : 1
    [C66xx_5] Test Case Number : 1
    [C66xx_7] Test Case Number : 1
    [C66xx_1] ---------------------------------------------------------
    [C66xx_2] ---------------------------------------------------------
    [C66xx_3] ---------------------------------------------------------
    [C66xx_4] ---------------------------------------------------------
    [C66xx_5] ---------------------------------------------------------
    [C66xx_7] ---------------------------------------------------------
    [C66xx_6]
    ---------------------------------------------------------
    Test Case Number : 1
    ---------------------------------------------------------
    [C66xx_0]
    [C66xx_1]
    [C66xx_2]
    [C66xx_3]
    [C66xx_4]
    [C66xx_5]
    [C66xx_7]
    [C66xx_0] ---------------------------------------------------------
    [C66xx_1] ---------------------------------------------------------
    [C66xx_2] ---------------------------------------------------------
    [C66xx_3] ---------------------------------------------------------
    [C66xx_4] ---------------------------------------------------------
    [C66xx_5] ---------------------------------------------------------
    [C66xx_7] ---------------------------------------------------------
    [C66xx_0] Test Case Number : 1
    [C66xx_1] Test Case Number : 1
    [C66xx_2] Test Case Number : 1
    [C66xx_3] Test Case Number : 1
    [C66xx_4] Test Case Number : 1
    [C66xx_5] Test Case Number : 1
    [C66xx_7] Test Case Number : 1
    [C66xx_0] ---------------------------------------------------------
    [C66xx_1] ---------------------------------------------------------
    [C66xx_2] ---------------------------------------------------------
    [C66xx_3] ---------------------------------------------------------
    [C66xx_4] ---------------------------------------------------------
    [C66xx_5] ---------------------------------------------------------
    [C66xx_7] ---------------------------------------------------------
    [C66xx_0] ShmemTab initialized on Core 0
    [C66xx_2] ShmemTab initialized on Core 2
    [C66xx_4] ShmemTab initialized on Core 4
    [C66xx_3] ShmemTab initialized on Core 3
    [C66xx_1] Config File : ..\..\..\Test\TestVecs\Config\encoder.cfg
    [C66xx_5] ShmemTab initialized on Core 5
    [C66xx_1] Input YUV : ..\..\..\Test\TestVecs\Input\airshow_p352x288.yuv
    Output Stream : ..\..\..\Test\TestVecs\Output\airshow_p352x288.264

    [C66xx_6] ShmemTab initialized on Core 6
    [C66xx_1] ShmemTab initialized on Core 1

    Algorithm Instance Creation for the Module DEV.H264HP.E.C6678.01.00.01.04 Done...
    [C66xx_0]
    [C66xx_2]
    [C66xx_3]
    [C66xx_4]
    [C66xx_5]
    [C66xx_6]
    [C66xx_0] Algorithm Instance Creation for the Module DEV.H264HP.E.C6678.01.00.01.04 Done...
    [C66xx_2] Algorithm Instance Creation for the Module DEV.H264HP.E.C6678.01.00.01.04 Done...
    [C66xx_3] Algorithm Instance Creation for the Module DEV.H264HP.E.C6678.01.00.01.04 Done...
    [C66xx_4] Algorithm Instance Creation for the Module DEV.H264HP.E.C6678.01.00.01.04 Done...
    [C66xx_5] Algorithm Instance Creation for the Module DEV.H264HP.E.C6678.01.00.01.04 Done...
    [C66xx_6] Algorithm Instance Creation for the Module DEV.H264HP.E.C6678.01.00.01.04 Done...
    [C66xx_0]
    Control Failed.
    Failed in control call (XDM_SETPARAMS).
    [C66xx_1]


    ******** Request to END H264 Encoder ********
    [C66xx_0]
    [C66xx_2]
    [C66xx_3]
    [C66xx_4]
    [C66xx_5]
    [C66xx_6]
    [C66xx_0]
    [C66xx_2]
    [C66xx_3]
    [C66xx_4]
    [C66xx_5]
    [C66xx_6]
    [C66xx_0]
    [C66xx_2]
    [C66xx_3]
    [C66xx_4]
    [C66xx_5]
    [C66xx_6]
    [C66xx_0] ******** Request to END H264 Encoder ********
    [C66xx_2] ******** Request to END H264 Encoder ********
    [C66xx_3] ******** Request to END H264 Encoder ********
    [C66xx_4] ******** Request to END H264 Encoder ********
    [C66xx_5] ******** Request to END H264 Encoder ********
    [C66xx_6] ******** Request to END H264 Encoder ********

    I want to use 7 core to encode, so core1~core7 load encode out file, and core0 will run management out file, Can you help me to achieve it?

    Regards,

    Si

  • Hi Si, I was able to run it in my setup with below steps

    1) modify ownerProcId: 1 in h264hpvenc.cfg. Save file, build clean, build

    2) connect all the cores  

    3) Do system reset for Core 0 (via selecting Reset -> System Reset under the Target menu)

    4) On Core 0, run the GEL file from the Scripts menu by selecting EVMTCI6608 Init Functions -> Global_Default_Setup. Wait until the following message is displayed: “C66xx_0: GEL Output: Global Default Setup... Done.”

    5) Group cores 1 to 7: select/highlight the cores, then right clip and select "Group core(s)"

    6) Highlight/Select "Group1" and Load the DSP image to the group by selecting Load Program... under the Target menu. Find the image sv04.out in the mkrel/sv04/flat directory

    7)  Target -> Run

    Let me know if this works. Attached my output command line for your reference

     

    8535.E2E_H264HPenc_TeamCores1to7_CCStestbench_console.txt
    ---------------------------------------------------------
    Test Case Number : 1
    ---------------------------------------------------------
    [C66xx_1] 
    [C66xx_2] 
    [C66xx_3] 
    [C66xx_4] 
    [C66xx_5] 
    [C66xx_7] 
    [C66xx_1] ---------------------------------------------------------
    [C66xx_2] ---------------------------------------------------------
    [C66xx_3] ---------------------------------------------------------
    [C66xx_4] ---------------------------------------------------------
    [C66xx_5] ---------------------------------------------------------
    [C66xx_7] ---------------------------------------------------------
    [C66xx_1] Test Case Number : 1
    [C66xx_2] Test Case Number : 1
    [C66xx_3] Test Case Number : 1
    [C66xx_4] Test Case Number : 1
    [C66xx_5] Test Case Number : 1
    [C66xx_7] Test Case Number : 1
    [C66xx_1] ---------------------------------------------------------
    [C66xx_2] ---------------------------------------------------------
    [C66xx_3] ---------------------------------------------------------
    [C66xx_4] ---------------------------------------------------------
    [C66xx_5] ---------------------------------------------------------
    [C66xx_7] ---------------------------------------------------------
    [C66xx_2] ShmemTab initialized on Core 1 
    [C66xx_3] ShmemTab initialized on Core 2 
    [C66xx_4] ShmemTab initialized on Core 3 
    [C66xx_1] Config File   : ..\..\..\Test\TestVecs\Config\encoder.cfg
    [C66xx_5] ShmemTab initialized on Core 4 
    [C66xx_1] Input YUV     : ..\..\..\Test\TestVecs\Input\airshow_p352x288.yuv
    Output Stream : ..\..\..\Test\TestVecs\Output\airshow_p352x288.264
    
    [C66xx_6] ShmemTab initialized on Core 5 
    [C66xx_1] ShmemTab initialized on Core 0 
    [C66xx_7] ShmemTab initialized on Core 6 
    
    Algorithm Instance  Creation for the Module DEV.H264HP.E.C6678.01.00.02.00 Done...
    [C66xx_1] 
    [C66xx_2] 
    [C66xx_3] 
    [C66xx_4] 
    [C66xx_5] 
    [C66xx_6] 
    [C66xx_1] Algorithm Instance  Creation for the Module DEV.H264HP.E.C6678.01.00.02.00 Done...
    [C66xx_2] Algorithm Instance  Creation for the Module DEV.H264HP.E.C6678.01.00.02.00 Done...
    [C66xx_3] Algorithm Instance  Creation for the Module DEV.H264HP.E.C6678.01.00.02.00 Done...
    [C66xx_4] Algorithm Instance  Creation for the Module DEV.H264HP.E.C6678.01.00.02.00 Done...
    [C66xx_5] Algorithm Instance  Creation for the Module DEV.H264HP.E.C6678.01.00.02.00 Done...
    [C66xx_6] Algorithm Instance  Creation for the Module DEV.H264HP.E.C6678.01.00.02.00 Done...
    [C66xx_1] 
    Started Reading Frame : 0.......
     
    #NA   : IVIDEO_NA_FRAME       : Bits  : 0         
    
    Started Reading Frame : 0.......
     
    #NA   : IVIDEO_NA_FRAME       : Bits  : 0         
    
    Started Reading Frame : 0.......
     
    #0    : IVIDEO_IDR_FRAME      : Bits  : 107000    
    
     core 1 ,nalSizes 24
     core 1 ,nalSizes 8
     core 1 ,nalSizes 76
     core 2 ,nalSizes 97
     core 3 ,nalSizes 686
     core 4 ,nalSizes 3983
     core 5 ,nalSizes 2988
     core 6 ,nalSizes 2703
     core 7 ,nalSizes 2810
    
    Started Reading Frame : 1.......
     
    #1    : IVIDEO_P_FRAME        : Bits  : 8712      
    
     core 1 ,nalSizes 23
     core 2 ,nalSizes 35
     core 3 ,nalSizes 85
     core 4 ,nalSizes 184
     core 5 ,nalSizes 133
     core 6 ,nalSizes 274
     core 7 ,nalSizes 355
     
    #2    : IVIDEO_B_FRAME        : Bits  : 2936      
    
     core 1 ,nalSizes 11
     core 2 ,nalSizes 13
     core 3 ,nalSizes 33
     core 4 ,nalSizes 58
     core 5 ,nalSizes 40
     core 6 ,nalSizes 82
     core 7 ,nalSizes 130
     
    #3    : IVIDEO_B_FRAME        : Bits  : 3400      
    
     core 1 ,nalSizes 11
     core 2 ,nalSizes 13
     core 3 ,nalSizes 41
     core 4 ,nalSizes 66
     core 5 ,nalSizes 52
     core 6 ,nalSizes 79
     core 7 ,nalSizes 163
    
     Given number of frames are encoded
    
    
     ******** Request to END H264 Encoder ******** 
    [C66xx_2] 
    [C66xx_3] 
    [C66xx_4] 
    [C66xx_5] 
    [C66xx_6] 
    [C66xx_7] 
    [C66xx_2] 
    [C66xx_3] 
    [C66xx_4] 
    [C66xx_5] 
    [C66xx_6] 
    [C66xx_7] 
    [C66xx_2] 
    [C66xx_3] 
    [C66xx_4] 
    [C66xx_5] 
    [C66xx_6] 
    [C66xx_7] 
    [C66xx_2]  ******** Request to END H264 Encoder ******** 
    [C66xx_3]  ******** Request to END H264 Encoder ******** 
    [C66xx_4]  ******** Request to END H264 Encoder ******** 
    [C66xx_5]  ******** Request to END H264 Encoder ******** 
    [C66xx_6]  ******** Request to END H264 Encoder ******** 
    [C66xx_7]  ******** Request to END H264 Encoder ******** 
    

    thank you,

    Paula

  • Hi Paula,

    Thank you very much, I can run it well.

    Si