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信息全部丢失了,请问这是什么原因?
谢谢大家