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.

DM36x H.264 encoder error 0x8010 at relatively high bitrates+low resolutions

When the DM36x H.264 encoder is set at a relatively large bitrate

(e.g. 1-10 Mbits/second for QVGA), the encoder frequently

fails with extended error 0x8010 (IH264VENC_ERR_PROCESS_CALL).

 

The error has been seen with encoder versions 2.20.00.005

and 2.30.00.01.

 

The error frequently occurs when the scene content changes from

complex moving objects to a blank single color.

 

The higher you set the bitrate, the more frequently the error occurs.

 

Can you confirm this issue?

My parameters are given below for 360x240 resolution  at 10Mbits/second,

it shows the issue frequently.

Can the issue be worked-around by changing the parameters?

 

h264enc version 02.30.00.01

Base params
===========
size 124
encodingPreset        3
rateControlPreset     5
maxHeight             256
maxWidth              368
maxFrameRate          30000
dataEndianness        1
maxInterFrameInterval 0
inputChromaFormat     9
inputContentType      0
reconChromaFormat     9
profileIdc 100
levelIdc 30
Log2MaxFrameNumMinus4 0
ConstraintSetFlag 0
entropyMode 1
transform8x8FlagIntraFrame 0
transform8x8FlagInterFrame 0
enableVUIparams 7
meAlgo 1
seqScalingFlag 1
encQuality 0
enableARM926Tcm 0
enableDDRbuff 0
sliceMode 3
EnableLongTermFrame 0
outputDataMode 0
sliceFormat 1


==============
size                212
inputHeight         240
inputWidth          360
refFrameRate        30000
targetFrameRate     30000
targetBitRate       10000000
intraFrameInterval  60
generateHeader      0
captureWidth        384
forceFrame          -1
interFrameInterval  1
mbDataFlag          0
sliceSize 1
airRate 0
intraFrameQP 28
interPFrameQP 28
initQ 28
rcQMax 51
rcQMin 5
rcQMaxI 40
rcQMinI 0
rcAlgo 6
maxDelay 300
aspectRatioX 10
aspectRatioY 11
lfDisableIdc 0
enableBufSEI 1
enablePicTimSEI 0
perceptualRC 0
idrFrameInterval 60
mvSADoutFlag 0
resetHDVICPeveryFrame 0
enableROI 0
metaDataGenerateConsume 0
disableMVDCostFactor 0
putDataGetSpaceFxn 60664
interlaceRefMode 0
maxBitrateCVBR 10000000
enableGDR 0
GDRduration 0
GDRinterval 0
LongTermRefreshInterval 0
UseLongTermFrame 0
SetLongTermFrame 0
VUI_Buffer 1601672
aspectRatioInfoPresentFlag 1
overscanInfoPresentFlag 0
overscanAppropriateFlag 0
videoSignalTypePresentFlag 1
videoFormat 2
pixelRange 1
colourDescriptionPresentFlag 0
colourPrimaries 2
transferCharacteristics 2
matrixCoefficients 2
timingInfoPresentFlag 1
numUnitsInTicks 1001
timeScale 60000
fixedFrameRateFlag 1
nalHrdParameterspresentFlag 1
picStructPresentFlag 0
bitstreamRestrictionFlag 1
CustomScaleMatrix_Buffer 1577828
CVBRsensitivity 0
CVBRminbitrate 0
LBRmaxpicsize 76
LBRminpicsize 0
LBRskipcontrol 327684
dataSyncHandle 1591288
.
.
.
@0x004592b2:[T:0x42522490] ti.sdo.dmai - [Venc1] VIDENC1_process() failed with error (-1 ext: 0x8010)
Error: Failed to encode video buffer

 

 

Regards,

