On Fri, Sep 30, 2022 at 7:08 AM Richard Ayres <richard.ay...@bydeluxe.com> wrote: > > We had an issue where ffmpeg was unable to unpack the EKLV of an encrypted 3D > SMPTE DC MXF. > > The patch adds the SMPTE UL for EKLV packets > (060e2b34.02040101.0d010301.027e0100), to mxfdec.c in order to unpack an EKLV > packet found within an Encrypted SMPTE Digital Cinema MXF. > > Signed-off-by: Richard Ayres <richard.ay...@bydeluxe.com> > --- > libavformat/mxfdec.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > index badd2be224..ebd64b1c68 100644 > --- a/libavformat/mxfdec.c > +++ b/libavformat/mxfdec.c > @@ -343,6 +343,7 @@ static const uint8_t mxf_apple_coll_prefix[] > = { 0x06,0x0e,0x2b,0x > /* complete keys to match */ > static const uint8_t mxf_crypto_source_container_ul[] = { > 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x09,0x06,0x01,0x01,0x02,0x02,0x00,0x00,0x00 > }; > static const uint8_t mxf_encrypted_triplet_key[] = { > 0x06,0x0e,0x2b,0x34,0x02,0x04,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x7e,0x01,0x00 > }; > +static const uint8_t mxf_encrypted_triplet_smpte_key[] = { > 0x06,0x0e,0x2b,0x34,0x02,0x04,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x7e,0x01,0x00 > }; > static const uint8_t mxf_encrypted_essence_container[] = { > 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0b,0x01,0x00 > }; > static const uint8_t mxf_sony_mpeg4_extradata[] = { > 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0e,0x06,0x06,0x02,0x02,0x01,0x00,0x00 > }; > static const uint8_t mxf_ffv1_extradata[] = { > 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x04,0x01,0x06,0x0c,0x01,0x00,0x00,0x00 > }; // FFV1InitializationMetadata > @@ -3738,6 +3739,7 @@ static int mxf_read_header(AVFormatContext *s) > PRINT_KEY(s, "read header", klv.key); > av_log(s, AV_LOG_TRACE, "size %"PRIu64" offset %#"PRIx64"\n", > klv.length, klv.offset); > if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key) || > + IS_KLV_KEY(klv.key, mxf_encrypted_triplet_smpte_key) ||
Calling one UL "mxf_encrypted_triplet_key" and the other "mxf_encrypted_triplet_smpte_key" is misleading IMHO. The only difference is the version byte, which should be ignored in most, if not all, SMPTE UL comparisons. I would instead use mxf_match_uid(), which ignores the version byte, to compare the UL keys. > IS_KLV_KEY(klv.key, mxf_essence_element_key) || > IS_KLV_KEY(klv.key, mxf_canopus_essence_element_key) || > IS_KLV_KEY(klv.key, mxf_avid_essence_element_key) || > @@ -3983,7 +3985,8 @@ static int mxf_read_packet(AVFormatContext *s, AVPacket > *pkt) > pos = klv.next_klv - klv.length; > PRINT_KEY(s, "read packet", klv.key); > av_log(s, AV_LOG_TRACE, "size %"PRIu64" offset %#"PRIx64"\n", > klv.length, klv.offset); > - if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key)) { > + if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key) || > + IS_KLV_KEY(klv.key, mxf_encrypted_triplet_smpte_key)) { > ret = mxf_decrypt_triplet(s, pkt, &klv); > if (ret < 0) { > av_log(s, AV_LOG_ERROR, "invalid encoded triplet\n"); > -- > 2.25.1 > > This e-mail and any attachments are intended only for use by the addressee(s) > named herein and may contain confidential information. If you are not the > intended recipient of this e-mail, you are hereby notified any dissemination, > distribution or copying of this email and any attachments is strictly > prohibited. If you receive this email in error, please immediately notify the > sender by return email and permanently delete the original, any copy and any > printout thereof. The integrity and security of e-mail cannot be guaranteed. > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".