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.

dm368 中关于h264的sei使用遇到的问题,请大家帮帮忙



dm368的alg_vidEnc.c中配置如下:

     pObj->dynamicParams_h264.enableBufSEI    = 0;    /*!< Enable Buffering period SEI */

     pObj->dynamicParams_h264.enablePicTimSEI    = 1;   /*!< Enable Picture Timing SEI */

    pObj->dynamicParams_h264.perceptualRC                    = 1;

          pObj->dynamicParams_h264.idrFrameInterval                = pObj->createPrm.keyFrameInterval;

          pObj->dynamicParams_h264.mvSADoutFlag     = pObj->createPrm.mbMvOutEnable;

  pObj->dynamicParams_h264.resetHDVICPeveryFrame    = pObj->createPrm.resetHDVICP;

          pObj->dynamicParams_h264.enableROI    = 1;

  pObj->dynamicParams_h264.metaDataGenerateConsume         = 0;

  pObj->dynamicParams_h264.maxBitrateCVBR    = 0;

  pObj->dynamicParams_h264.interlaceRefMode    = 0;

  pObj->dynamicParams_h264.enableGDR = 0;

  pObj->dynamicParams_h264.GDRduration = 0;

  pObj->dynamicParams_h264.GDRinterval = 0;

  pObj->dynamicParams_h264.LongTermRefreshInterval = 0;

  pObj->dynamicParams_h264.UseLongTermFrame = 0;

  pObj->dynamicParams_h264.SetLongTermFrame = 0;

  pObj->dynamicParams_h264.CustomScaleMatrix_Buffer = NULL;

  pObj->dynamicParams_h264.CVBRsensitivity = 0;

  pObj->dynamicParams_h264.CVBRminbitrate = 0;

  pObj->dynamicParams_h264.LBRmaxpicsize = 0;

  pObj->dynamicParams_h264.LBRminpicsize = 0;

  pObj->dynamicParams_h264.LBRskipcontrol = 0x050004;

  pObj->dynamicParams_h264.maxHighCmpxIntCVBR    = 0;

  pObj->dynamicParams_h264.disableMVDCostFactor    = 0;

  pObj->dynamicParams_h264.putDataGetSpaceFxn    = NULL;

  pObj->dynamicParams_h264.dataSyncHandle    = NULL;

  pObj->dynamicParams_h264.VUI_Buffer->timingInfoPresentFlag= 1;

  pObj->dynamicParams_h264.VUI_Buffer->timeScale  = 240*(pObj->createPrm.framerate/1000);

  pObj->dynamicParams_h264.VUI_Buffer->numUnitsInTicks  = 120;

h264InArgs.timeStamp  = h264Timestamp;

h264InArgs.insertUserData  = XDAS_TRUE;

h264InArgs.lengthUserData  = 32;

h264InArgs.numOutputDataUnits  = 0;

h264Timestamp = h264Timestamp + 2;

....process here...

    const char uuid[16] = {

     0xdc, 0x45, 0xe9, 0xbd, 0xe6, 0xd9, 0x48, 0xb7,

     0x96, 0x2c, 0xd8, 0x20, 0xd9, 0x23, 0xee, 0xef

     };

           memcpy(outBufDesc.bufs[0] + h264OutArgs.offsetUserData,uuid,16);

   memset(outBufDesc.bufs[0] + h264OutArgs.offsetUserData + 16,0xFF,16);

添加数据后在本地存储的比特流中存在插入的SEI信息,如下(使用H264分析器查看效果):

forbidden_zero_bit : 0 

 nal_ref_idc : 0 

 nal_unit_type : 6 ( Supplemental enhancement information (SEI) ) 

======= SEI =======

=== User data unregistered ===

 payloadType : 5 

 payloadSize : 32 

 payload : 

DC 45 E9 BD E6 D9 48 B7 96 2C D8 20 D9 23 EE EF 

FF  FF FF FF  FF  FF  FF FF FF  FF FF  FF FF  FF FF FF 

插入的数据为16个FF,但通过VLC观看的视频数据中的SEI信息全部丢失了,请问这是什么原因?

谢谢大家