John Whittington

 

  • John,

    Can you please check if the issue exists when sliceMode is set to 0.

    We will also check the issue at our end and get back

  • Adithya,

     

    Thanks for your support.

    I have indeed seen the issue with sliceMode 0 as well.

    In fact I first noticed the issue in sliceMode 0.

    Here are the parameters for sliceMode 0 (VGA resolution at 9 Mbits/sec, H.264 encode v2.20.00.05):

     

    Base params
    ===========
    size 124
    encodingPreset        3
    rateControlPreset     5
    maxHeight             480
    maxWidth              640
    maxFrameRate          30000
    dataEndianness        1
    maxInterFrameInterval 0
    inputChromaFormat     9
    inputContentType      1
    reconChromaFormat     9
    profileIdc 77
    levelIdc 30
    Log2MaxFrameNumMinus4 0
    ConstraintSetFlag 0
    entropyMode 1
    transform8x8FlagIntraFrame 0
    transform8x8FlagInterFrame 0
    enableVUIparams 7
    meAlgo 1
    seqScalingFlag 0
    encQuality 0
    enableARM926Tcm 0
    enableDDRbuff 1
    sliceMode 0
    EnableLongTermFrame 0
    outputDataMode 1
    sliceFormat 1


    ==============
    size                212
    inputHeight         480
    inputWidth          640
    refFrameRate        30000
    targetFrameRate     30000
    targetBitRate       9000000
    intraFrameInterval  60
    generateHeader      0
    captureWidth        1280
    forceFrame          -1
    interFrameInterval  1
    mbDataFlag          0
    sliceSize 0
    airRate 0
    intraFrameQP 28
    interPFrameQP 28
    initQ 28
    rcQMax 51
    rcQMin 5
    rcQMaxI 40
    rcQMinI 0
    rcAlgo 5
    maxDelay 500
    aspectRatioX 4
    aspectRatioY 3
    lfDisableIdc 0
    enableBufSEI 1
    enablePicTimSEI 0
    perceptualRC 1
    idrFrameInterval 60
    mvSADoutFlag 0
    resetHDVICPeveryFrame 2
    enableROI 0
    metaDataGenerateConsume 0
    disableMVDCostFactor 0
    putDataGetSpaceFxn 0
    interlaceRefMode 0
    maxBitrateCVBR 9000000
    enableGDR 0
    GDRduration 0
    GDRinterval 0
    LongTermRefreshInterval 0
    UseLongTermFrame 0
    SetLongTermFrame 0
    VUI_Buffer 1679560
    aspectRatioInfoPresentFlag 1
    overscanInfoPresentFlag 0
    overscanAppropriateFlag 0
    videoSignalTypePresentFlag 1
    videoFormat 2
    pixelRange 1
    colourDescriptionPresentFlag 0
    colourPrimaries 2
    transferCharacteristics 2
    matrixCoefficients 2
    timingInfoPresentFlag 1
    numUnitsInTicks 1000
    timeScale 60000
    fixedFrameRateFlag 1
    nalHrdParameterspresentFlag 1
    picStructPresentFlag 0
    bitstreamRestrictionFlag 1
    CustomScaleMatrix_Buffer 1655992
    CVBRsensitivity 0
    CVBRminbitrate 0
    LBRmaxpicsize 76
    LBRminpicsize 0
    LBRskipcontrol 327684
    dataSyncHandle 1669128

  • Hi John,

    We are not able to reproduce the issue at our end. We tried with 352x288 at 10Mbps on 02.30.00.01, process call is not  returning any error.

    Can you please try to run using codec debug library and send us the log? Please try to run on standalone testapp provided with the package.

     

    Thanks,

    Veeranna

  • OK.

     

    Could you send your parameters?

     

    I will convert my clip to raw YUV so I can use the testapp.

     

  •  

    Here the params

     

    Creatime params
    ===========

    encodingPreset        3
    rateControlPreset     5
    maxHeight             2048
    maxWidth              2048
    maxFrameRate          30000
    dataEndianness        1
    maxInterFrameInterval 0
    inputChromaFormat     9
    inputContentType      1
    reconChromaFormat     9
    profileIdc 77
    levelIdc 30
    Log2MaxFrameNumMinus4 0
    ConstraintSetFlag 0
    entropyMode 1
    transform8x8FlagIntraFrame 0
    transform8x8FlagInterFrame 0
    enableVUIparams 7    (it will be equal to 4, for info refer user guide)
    meAlgo 0            (no use for encQuality = 0)
    seqScalingFlag 0
    encQuality 0
    enableARM926Tcm 0
    enableDDRbuff 0
    sliceMode 3
    EnableLongTermFrame 0
    outputDataMode 0       (data sync is enable)
    sliceFormat 0

    Dynamic params
    ==============

    inputHeight         288
    inputWidth          352
    refFrameRate        30000
    targetFrameRate     30000
    targetBitRate       10000000
    intraFrameInterval  60
    generateHeader      0
    captureWidth        352
    forceFrame          -1
    interFrameInterval  1
    mbDataFlag          0
    sliceSize 1
    airRate 0
    intraFrameQP 28
    interPFrameQP 28
    initQ 28
    rcQMax 51
    rcQMin 5
    rcQMaxI 40
    rcQMinI 0
    rcAlgo 1/5/6 (tried for 3 cases)
    maxDelay 500
    aspectRatioX 10
    aspectRatioY 11
    lfDisableIdc 0
    enableBufSEI 1
    enablePicTimSEI 0
    perceptualRC 0
    idrFrameInterval 60
    mvSADoutFlag 0
    resetHDVICPeveryFrame 1
    enableROI 0
    metaDataGenerateConsume 0
    disableMVDCostFactor 0
    interlaceRefMode 0
    maxBitrateCVBR 10000000
    enableGDR 0
    GDRduration 0
    GDRinterval 0
    LongTermRefreshInterval 0
    UseLongTermFrame 0
    SetLongTermFrame 0
    CVBRsensitivity 0
    CVBRminbitrate 0
    LBRmaxpicsize 76
    LBRminpicsize 0
    LBRskipcontrol 327684

  • Hi,Adithya,

       In the process of encoding,find the issue that IH264VENC_ERR_PROCESS_CALL(0x8010)

       ERROR  (encode.c | Video_EncRun | 1165):
            Video_EncRun() failed with error (status:-1 outArgs.extendedError: 0x8010)

       how to slove this issue?

       my configuration as below:my configuration should use the slicemode)

       Thank you!

    Base params
    ===========

            pObj->params.size                           = sizeof(IH264VENC_Params);
            pObj->params.encodingPreset                 = 1;    // 1.XDM_HIGH_QUALITY, 2.XDM_HIGH_SPEED
            pObj->params.rateControlPreset              = 1;    // 1.IVIDEO_LOW_DELAY(CBR), 2.IVIDEO_STORAGE(VBR)
            pObj->params.maxHeight                      = 480;
            pObj->params.maxWidth                       = 640;
            pObj->params.maxFrameRate                   = 25*1000; // VideoStd_D1_PAL( fps * 1000)
            pObj->params.maxBitRate                     = 2*1000*1000;
            pObj->params.dataEndianness                 = 1;    // XDM_BYTE
            pObj->params.maxInterFrameInterval          = 0;    // 1. If no B-frames
            pObj->params.inputChromaFormat              = 9;    // 9.XDM_YUV_420SP
            pObj->params.inputContentType               = 0;    // 0.IVIDEO_PROGRESSIVE
            pObj->params.reconChromaFormat              = 9;    // 9.XDM_YUV_420SP
           
            pObj->params_h264.profileIdc                = 100;  // 66(Base line profile), 77(main profile), 100(high profile)
            pObj->params_h264.levelIdc                  = 40;   // 40.IH264VENC_LEVEL_40;
            pObj->params_h264.Log2MaxFrameNumMinus4     = 0;
            pObj->params_h264.ConstraintSetFlag         = 0;
            pObj->params_h264.entropyMode               = 0;    // 0.CAVLC, 1.CABAC
            pObj->params_h264.transform8x8FlagIntraFrame= 1;
            pObj->params_h264.transform8x8FlagInterFrame= 1;
            pObj->params_h264.enableVUIparams           = 1; 
            pObj->params_h264.meAlgo                    = 0;
            pObj->params_h264.seqScalingFlag            = 1;
            pObj->params_h264.encQuality                = 2;
            pObj->params_h264.enableARM926Tcm           = 1;
            pObj->params_h264.enableDDRbuff             = 1;
            pObj->params_h264.sliceMode                 = 1;
            pObj->params_h264.numTemporalLayers         = 0;
            pObj->params_h264.svcSyntaxEnable           = 0;
            pObj->params_h264.EnableLongTermFrame       = 0;
            pObj->params_h264.outputDataMode            = 1;
            pObj->params_h264.sliceFormat               = 1;

    dynamic params
    ===========


            pObj->dynamicParams.size                            = sizeof(IH264VENC_DynamicParams);
            pObj->dynamicParams.inputHeight                     = 480;
            pObj->dynamicParams.inputWidth                      = 640;
            pObj->dynamicParams.refFrameRate                    = 25*1000;
            pObj->dynamicParams.targetFrameRate                 = 25*1000;
            pObj->dynamicParams.targetBitRate                   = 2*1000*1000;
            pObj->dynamicParams.intraFrameInterval              = 30;
            pObj->dynamicParams.generateHeader                  = 0;    // 0.XDM_ENCODE_AU
            pObj->dynamicParams.captureWidth                    = 0;
            pObj->dynamicParams.forceFrame                      = -1;   // -1.IVIDEO_NA_FRAME
            pObj->dynamicParams.interFrameInterval              = 0;
            pObj->dynamicParams.mbDataFlag                      = 0;

            pObj->dynamicParams_h264.sliceSize                  = 0x580*8;
            pObj->dynamicParams_h264.airRate                    = 0;
            pObj->dynamicParams_h264.intraFrameQP               = 28;
            pObj->dynamicParams_h264.interPFrameQP              = 28;
            pObj->dynamicParams_h264.initQ                      = 28;
            pObj->dynamicParams_h264.rcQMax                     = 45;
            pObj->dynamicParams_h264.rcQMin                     = 0;
            pObj->dynamicParams_h264.rcQMaxI                    = 42;
            pObj->dynamicParams_h264.rcQMinI                    = 0;
            pObj->dynamicParams_h264.rcAlgo                     = 0;
            pObj->dynamicParams_h264.maxDelay                   = 2*1000; //
            pObj->dynamicParams_h264.aspectRatioX               = 1;
            pObj->dynamicParams_h264.aspectRatioY               = 1;
            pObj->dynamicParams_h264.lfDisableIdc               = 0;
            pObj->dynamicParams_h264.enableBufSEI               = 0;
            pObj->dynamicParams_h264.enablePicTimSEI            = 0;
            pObj->dynamicParams_h264.perceptualRC               = 1;
            pObj->dynamicParams_h264.idrFrameInterval           = 10;
            pObj->dynamicParams_h264.mvSADoutFlag               = 0;
            pObj->dynamicParams_h264.resetHDVICPeveryFrame      = 1;
            pObj->dynamicParams_h264.enableROI                  = 0;
            pObj->dynamicParams_h264.metaDataGenerateConsume    = 0;
            pObj->dynamicParams_h264.maxBitrateCVBR             = 0;
            pObj->dynamicParams_h264.interlaceRefMode           = 0;
            pObj->dynamicParams_h264.enableGDR                  = 0;

  • I am seeing a problem which may be very similar to this, but I don't quite understand what the solution was to this thread?

    (My issue here: http://e2e.ti.com/support/embedded/multimedia_software_codecs/f/356/t/374552.aspx)