Lines Matching refs:partition
486 // we look for partition where the offset is placed
715 MXFPartition *partition, *tmp_part;
732 /* insert the new partition pack in the middle
737 partition = mxf->current_partition = &mxf->partitions[mxf->last_forward_partition];
740 partition = mxf->current_partition = &mxf->partitions[mxf->partitions_count];
743 memset(partition, 0, sizeof(*partition));
745 partition->pack_length = avio_tell(pb) - klv_offset + size;
746 partition->pack_ofs = klv_offset;
750 partition->type = Header;
753 partition->type = BodyPartition;
756 partition->type = Footer;
759 av_log(mxf->fc, AV_LOG_ERROR, "unknown partition type %i\n", uid[13]);
764 partition->closed = partition->type == Footer || !(uid[14] & 1);
765 partition->complete = uid[14] > 2;
767 partition->kag_size = avio_rb32(pb);
775 partition->previous_partition = avio_rb64(pb);
777 partition->header_byte_count = avio_rb64(pb);
778 partition->index_byte_count = avio_rb64(pb);
779 partition->index_sid = avio_rb32(pb);
780 partition->body_offset = avio_rb64(pb);
781 partition->body_sid = avio_rb32(pb);
782 if (partition->body_offset < 0)
791 if (partition->type == Header) {
798 partition->previous_partition == this_partition) {
801 partition->previous_partition);
802 /* override with the actual previous partition offset */
806 partition->previous_partition = prev->pack_ofs - mxf->run_in;
808 /* if no previous body partition are found point to the header
809 * partition */
810 if (partition->previous_partition == this_partition)
811 partition->previous_partition = 0;
814 partition->previous_partition);
817 /* some files don't have FooterPartition set in every partition */
833 partition->previous_partition, footer_partition,
834 partition->index_sid, partition->body_sid);
838 if (partition->previous_partition &&
839 mxf->run_in + partition->previous_partition >= klv_offset) {
841 "PreviousPartition points to this partition or forward\n");
878 if (partition->kag_size <= 0 || partition->kag_size > (1 << 20)) {
880 partition->kag_size);
883 partition->kag_size = 512;
885 partition->kag_size = 1;
887 av_log(mxf->fc, AV_LOG_WARNING, "%"PRId32"\n", partition->kag_size);
915 // partition and we iterate thorugh all instances of them. Also some files
3193 static int mxf_metadataset_init(MXFMetadataSet *ctx, enum MXFMetadataSetType type, MXFPartition *partition)
3196 ctx->partition_score = partition_score(partition);
3283 * Matches any partition pack key, in other words:
3287 * @return non-zero if the key is a partition pack key, zero otherwise
3328 * Seeks to the previous partition and parses it, if possible
3342 /* seek to previous partition */
3347 av_log(mxf->fc, AV_LOG_TRACE, "seeking to previous partition\n");
3363 * can point to just before the current partition, causing klv_read_packet()
3422 * Called when the next partition or EOF is encountered
3441 * Figures out the proper offset and length of the essence container in each partition
3467 /* essence container spans to the next partition */
3475 "partition %i: bad ThisPartition = %"PRIX64"\n",
3548 /* find the essence partition */
3558 /* only handle files with a single essence partition */
3609 * The limit below assumes a file with nothing but partition packs and a RIP.
3610 * Before changing this, consider that a muxer may place each sample in its own partition.
3661 av_log(s, AV_LOG_ERROR, "could not find header partition pack key\n");
3677 /* EOF - seek to previous partition or stop */
3704 /* seek to footer, previous partition or stop */
3709 /* next partition pack - keep going, seek to previous partition or stop */
3714 /* we're still parsing forward. proceed to parsing this partition pack */
4080 /* Must skip Run-In Sequence and search for MXF header partition pack key SMPTE 377M 5.5 */
4132 MXFPartition *partition;
4179 if ((ret = mxf_edit_unit_absolute_offset(mxf, t, sample_time, source_track->edit_rate, &sample_time, &seekpos, &partition, 1)) < 0)
4184 KLVPacket klv = partition->first_essence_klv;