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.

HEVC encoder initialization problem

Other Parts Discussed in Thread: SYSBIOS

Hi,

I have problems initializing HEVC encoder. algInit returns -1. The root of the problem is unclear. I am using encoder library from MCSDK Video 02_02_00_39

I am trying to create encoder that works on single core (configuration is in the end of the post).

This is the log of multicore api callbacks:

[2014-06-10 13:42:45] swbarr name=H265Ebarrier1
[2014-06-10 13:42:45] swbarr name=H265Ebarrier2
[2014-06-10 13:42:45] swbarr name=H265Ebarrier3
[2014-06-10 13:42:45] swbarr name=H265Ebarrier7
[2014-06-10 13:42:45] swbarr name=H265Ebarrier8
[2014-06-10 13:42:45] swbarr name=H265Ebarrier9
[2014-06-10 13:42:45] swbarr name=H265Ebarrier10
[2014-06-10 13:42:45] lock name=H265E_lock100
[2014-06-10 13:42:45] lock name=H265E_lock200
[2014-06-10 13:42:45] shmem name=shared_mem_pcontext00 type=SL2 size=10984 alignment=128
[2014-06-10 13:42:45] ptr=@0c044680
[2014-06-10 13:42:45] shmem name=shared_mem_referenceL000 type=SL2 size=610560 alignment=128
[2014-06-10 13:42:45] ptr=@84341800
[2014-06-10 13:42:45] shmem name=shared_mem_referenceL100 type=SL2 size=610560 alignment=128
[2014-06-10 13:42:45] ptr=@843d6900
[2014-06-10 13:42:45] shmem name=shared_mem_NAL_params00 type=DDR_CACHED size=72620 alignment=128
[2014-06-10 13:42:45] ptr=@8446ba00
[2014-06-10 13:42:45] shmem name=shared_mem_DataSync_params00 type=DDR_CACHED size=800 alignment=128
[2014-06-10 13:42:45] ptr=@8447d600
[2014-06-10 13:42:45] shmem name=shared_mem_entry_points00 type=DDR_CACHED size=8480 alignment=128
[2014-06-10 13:42:45] ptr=@8447d980
[2014-06-10 13:42:45] shmem name=shared_NAL_info00 type=SL2 size=3504 alignment=128
[2014-06-10 13:42:45] ptr=@0c047180
[2014-06-10 13:42:45] shmem name=shared_mem_CABAC_Context00 type=DDR_CACHED size=1600 alignment=128
[2014-06-10 13:42:45] ptr=@8447fb00
[2014-06-10 13:42:45] shmem name=shared_mem_CABAC_Context00 type=DDR_CACHED size=1600 alignment=128
[2014-06-10 13:42:45] shmem name=shared_mem_bitout00 type=DDR_CACHED size=24 alignment=128
[2014-06-10 13:42:45] ptr=@84480180
[2014-06-10 13:42:45] shmem name=shared_mem_bitout00 type=DDR_CACHED size=24 alignment=128
[2014-06-10 13:42:45] shmem name=shared_mem_bitconsumed00 type=DDR_CACHED size=280 alignment=128
[2014-06-10 13:42:45] ptr=@84480200
[2014-06-10 13:42:45] shmem name=shared_mem_bitconsumed00 type=DDR_CACHED size=280 alignment=128
[2014-06-10 13:42:45] shmem name=shared_mem_CABAC_params00 type=DDR_CACHED size=24 alignment=128
[2014-06-10 13:42:45] ptr=@84480380
[2014-06-10 13:42:45] shmem name=shared_mem_CABAC_params00 type=DDR_CACHED size=24 alignment=128
[2014-06-10 13:42:45] shmem name=shared_mem_LCU_strs00 type=SL2 size=552 alignment=128
[2014-06-10 13:42:45] ptr=@0c047f80
[2014-06-10 13:42:45] shmem name=shared_mem_MV_Buf00 type=DDR_CACHED size=608256 alignment=128
[2014-06-10 13:42:45] ptr=@84480400
[2014-06-10 13:42:45] shmem name=shared_mem_MV_Buf00 type=DDR_CACHED size=27648 alignment=128
[2014-06-10 13:42:45] shmem name=shared_mem_MV_Buf00 type=DDR_CACHED size=27648 alignment=128
[2014-06-10 13:42:45] shmem name=shared_mem_const00 type=SL2 size=21040 alignment=128
[2014-06-10 13:42:45] ptr=@0c048200
[2014-06-10 13:42:45] shmem name=shared_mem_scan_tables00 type=SL2 size=16512 alignment=128
[2014-06-10 13:42:45] ptr=@0c04d480
[2014-06-10 13:42:45] shmem name=shared_mem_pic_mngmt_str00 type=DDR_CACHED size=123640 alignment=128
[2014-06-10 13:42:45] algInit failed: -1

