Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MXF-ESSENCE-DIGEST - parallel proposal for MXF manipulation validation #2

Open
mrmxf opened this issue Feb 22, 2019 · 0 comments
Open

Comments

@mrmxf
Copy link

mrmxf commented Feb 22, 2019

This issue should not block or stall MXF-DIGEST in any way It is of secondary importance.

When handling existing MXF content entering an IMF or MXF workflow, it is often necessary to rewrap the MXF to optimise / interleave / fragment the content to meet a delivery specification or storage requirement. A specific example is UHD TV content shot in interleaved XAVC is unwrapped into components for IMF workflows. MXF-ESSENCE-DIGEST is proposed to be compatible with MXF-DIGEST to the extent that it can be computed in parallel with MXF-DIGEST and the major cost of accessing the large file is done only once.

The benefit of the Essence Digest is that you can prove the same bytes were used in IMF as were captured in the interleaved original.

Essence Block Digest

The algorithm shall operate on complete blocks of essence in a stream. A stream shall be any MXF structure identified by a stream ID such as Image, Audio, Data or metadata wrapped with SMPTE ST 410. The data in the blocks of essence shall include only the payloads of KLV packets. MXF Fill packets shall be excluded. All blocks shall contain exactly DIGEST_BLOCK_LEN bytes except for the last block that shall contain all remaining bytes in the essence stream.

It is proposed that DIGEST_BLOCK_LEN be 524288

The Essence block digest shall be calculated with the same algorithm as the KLV Packet Digest

MXF Stream Digests

For each stream, the MXF Stream Digest is calculated from Essence Block Digests in the same way that the Sequence Digest is calculated from KLV Packet Digests

Canonical Encoding

The MXF-ESSENCE-DIGEST value is created by encoding the sequence digest value as URN item of the form urn:smpte:mxf-essence-digest:-, where mxf-essence-digest is a registered NSS as defined in this document, is the decimal value of the streamId in the MXF file without leading zeroes and is the Base58 encoding of the MXF stream digest value octets.

Example
urn:smpte:mxf-stream-digest:2-5C1YJuUNzbuG4tLzbW8eZypyaZZRKg6yzTuocEzcMXHFE6WoFsJQqJUVJZ7ehjHu18qCaexfvskr4qZeE4zBDwwm

Issues

  • Frame wrapped video and audio may require careful maths & buffering for creating the precise block sizes
  • The bigger the blocks, the more manipulation / buffering required - maybe smaller blocks are better?
  • The smaller the blocks, the greater the number of Essence Block Digests need to be stored - maybe bigger blocks are better?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant