DASH-IF-IOP
DASH-IF-IOP copied to clipboard
emsg in file and mpd
Dear All, the emsg box defined in dash has a message payload unsigned int(8) message_data[]; when carried in ISOBMFF 23009-1. When carried in mpd for some schemes like scte xml, xml+bin, and bin (see also https://github.com/Dash-Industry-Forum/DASH-IF-IOP/issues/199), some processing is needed with part of the event message data being base 64 encoded and part of it being xml while being stored as a string in the mpd, this is quite confusing when converting from the ISOBMFF to mpd and back, or even when generating an mpd as the way the binary message is presented depends on the scheme. What would make things easier was if the message_data was coded independently using base64, which is a straightforward way of putting the binary content in the mpd without breaking the xml scheme or comprising data integrity, hence we propose supporting a base64 type field for the messageData attribute in the event type as a way to reduce this ambiguity. In addition more explanation of the current sting based approach would be helpful.
please see for our proposal: https://drive.google.com/drive/u/0/folders/1__5QEbopyn46asPFAxxpL_4A8bHeolLL
One solution would be the handline in azure proposed by microsoft:
https://docs.microsoft.com/en-us/azure/media-services/previous/media-services-specifications-live-timed-metadata#22-fragmented-mp4-ingest-smooth-streaming
!-- Example Section in MPD -->
note: this needs some updates in DASH IOP and DASH standard to signal that the body of the event is base64 encoded
I agree it would be better if the message data were coded using base64 (or similar). From a player perspective, I'm not really sure if we're doing it right in ExoPlayer, but we currently have some pretty awkward code that tries to read the XML corresponding to the event from the XML parser we're using to read the manifest, and serialize the event back into binary form:
https://github.com/google/ExoPlayer/blob/r2.9.2/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java#L911
It's probably wrong. At best it's very error prone. If the message data were coded using base64 then I think it would be trivial.
Thanks for the pointer that code looks complicated for what should be trivial, we try to avoid embedding xml in xml from a different namespace when we can, for us it was also hard to convert from file to mpd correctly. I will discuss it more in the event TF 7am pacific 14 dec, and develop the solution a bit more, eventually this needs to be reported back to MPEG