First of all it is not clear to me why encoder tries to create shmem keys with the same name few times. Moreover it tries to do it with different sizes for shared_mem_MV_Buf00.

Configuration:

params.videnc2Params.encodingPreset                = XDM_USER_DEFINED;
params.videnc2Params.rateControlPreset             = IVIDEO_STORAGE; // 1: LOW_DELAY,  2: STORAGE, 4: NONE,  5: USER_DEFINED
params.videnc2Params.maxWidth                      = 704;
params.videnc2Params.maxHeight                     = 576;
params.videnc2Params.dataEndianness                = XDM_BYTE; // Not configurable
params.videnc2Params.maxInterFrameInterval         = 3; // Max I to P frame distance. 1: no B frames, 2: one B frame, 3: two B frames, etc [1, 255]
params.videnc2Params.maxBitRate                    = 20000000; // In bits per second. Should be valid as per LEVEL limit
params.videnc2Params.minBitRate                    = 2000000; // In bits per second
params.videnc2Params.inputChromaFormat             = XDM_YUV_420P; // Not configurable
params.videnc2Params.inputContentType              = IVIDEO_PROGRESSIVE; // 0: PROGRESSIVE, 1: INTERLACED
params.videnc2Params.operatingMode                 = IVIDEO_ENCODE_ONLY; // Not configurable
params.videnc2Params.profile                       = IH265_MAIN_PROFILE; // TODO: change description
params.videnc2Params.level                         = IH265_LEVEL_41; // TODO: change description
params.videnc2Params.inputDataMode                 = IVIDEO_ENTIREFRAME; // Not configurable
params.videnc2Params.outputDataMode                = IVIDEO_ENTIREFRAME; // Not configurable
params.videnc2Params.numInputDataUnits             = 1;
params.videnc2Params.numOutputDataUnits            = 1;

int i;
for (i = 0 ; i < IVIDEO_MAX_NUM_METADATA_PLANES; i++) {
    params.videnc2Params.metadataType[i] = IVIDEO_METADATAPLANE_NONE;
}

params.scalingMatrixPreset = IH265_SCALINGMATRIXPRESET_DEFAULT;
params.decRefreshType = 0; // Decoder referesh type: IDR or CDR [0 or 1].
params.decRefreshInterval = 0;
params.enableTransQuantBypass = 0;
params.maxPoc = 256;
params.enableTransformSkip = 0;
params.maxIntraFrameInterval = 10000;
params.enableWPP = 0;
params.maxNumRefFrames = 1;
params.enableVirtualTile = 0;
params.debugTraceLevel = 0;
params.lastNFramesToLog = 0;

params.rateControlParams.rateControlParamsPreset = IH265_RATECONTROLPARAMS_USERDEFINED;
params.rateControlParams.rcAlgo = 0;
params.rateControlParams.qpI = -1;
params.rateControlParams.qpMaxI = 40;
params.rateControlParams.qpMinI = 12;
params.rateControlParams.qpP = 28;
params.rateControlParams.qpMaxP = 51;
params.rateControlParams.qpMinP = 12;
params.rateControlParams.qpOffsetB = 4;
params.rateControlParams.qpMaxB = 51;
params.rateControlParams.qpMinB = 12;
params.rateControlParams.enableFrameSkip = 0;
params.rateControlParams.enablePartialFrameSkip = 0;
params.rateControlParams.qualityFactorIP = 0;
params.rateControlParams.cbQPIndexOffset = 2;
params.rateControlParams.crQPIndexOffset = 2;
params.rateControlParams.initialBufferLevel = 4000000;
params.rateControlParams.hrdBufferSize = 4000000;
params.rateControlParams.enableHRDComplianceMode = 0;
params.rateControlParams.maxFrameSkipCnt  = 0;
params.rateControlParams.SubFrameRC = 1;
params.rateControlParams.maxDeltaQP = 0;
params.rateControlParams.enablePRC = 0;

