mirror of https://git.ffmpeg.org/ffmpeg.git
Merge commit '842ea36c747eb6537c4236114346cb7a3e9a8df1'
* commit '842ea36c747eb6537c4236114346cb7a3e9a8df1': mxf: Override faulty PreviousPartition entries Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
8263c14691
|
@ -495,6 +495,26 @@ static int mxf_read_partition_pack(void *arg, AVIOContext *pb, int tag, int size
|
|||
}
|
||||
nb_essence_containers = avio_rb32(pb);
|
||||
|
||||
if (partition->this_partition &&
|
||||
partition->previous_partition == partition->this_partition) {
|
||||
av_log(mxf->fc, AV_LOG_ERROR,
|
||||
"PreviousPartition equal to ThisPartition %"PRIx64"\n",
|
||||
partition->previous_partition);
|
||||
/* override with the actual previous partition offset */
|
||||
if (!mxf->parsing_backward && mxf->last_forward_partition > 1) {
|
||||
MXFPartition *prev =
|
||||
mxf->partitions + mxf->last_forward_partition - 2;
|
||||
partition->previous_partition = prev->this_partition;
|
||||
}
|
||||
/* if no previous body partition are found point to the header
|
||||
* partition */
|
||||
if (partition->previous_partition == partition->this_partition);
|
||||
partition->previous_partition = 0;
|
||||
av_log(mxf->fc, AV_LOG_ERROR,
|
||||
"Overriding PreviousPartition with %"PRIx64"\n",
|
||||
partition->previous_partition);
|
||||
}
|
||||
|
||||
/* some files don'thave FooterPartition set in every partition */
|
||||
if (footer_partition) {
|
||||
if (mxf->footer_partition && mxf->footer_partition != footer_partition) {
|
||||
|
|
Loading…
Reference in New Issue