Hi,
I'm trying to encode and decode some application specific data using the very latest TI h.264 encoder and decoder on a dm368 platform. Although encode appears to be successful, the decoder errors with extended error code 0x84d (corrupted data, Error in SEI message) and fail to output a frame. If I set insertUserData = XDAS_FALSE in the encoder, or if I set seiVuiParseFlag = 0 in the decoder, everything works perfectly.
In the encoder I have:
h264InArgs.insertUserData = XDAS_TRUE;
h264InArgs.lengthUserData = 60;
....Process call here.....
// Set user data uuid_iso_iec_11578 as per h.264 spec (D.1.6)
uuid_t uuid_iso_iec_11578;
uuid_generate(uuid_iso_iec_11578);
memcpy (outBufDesc.bufs[0] + h264OutArgs.offsetUserData, uuid_iso_iec_11578, 16);
// Set user data payload
memset(outBufDesc.bufs[0] + h264OutArgs.offsetUserData + 16, 0x00, 44);
In the decoder I have:
h264InArgs.seiVuiParseFlag = 1;
SeiVui_obj.sei_messages.user_data_unregistered.user_data_payload_byte = (XDAS_UInt8 *) userDataBuf0;
SeiVui_obj.sei_messages.user_data_unregistered.buffer_size = sizeof(userDataBuf0);
SeiVui_obj.sei_messages.user_data_registered.itu_t_t35_payload_byte = NULL;
SeiVui_obj.sei_messages.user_data_registered.buffer_size = 0;
h264InArgs.seiVuiBufferPtr = &(SeiVui_obj);
....Process call here.....
outSeiVuiBuffer = (sSeiVuiParams_t*)h264OutArgs.seiVuiBufferPtr;
printf("Parsed: %d\n", outSeiVuiBuffer->parsed_flag);
Best regards,
Alex