params.loopFilterParams.loopFilterParamsPreset = IH265_SLICECODINGPRESET_USERDEFINED;
params.loopFilterParams.enableDeblockFilter = 1;
params.loopFilterParams.enableSaoFilter = 1;
params.loopFilterParams.enableLoopFilterSliceBoundary = 0;
params.loopFilterParams.enableLoopFilterTileBoundary = 0;
params.loopFilterParams.separateCbCrSAO = 0;
params.loopFilterParams.offsetLoopFilterInPPSFlag = 0;
params.loopFilterParams.offsetDeblockBetaDiv2 = 0;
params.loopFilterParams.offsetDeblockTcDiv2 = 0;

params.gopCntrlParams.gopCntrlParamsPreset = IH265_GOPCTRLPRESET_DEFAULT;

params.sliceCodingParams.sliceCodingPreset = IH265_SLICECODINGPRESET_USERDEFINED;
params.sliceCodingParams.sliceCodingMode = 0;
params.sliceCodingParams.sliceCodingArg = 0;
params.sliceCodingParams.enableTiles = 0;
params.sliceCodingParams.numTileColumns = 1;
params.sliceCodingParams.numTileRows = 1;
params.sliceCodingParams.enableDependentSlice = 0;

params.intraCodingParams.intraCodingPreset = IH265_INTRACODINGPRESET_USERDEFINED;
params.intraCodingParams.intraRefreshMethod = 0;
params.intraCodingParams.intraRefreshRate = 0;
params.intraCodingParams.constrainedIntraPredEnable = 0;
params.intraCodingParams.enableStrongIntraSmoothing = 1;
params.intraCodingParams.matchYCbCrIntraMode = 0;
params.intraCodingParams.enableLumaIntra4x4Mode = 0;
params.intraCodingParams.enableLumaIntra8x8Mode = 0;
params.intraCodingParams.enableLumaIntra16x16Mode = 0;
params.intraCodingParams.enableLumaIntra32x32Mode = 0;
params.intraCodingParams.enableChromaIntra4x4Mode = 0;
params.intraCodingParams.enableChromaIntra8x8Mode = 0;
params.intraCodingParams.enableChromaIntra16x16Mode = 0;

params.interCodingParams.interCodingPreset = IH265_INTERCODINGPRESET_USERDEFINED;
params.interCodingParams.enableTmvp = 0;
params.interCodingParams.searchRangeHorP = 144;
params.interCodingParams.searchRangeVerP = 32;
params.interCodingParams.searchRangeHorB = 144;
params.interCodingParams.searchRangeVerB = 32;
params.interCodingParams.interCodingBias = 0;
params.interCodingParams.skipMVCodingBias = 0;
params.interCodingParams.numMergeCandidates = 3;
params.interCodingParams.enableBiPredMode = 0;
params.interCodingParams.enableFastIntraAlgo = 1;

params.vuiCodingParams.vuiCodingPreset = IH265_VUICODINGPRESET_DEFAULT;
params.vuiCodingParams.aspectRatioInfoPresentFlag = 0;
params.vuiCodingParams.aspectRatioIdc = 0;
params.vuiCodingParams.videoSignalTypePresentFlag = 0;
params.vuiCodingParams.videoFormat = 0;
params.vuiCodingParams.videoFullRangeFlag = 0;
params.vuiCodingParams.colourDescriptionPresentFlag = 0;
params.vuiCodingParams.colourPrimaries = 0;
params.vuiCodingParams.transferCharacteristics = 0;
params.vuiCodingParams.matrixCoefficients = 0;
params.vuiCodingParams.timingInfoPresentFlag = 0;

