Team,
Are there plans to have TI VENC OMX component provide an interface to set SEI information?
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.
Team,
Are there plans to have TI VENC OMX component provide an interface to set SEI information?
Just check if this helps:
http://processors.wiki.ti.com/index.php/OMX_VENC
Currently there are no plans to support meta data buffer support in ezsdk omx venc component.
Regards
Vimal
The current EZSDK comes with that file: component-sources/omx_05_02_00_30/src/ti/omx/interfaces/openMaxv11/ih264enc.h, where some comments are placed concerning meta data buffer and also concerning user-defined SEIs, see below.
Are these comments from an earlier solution and concerning another platform only?
What steps would you suggest to solve this issue? Because sooner or later we will have to add some user-defined information to the H.264 stream, at least an actually unique frame ID. Currently we can live with the existing solution as a stopgap, but at least we have to find the way and to estimate the needed effort...
Thanks in advance,
Joern.
The way to pass meta data to encode is via inBufs to the encoder during
process call.
[...]
Example: User want to insert SEI_USER_DATA_UNREGISTERED meta data at each
IDR picture, the following steps should be followed
1. Create the encoder object with IVIDENC2_Params::metadataType[0] =
IH264_SEI_USER_DATA_UNREGISTERED and metadataType[1] and metadataType[2]
= IVIDEO_METADATAPLANE_NONE
Also have IH264ENC_SET_NALU(naluPresentMaskIDRPicture, SEI)
2. Call Control function with XDM_GETBUFINFO. Encoder should return one
additional input buffer as required. size of the buffer will be -1 as
encoder doesn't know the size
3. Application should have a memory allocated for this meta data and pass on
to the encoder via IVIDEO2_BufDesc *inBufs->numMetaPlanes = 1
+----------------+
inBufs->metadataPlaneDesc[index].buf = pBuffer ; ---> | size | payLoad |
inBufs->metadataPlaneDesc[index].bufSize.bytes = -1 ; +----------------+
since the meta-data format includes size field, encoder will read size from
there and utilize it.
index of metadataPlaneDesc is the index of metaDataType which is holding
the particular meta data type. In this example metadataType[0] is holding
IH264_SEI_USER_DATA_UNREGISTERED so index = 0 of metadataPlaneDesc points
to IH264_SEI_USER_DATA_UNREGISTERED specific meta data
Any comments?
Vimal, I would it appreciate very much, if besides "no plans to support" at least a glimmer of a solution way might be given here.
I can't believe that all the TI's implementation efforts should not give some of you the ability to provide a recommendation which development steps should be choosen to add SEI_USER_DATA_UNREGISTERED packages into the H.264 data stream...
Thanks in advance,
Joern.
Joern,
Meta data passing requires additional buffers to be passed between application and Media controller VENCoder component. OMX standard does not have additional pointers in the buffer headers for this extra data. It requires customization of video encode omx component. I would recommend, please contact local TI contact for getting the source code for this. Then you would be able to enhance the component..
Also could you please tell us about your use case.
Regards
Vimal
Vimal,
thanks for your reply. I had the hope that there might be 1) either a possibility to provide additional data for encoding together with the image buffers within some kind of metadata structure, or 2) that it might be possible to provide additional data within own buffers provided alternately with the image buffers... When I say "additional data" then I mean some data thought to be encoded within user defined SEI messages. It fits my expectations that the VENCoder Component would have to be modified to handle such additional data.
Concerning use case. Very common, but maybe enough to get a feeling for our use case: we analyze the incoming video frames and extract some detailed information about their content. That will be somewhat like a list of type specifiers and regarding positions. We wanted to integrate this information into the H.264 data such that it might be received and recorded without knowledge about this additional data, but in principle remains available mixed with the H.264 image data. User defined SEI messages more or less seem to fulfill this need. And in the end displayers while decoding might either ignore this information or, if designed somewhat more comfortable, might provide an interface for callbacks to handle the user defined SEIs... In my opinion that is not a very special use case, particularly regarding the calculation potential of the dm81xx platforms.
Best regards,
Joern.