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.

about TSU question C6678

Other Parts Discussed in Thread: SYSBIOS, TMS320C6678

stream is not real time,but a file;

I  use C6678(sysbios), using mcsdk_video_2_2_0_28,I  am doing a project, description is as follows :

1) first ,host  sends H264 raw stream or NAl stream(stream is a file) using TFTPserver, DSP recieves  H264 raw stream or NAl stream using TFTPclient,

    Second, I decode stream with H264HPDEC,after decoding a frame ,at once using TSU module does resizing,then encodes   resized YUV of a frame into stream ,  then using TFTP sends encoded raw streams to host,In a host saving as a file;

questions:

   mcsdk_video_2_2_0_28\dsp\siu\common\main .c and siuVctRun.c 

  I use this two files whether I can implement my project  (host sends stream files with TFTP -->H264HPdec-->resize frame size(for example D1-->CIF)-->H264HPenc-->DSP TFTP client  sends encoded  to host saving as a file);


   1) I found siuVctRun.c in directory  C:\ti\mcsdk_video_2_2_0_28\dsp\siu\vct,  this file include a function siuVctRunTask(),I want to use this task function to implement  aboving task directly without modification ,Can it do that?

  2)  IN directory mcsdk_video_2_2_0_28\dsp\siu\common,  main() call siu_osal_start()  starting up TSU module in main.c , can I do do this ?    due to recieving H264 RAW stream ,but  TSU module refers to  VPPU or MMCU,I don't know whether I can use TSU module using the same way.

  3) TSU module  refer to PCIE,I don't use  PCIE, and In host my stream is a ram stream file,host sending stream files not using RTP packets ,but  TSU module refers to  VPPU or MMCU, can I use TSU module ?

  • Hi Jingshuai,

    Are you currently using one core or multiple cores for decoding/encoding in H.264?

    if one core is enough, we think a good starting point for you could our CCS transcode example (<MCSDK_video_path>\examples\transcode). Using this example as a starting point could be easier in order to integrate TSU inside CCS project.

    For merging TSU on CCS transcoder example,  you would need to include/use the wrapper TSU functions. Please check <MCSDK_video_path>/dsp/vct/src/siuVctTSu.c file which contain the wrapper functions and also check how siuVctRun.c uses siu_tsu_process() function.

    As well, inside <MCSDK_video_path>\dsp\siu\vct\src\siuVctInit.c you can check how siu_new_tsu(), wrapper function, is used

    Also you need to add TSU buffer definition to CCS transcoder project, please check

    <MCSDK_video_path>\dsp\ggcfg\c64x\ggmbuf.bec (search for ifdef TSU) and do similar changes at <MCSDK_video_paath>\examples\transcode\source\ggmbuf.c,

    Please see below link to latest MCSDK video drop:

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

    In latest MCSDK version we have updated H.264 HP encoder and decoder for the CCS transcoder example

    Please let us know if you have further questions,

    thank you,

    Paula

  • Hi Jingshuai, please let us know if above proposed option worked for you or if you have any question.

    thank you,

    Paula

  • Hi Paula!

       first,thank you for your answer,because I wait for this answer too long time,I think nobody can answer it,so recently

    I have not seen your answer,sorry.

      C66x_h264hpvenc_01_00_01_04_ELF can run on a single core core0 successfully;

      C66x_h264hpvenc_01_00_01_04_ELF can run on multicore  successfully,core0 as IVIDMC_TASK_MASTER ;

      Now I have a problem:  when I run C66x_h264hpvenc_01_00_01_04_ELF on the TMS320C6678 EVM, 

       1   for example ,if run on core 1, in a file  encoder.cfg,modified

       ncores                  = 1   CoreTeamMap      = 1;

    on a single core run,current core id as IVIDMC_TASK_MASTER , I found that h264hpven can run on core0,but except core 0, on other core      C66x_h264hpvenc_01_00_01_04_ELF can't run,failed reason is sharing region  fialed ,

    I found that function  ipcCreateShare(sizeof(H264HPVENC_Shared_MemTab),                                                             (void**)&codecShm);  failed;

    because of variable codecShm is null;

    so I modified h264hpvenc.cfg file,for example h264hpvenc run on core,,in this file,I modified

    SharedRegion.setEntryMeta(0,     { base: Program.global.shmSL2Base,       len: Program.global.shmSL2Size,       ownerProcId: 0,       isValid: true,       cacheEnable: true,           cacheLineSize: 64,       name: "ipc_internal_shared_mem",     });

    to

       SharedRegion.setEntryMeta(0,     { base: Program.global.shmSL2Base,       len: Program.global.shmSL2Size,       ownerProcId: 1,       isValid: true,       cacheEnable: true,           cacheLineSize: 64,       name: "ipc_internal_shared_mem",     });

         I found  variable codecShm is non zero, function ipcCreateShare() can run  successfully.C66x_h264hpvenc_01_00_01_04_ELF can run,but I found bits number of output stream is 0,loutArgs->bytesconsumed = 0,function H264HPVENC_encodeFrame() return 0;

        via analyzing,I found H264HPVENC_encodeFrame() only encoded  frame header,when encoding the first macroblock ,not successfully,exit for unkwown reason;

         I want to know,above modification is whether right or not ; if C66x_h264hpvenc_01_00_01_04_ELFwant to run on a single core run successfully except core 0,what  I should do?,How do?Thanks!

    The encoder errors are as follows:

    [C66xx_1]
    ---------------------------------------------------------
    Test Case Number : 1
    ---------------------------------------------------------
    Config File   : ..\..\..\Test\TestVecs\Config\encoder.cfg
    Input YUV     : ..\..\..\Test\TestVecs\Input\airshow_p352x288.yuv
    Output Stream : ..\..\..\Test\TestVecs\Output\airshow_p352x288.264

    ShmemTab initialized on Core 1

    Algorithm Instance  Creation for the Module DEV.H264HP.E.C6678.01.00.01.04 Done...

    Started Reading Frame : 0.......

    Frame_Cycles :  0.102369
    #0    : IVIDEO_IDR_FRAME      : Bits  : 0        

    Started Reading Frame : 1.......

    Frame_Cycles :  0.119687
    #1    : IVIDEO_P_FRAME        : Bits  : 0        

    Started Reading Frame : 2.......

    Frame_Cycles :  0.118790
    #2    : IVIDEO_P_FRAME        : Bits  : 0        

    Started Reading Frame : 3.......

    Frame_Cycles :  0.118818
    #3    : IVIDEO_P_FRAME        : Bits  : 0        

    2

    for example ,if run on core 1 and core2, in a file  encoder.cfg,modified

       ncores                  = 2  

       CoreTeamMap      = 1,2;

    on multicore(except core 0) run,for example ,run on core 1and core2,core 1 as IVIDMC_TASK_MASTER, the same question exists;

     

  • Hi Jinghuai,

    I saw a similar post today (http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/338844.aspx) we can work your question there and come back to TSU question later if required.

    thank you,

    Paula

  •  a similar post today (http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/338844.aspx)   is  my post also,it is the same question,I hope that first you answer this post,because it is very important and urgent,because it delay the schedule of my project .

     

    thank you,Paula!,I am looking forward to your answer!

     

      jingshuai