params.seiParams.enableSeiFlag = 0;

params.ctbCodingParams.maxCTBSize = 64;
params.ctbCodingParams.maxCUDepth = 3;

dynamicParams.videnc2DynamicParams.forceFrame = IVIDEO_NA_FRAME; // -1: IVIDEO_NA_FRAME, 3: IVIDEO_IDR_FRAME
dynamicParams.videnc2DynamicParams.generateHeader = XDM_ENCODE_AU; // 0: Encode entire access unit including headers, 1: Encode only header
dynamicParams.videnc2DynamicParams.ignoreOutbufSizeFlag = XDAS_FALSE; // Non configurable
dynamicParams.videnc2DynamicParams.inputWidth  = 704;
dynamicParams.videnc2DynamicParams.inputHeight = 576;
dynamicParams.videnc2DynamicParams.interFrameInterval = params.videnc2Params.maxInterFrameInterval; // I to P frame distance. 1: no B frames, 2: one B frame, 3: two B frames, etc [1, 255]
dynamicParams.videnc2DynamicParams.intraFrameInterval = 120; // The number of frames between two I frames. 0: IPPPP..., 1: IIII..., 2: IPIPIPIPI, 3: IPPIPPIPPI or IPBIPBIPBI, etc.
dynamicParams.videnc2DynamicParams.mvAccuracy = IVIDENC2_MOTIONVECTOR_QUARTERPEL; // Motion vectors accuracy. 0: integer pel., 2: quarter pel.
dynamicParams.videnc2DynamicParams.putDataFxn = NULL;
dynamicParams.videnc2DynamicParams.putDataHandle = 0;
dynamicParams.videnc2DynamicParams.getDataFxn = NULL;
dynamicParams.videnc2DynamicParams.getDataHandle = 0;
dynamicParams.videnc2DynamicParams.getBufferFxn = NULL;
dynamicParams.videnc2DynamicParams.getBufferHandle = 0;
dynamicParams.videnc2DynamicParams.refFrameRate = 25 * 1000;
dynamicParams.videnc2DynamicParams.targetFrameRate = 25 * 1000;

dynamicParams.videnc2DynamicParams.sampleAspectRatioWidth = 1;
dynamicParams.videnc2DynamicParams.sampleAspectRatioHeight = 1;
dynamicAspectRatio = 0;

dynamicParams.videnc2DynamicParams.targetBitRate = params.videnc2Params.maxBitRate;

memcpy(&dynamicParams.rateControlParams, &params.rateControlParams, sizeof(params.rateControlParams));
memcpy(&dynamicParams.loopFilterParams, &params.loopFilterParams, sizeof(params.loopFilterParams));
memcpy(&dynamicParams.intraCodingParams, &params.intraCodingParams, sizeof(params.intraCodingParams));
memcpy(&dynamicParams.interCodingParams, &params.interCodingParams, sizeof(params.interCodingParams));
memcpy(&dynamicParams.ctbCodingParams, &params.ctbCodingParams, sizeof(params.ctbCodingParams));
memcpy(&dynamicParams.sliceCodingParams, &params.sliceCodingParams, sizeof(params.sliceCodingParams));

dynamicParams.enableTransQuantBypass = params.enableTransQuantBypass;
dynamicParams.enableTransformSkip = params.enableTransformSkip;
dynamicParams.enableROI = 0;

params.ividmc->user_id = 0;
params.ividmc->num_users = 1;
params.ividmc->task_ID = IVIDMC3_TASK_MASTER;

Regards,

