|
|
@ -654,6 +654,7 @@ static int mxf_read_primer_pack(void *arg, AVIOContext *pb, int tag, int size, U |
|
|
|
static int mxf_read_partition_pack(void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset) |
|
|
|
static int mxf_read_partition_pack(void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset) |
|
|
|
{ |
|
|
|
{ |
|
|
|
MXFContext *mxf = arg; |
|
|
|
MXFContext *mxf = arg; |
|
|
|
|
|
|
|
AVFormatContext *s = mxf->fc; |
|
|
|
MXFPartition *partition, *tmp_part; |
|
|
|
MXFPartition *partition, *tmp_part; |
|
|
|
UID op; |
|
|
|
UID op; |
|
|
|
uint64_t footer_partition; |
|
|
|
uint64_t footer_partition; |
|
|
@ -718,6 +719,12 @@ static int mxf_read_partition_pack(void *arg, AVIOContext *pb, int tag, int size |
|
|
|
} |
|
|
|
} |
|
|
|
nb_essence_containers = avio_rb32(pb); |
|
|
|
nb_essence_containers = avio_rb32(pb); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (partition->type == Header) { |
|
|
|
|
|
|
|
char str[36]; |
|
|
|
|
|
|
|
snprintf(str, sizeof(str), "%08x.%08x.%08x.%08x", AV_RB32(&op[0]), AV_RB32(&op[4]), AV_RB32(&op[8]), AV_RB32(&op[12])); |
|
|
|
|
|
|
|
av_dict_set(&s->metadata, "operational_pattern", str, 0); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (partition->this_partition && |
|
|
|
if (partition->this_partition && |
|
|
|
partition->previous_partition == partition->this_partition) { |
|
|
|
partition->previous_partition == partition->this_partition) { |
|
|
|
av_log(mxf->fc, AV_LOG_ERROR, |
|
|
|
av_log(mxf->fc, AV_LOG_ERROR, |
|
|
|