AnsweredAssumed Answered

i.MX6 H.264 AVC accessing SEI data

Question asked by David Thompson on Nov 18, 2013
Latest reply on Jul 21, 2015 by benhenricksen

I was wondering if anyone more familiar with the code could point me in the right direction. I'd like access to specific SEI messages embedded within the h.264 stream, without having to reparse the whole stream a second time. I realize I'll need to write this code myself, I was just looking for advice on where the best place to make my modifications would be. Here are some details.


I am playing an h.264 video on the i.MX6, and the video is decoding/displaying correctly. However, my application needs access to additional data embedded in the h.264 stream, not related to decoding the video. Specifically, I am trying to access Closed Captioning data (Subtitles on American television). This data is embedded in "ITU-T T.35 registered User data SEI" messages, which can typically just be parsed along with the rest of the h.264 stream.


My problem is, that the actual H.264 stream parsing is done within the closed-source Freescale library, that is only distributed (I believe) in precompiled format. I'm pretty sure the data is even being parsed, I'm just not familiar with any API that would let me access it. Is there any standard mechanism for me to request additional data from this library?


I believe this is the current flow of data:
GStreamer (vpudec)  >>  libfslvpuwrap  >>  libvpu  >> (Freescale precompiled library)
I haven't yet found any place, particularly in libVPU, where I can get access to SEI messages. Is there someplace else I should be looking?


I can always pre-parse the h.264 stream, before I hand it off to the VPU, but since the entire thing would then get parsed again a second time, that would be inefficient, and something I'd like to avoid. I understand if this is not possible, I was just hoping someone had done something similar before, and could advise me on what changes needed to be made.


Thanks for the help,