Andrey Lisnevich

  • Hi Andrey,

        Whether you are working in single core or multicore...?

    In case of mutlicore, for shared memory, multiple allocation with same key name is to map the memory in slave core which is allocated by master core.

    Regards

    Kuladeepak

  • Hi Kuladeepak,

    I know this. But here you see single core HEVC algorithm initialization (params.ividmc->num_users = 1) that looks wrong.


    Regards,

    Andrey Lisnevich

  • Hi Andrey,

        Consecutive mem allocation with same key name is redundant, which we are going to remove this allocation in the coming release.

    Regards

    Kuladeepak

  • Hi Kuladeepak,

    1) How to handle shared_mem_MV_Buf00 that has different size in consecutive key create calls:

    shmem name=shared_mem_MV_Buf00 type=DDR_CACHED size=608256 alignment=128
    ptr=@84480400
    shmem name=shared_mem_MV_Buf00 type=DDR_CACHED size=27648 alignment=128
    shmem name=shared_mem_MV_Buf00 type=DDR_CACHED size=27648 alignment=128

    2) algInit fails with -1 error code. Reason is unclear to me. How can I find the problem and fix it?

    Regards,

    Andrey Lisnevich

  • I found the reason of problem #2. So for now I have two questions:

    1) How to handle consecutive shmem's with the same name but with different size?

    2) Ho to handle shmem with size=0 requested by HEVC encoder: shmem name=shared_recon_stitch_buf type=DDR_CACHED size=0 alignment=128 ?

    Regards,

    Andrey Lisnevich

  • Hi Andrey,

        Please ignore subsequent allocation with same key name in single core and shared_recon_stitch_buf  allocation is also redundant. And since size is calculated based on formula using number of chips, So size is becoming zero. Which will be fixed in next release. 

    Apart from this are you still facing create fail, because i was able to create successfully using above config.

    Regards

    Kuladeepak

  • Hi Kuladeepak,

    I solved problems with initialization and configuration of HEVC encoder. Now I have problem with process call - it returns extended error 17408. Can you please:

    1) Explain this 17408 extended error code.

    2) Provide at least alpha version of HEVC encoder/decoder documentation. It will help me to solve many issues myself.

    3) Can you please explain where the following chunks of memory should be allocated in case of encoder that runs on single core:

    IVIDMC3_SHMEM_ATTRS_RMT_CACHED_LOC_DDR
    IVIDMC3_SHMEM_ATTRS_RMT_UNCACHED_LOC_DDR
    IVIDMC3_SHMEM_ATTRS_RMT_UNCACHED_NO_LOC
    IVIDMC3_SHMEM_ATTRS_RMT_UNCACHED_LOC_SL2
    IVIDMC3_SHMEM_ATTRS_RMT_CACHED_LOC_SL2

    Especially I do not understand IVIDMC3_SHMEM_ATTRS_RMT_UNCACHED_LOC_SL2 because SL2 is MSMC memory and as far as I know cache can't be disabled on it.

    Thanks in advance,

    Andrey Lisnevich

  • Hi,

    So do you have any ideas about the issue above?

    Regards,

    Andrey Lisnevich

  • Hi Andrey,

    Please find the answers below.

    * Extended error - 17408 -> Means
        1) Some parameter which is given to encoder is unsupported(XDM_INSUFFICIENTDATA).
        2) Given memory to codec is not sufficient(XDM_INSUFFICIENTDATA).


    * Please find the places where it is allocated.
        IVIDMC3_SHMEM_ATTRS_RMT_CACHED_LOC_DDR -> Cached DDR
        IVIDMC3_SHMEM_ATTRS_RMT_UNCACHED_LOC_DDR -> Uncached DDR
        IVIDMC3_SHMEM_ATTRS_RMT_UNCACHED_NO_LOC -> Allocation happens only in multichip.
        IVIDMC3_SHMEM_ATTRS_RMT_UNCACHED_LOC_SL2 -> Uncached DDR
        IVIDMC3_SHMEM_ATTRS_RMT_CACHED_LOC_SL2 -> Cached SL2

    Please find the code which explains the mapping
    switch(key->mem_attr )
    {
        case IVIDMC3_SHMEM_ATTRS_DDR_CACHED:
        case IVIDMC3_SHMEM_ATTRS_RMT_CACHED_LOC_DDR:
            shm_heap = &CachedDDRHeap;
            break;
        case IVIDMC3_SHMEM_ATTRS_DDR_UNCACHED:
        case IVIDMC3_SHMEM_ATTRS_RMT_UNCACHED_LOC_DDR:
            shm_heap = &UncachedDDRHeap;
            break;
         case IVIDMC3_SHMEM_ATTRS_SL2:
         case IVIDMC3_SHMEM_ATTRS_RMT_CACHED_LOC_SL2:
            shm_heap = &SL2Heap;
            break;
         case IVIDMC3_SHMEM_ATTRS_RMT_UNCACHED_LOC_SL2:
            shm_heap = &UncachedDDRHeap;
            break;
    }

    Regards
    Kuladeepak

  • Thanks Kuladeepak,


    I can't find the reason of unsupported parameter and insufficient data error while process call - the errors are too general. I provide for encoding similar buffer as for H.264 encoder (HEVC and H.264 share the same code base in my case).

    Can you shortly descirbe when both this errors can happen simultaneously?

    Also how can I get more detailed description of the problem?

    Regards,

    Andrey Lisnevich

  • Andrey, do you have done sanity check of params using TestApplication or MCSDK video pcie demos?

    Also could you please check what is the maximum number of params you can have?. In our MCSDK video, for example, we have to increase this value for HEVC encoder due to extra params and metadata. As a reference please check siuVCTParse.h and siuVCTParce.c. In these files we increased values of #define CODEC_CFG_FILE_SIZE  and SIUVCT_PARSE_MAX_NUM_ITEMS (plus other changes)

    For your reference, Scaling matrix is passed as metadata.

    Thank you,

    Paula

  • Hi Paula,

    I do not run MCSDK Video demo and do not parse files to get the parameters. Currently all HEVC parameters are hard-coded.

    Also as you see from configuration I set IH265_SCALINGMATRIXPRESET_DEFAULT. I believe in this case I do not need to provide scaling matrix in metadata, am I right?

    Regards,

    Andrey Lisnevich

  • Hi Andrey,


                      When scalingMatrixPreset is set to IH265_SCALINGMATRIXPRESET_DEFAULT means no need to send extra scaling data.
    I am not able to reproduce the issue with the above config.

    Regards
    Kuladeepak

  • Hi Kuladeepak,

    I created demo project that reproduces the issue and runs on C6678 EVM - it is attached. Can you please check it because I can't guess from extended error code 16384 (XDM_UNSUPPORTEDPARAM) which parameter is wrong?

    The demo runs on 8 cores.

    HEVC encoder works on core 0.

    Encoder initializes without errors but fails while process call with the following log message: Encoder process call failed (-1 16384)

    To build it you have to specify in  Properties->Build->Variables path to MCSDK Video Demo and path to C6678 PDK.

    Regards,

    Andrey Lisnevich

    hevc_demo.zip
  • Hi Andrey,

    We are facing some issue in building, it looks like you are using different versions of tools.
    We try to get the mentioned tools.

    I have pasted the error message below.

    **** Build of configuration Debug for project hevc_demo ****

    "C:\\CCSV5.5\\ccsv5\\utils\\bin\\gmake" -k all
    'Building file: ../app.cfg'
    'Invoking: XDCtools'
    "C:/CCSV5.5/xdctools_3_25_03_72/xs" --xdcpath="C:/ti/edma3_lld_02_11_05_02/packages;H:/H265_Codec/H265_Enc_Project/HEVC_Code/E2E/hevc_demo/hevc_demo/packages;W://dsp/components/;C:/ti/framework_components_3_23_02_16/packages;C:/ti/framework_components_3_23_02_16/examples;C:/ti/framework_components_3_23_02_16/fctools/packages;C:/ti/xdais_7_23_00_06/packages;C:/ti/xdais_7_23_00_06/examples;C:/ti/pdk_C6678_1_1_2_5/packages;C:/ti/ipc_1_23_05_40/packages;C:/CCSV5.5/ccsv5/ccs_base;C:/ti/bios_6_32_05_54/packages;" xdc.tools.configuro -o configPkg -t ti.targets.elf.C66 -p c6678_board -r debug -b "H:/H265_Codec/H265_Enc_Project/HEVC_Code/E2E/hevc_demo/hevc_demo/packages/c6678_board/config.bld" -c "C:/CCSV5.5/ccsv5/tools/compiler/c6000_7.4.4" "../app.cfg"
    making package.mak (because of package.bld) ...
    generating interfaces for package configPkg (because package/package.xdc.inc is older than package.xdc) ...
    configuring app.xe66 from package/cfg/app_pe66.cfg ...
    L2SRAM heap size is 0x12000
    MSMCSRAM heap size is 0x139800
    js: "C:/ti/framework_components_3_23_02_16/fctools/packages/xdc/runtime/System.xs", line 52: xdc.services.global.XDCException: xdc.cfg.USE_MODULE_PARAMETER_ERROR: The first parameter of an xdc.useModule() call must be a string
    "C:/ti/bios_6_32_05_54/packages/ti/sysbios/xdcruntime/Settings.xs", line 93
    "C:/ti/bios_6_32_05_54/packages/ti/sysbios/BIOS.xs", line 247
    "C:/ti/bios_6_32_05_54/packages/ti/sysbios/family/c64p/Hwi.xs", line 97
    "C:/ti/bios_6_32_05_54/packages/ti/sysbios/hal/Hwi.xs", line 59
    "C:/ti/bios_6_32_05_54/packages/ti/sysbios/knl/Queue.xs", line 59
    "C:/ti/bios_6_32_05_54/packages/ti/sysbios/knl/Swi.xs", line 49
    "C:/ti/bios_6_32_05_54/packages/ti/sysbios/gates/GateSwi.xs", line 42
    "C:/ti/ipc_1_23_05_40/packages/ti/sdo/utils/NameServer.xs", line 63
    "C:/ti/ipc_1_23_05_40/packages/ti/sdo/ipc/GateMP.xs", line 56
    gmake.exe: *** [package/cfg/app_pe66.xdl] Error 1
    Warning: directory "W:/dsp/components" on package path does not exist
    js: "C:/CCSV5.5/xdctools_3_25_03_72/packages/xdc/tools/Cmdr.xs", line 51: Error: xdc.tools.configuro: configuration failed due to earlier errors (status = 2); 'linker.cmd' deleted.
    gmake: *** [configPkg/linker.cmd] Error 1
    gmake: Target `all' not remade because of errors.

    **** Build Finished ****

    Regards
    Kuladeepak

  • Hi Kuladeepak,

    I am using:

    IPC 3.22.0.05

    SYS/BIOS 6.37.2.27

    XDCtools 3.25.5.94

    PDK C6678 1.1.2.6

    Regards,

    Andrey Lisnevich

  • Hi,

    Do you need any other support from me to run the demo?

    Regards,

    Andrey Lisnevich

  • Hi Andrey,

    I apologise for delayed reply.
    We were able build the project with mentioned tools,
    And we were also able to reproduce the issue you are facing, and found the root cause also.
    In EncodeMasterTask.c, please change the input "inEncoderBufferDescriptor.topFieldFirstFlag" to "XDAS_FALSE", As we are not encoding Interlace input.

    Please let me know it solved your issue.

    Regards
    Kuladeepak

  • Thanks Kuladeepak,

    It looks like a bug because as you see from source content type is progressive:

    encoder->params.videnc2Params.inputContentType              = IVIDEO_PROGRESSIVE; // 0: PROGRESSIVE, 1: INTERLACED

    For progressive content topFieldFirstFlag should be ignored.

    I hope you will fix the issue in next release. Currently I have to do workaround for HEVC.

    Another issue:

    If I pass bigger than required output buffer to HEVC (i.e. outEncoderBufferDescriptor.descs[0].bufSize.bytes > encoderStatus->bufInfo.minOutBufSize[0].bytes) then process call fails with insufficient data error. You can reproduce this behavior by setting in demo the buffer size to 5275487 (while 5242880 is requested) in this line:

    outEncoderBufferSize = encoderStatus->bufInfo.minOutBufSize[0].bytes;

    The behavior is also incorrect. Please let me know if you were able to reproduce it otherwise I can create modified demo.

    With both workarounds applied I was able to do few process calls of HEVC encoder.

    Regards,

    Andrey Lisnevich

  • Andrey, thanks for your confirmation and comments. We will take care of them in upcoming release. I will close this tread. Please open a new one later if you face any other issue.

    thank you,

    Paula