enum MXFMetadataSetType type;
UID essence_container_ul;
UID essence_codec_ul;
+ UID codec_ul;
AVRational sample_rate;
AVRational aspect_ratio;
int width;
case 0x3004:
avio_read(pb, descriptor->essence_container_ul, 16);
break;
+ case 0x3005:
+ avio_read(pb, descriptor->codec_ul, 16);
+ break;
case 0x3006:
descriptor->linked_track_id = avio_rb32(pb);
break;
{ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE },
};
+static const MXFCodecUL mxf_codec_uls[] = {
+ { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x07,0x04,0x01,0x02,0x02,0x03,0x01,0x01,0x00 }, 14, AV_CODEC_ID_JPEG2000 },
+ { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE },
+};
+
static const char* const mxf_data_essence_descriptor[] = {
"vbi_vanc_smpte_436M",
};
/* TODO: drop PictureEssenceCoding and SoundEssenceCompression, only check EssenceContainer */
codec_ul = mxf_get_codec_ul(ff_mxf_codec_uls, &descriptor->essence_codec_ul);
st->codec->codec_id = (enum AVCodecID)codec_ul->id;
+ if (st->codec->codec_id == AV_CODEC_ID_NONE) {
+ codec_ul = mxf_get_codec_ul(mxf_codec_uls, &descriptor->codec_ul);
+ st->codec->codec_id = (enum AVCodecID)codec_ul->id;
+ }
+
av_log(mxf->fc, AV_LOG_VERBOSE, "%s: Universal Label: ",
avcodec_get_name(st->codec->codec_id));
for (k = 0; k < 16; k++) {
if (mxf->op != OPAtom)
return mxf_read_packet_old(s, pkt);
+ // If we have no streams then we basically are at EOF
+ if (s->nb_streams < 1)
+ return AVERROR_EOF;
+
/* OPAtom - clip wrapped demuxing */
/* NOTE: mxf_read_header() makes sure nb_index_tables > 0 for OPAtom */
st = s->streams[0];