| 
																	
																	
																		
																	
																	
																 | 
																@@ -1089,76 +1089,75 @@ static void mxf_write_index_table_segment(AVFormatContext *s) | 
															
														
														
													
														
															
																 | 
																 | 
																    put_byte(pb, mxf->slice_count); | 
																 | 
																 | 
																    put_byte(pb, mxf->slice_count); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    if (!mxf->edit_unit_byte_count) { | 
																 | 
																 | 
																    if (!mxf->edit_unit_byte_count) { | 
															
														
														
													
														
															
																 | 
																 | 
																    // delta entry array | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    mxf_write_local_tag(pb, 8 + (s->nb_streams+1)*6, 0x3F09); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    put_be32(pb, s->nb_streams+1); // num of entries | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    put_be32(pb, 6);             // size of one entry | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    // write system item delta entry | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    put_byte(pb, 0); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    put_byte(pb, 0); // slice entry | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    put_be32(pb, 0); // element delta | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; i < s->nb_streams; i++) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        AVStream *st = s->streams[i]; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        MXFStreamContext *sc = st->priv_data; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        put_byte(pb, sc->temporal_reordering); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (sc->temporal_reordering) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            temporal_reordering = 1; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        // slice number | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (i == 0) { // video track | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            put_byte(pb, 0); // slice number | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            put_be32(pb, KAG_SIZE); // system item size including klv fill | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        } else { // audio track | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            unsigned audio_frame_size = sc->aic.samples[0]*sc->aic.sample_size; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            audio_frame_size += klv_fill_size(audio_frame_size); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            put_byte(pb, 1); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            put_be32(pb, (i-1)*audio_frame_size); // element delta | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        // delta entry array | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        mxf_write_local_tag(pb, 8 + (s->nb_streams+1)*6, 0x3F09); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        put_be32(pb, s->nb_streams+1); // num of entries | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        put_be32(pb, 6);               // size of one entry | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        // write system item delta entry | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        put_byte(pb, 0); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        put_byte(pb, 0); // slice entry | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        put_be32(pb, 0); // element delta | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        for (i = 0; i < s->nb_streams; i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            AVStream *st = s->streams[i]; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            MXFStreamContext *sc = st->priv_data; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            put_byte(pb, sc->temporal_reordering); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if (sc->temporal_reordering) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                temporal_reordering = 1; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if (i == 0) { // video track | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                put_byte(pb, 0); // slice number | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                put_be32(pb, KAG_SIZE); // system item size including klv fill | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } else { // audio track | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                unsigned audio_frame_size = sc->aic.samples[0]*sc->aic.sample_size; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                audio_frame_size += klv_fill_size(audio_frame_size); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                put_byte(pb, 1); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                put_be32(pb, (i-1)*audio_frame_size); // element delta | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																        } | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    mxf_write_local_tag(pb, 8 + mxf->edit_units_count*(11+mxf->slice_count*4), 0x3F0A); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    put_be32(pb, mxf->edit_units_count);  // num of entries | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    put_be32(pb, 11+mxf->slice_count*4);  // size of one entry | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; i < mxf->edit_units_count; i++) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (temporal_reordering) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            int temporal_offset = 0; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            for (j = i+1; j < mxf->edit_units_count; j++) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                temporal_offset++; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                if (mxf->index_entries[j].flags & 0x10) { // backward prediction | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                    // next is not b, so is reordered | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                    if (!(mxf->index_entries[i+1].flags & 0x10)) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                        if ((mxf->index_entries[i].flags & 0x11) == 0) // i frame | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                            temporal_offset = 0; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                        else | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                            temporal_offset = -temporal_offset; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        mxf_write_local_tag(pb, 8 + mxf->edit_units_count*(11+mxf->slice_count*4), 0x3F0A); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        put_be32(pb, mxf->edit_units_count);  // num of entries | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        put_be32(pb, 11+mxf->slice_count*4);  // size of one entry | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        for (i = 0; i < mxf->edit_units_count; i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if (temporal_reordering) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                int temporal_offset = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                for (j = i+1; j < mxf->edit_units_count; j++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    temporal_offset++; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    if (mxf->index_entries[j].flags & 0x10) { // backward prediction | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                        // next is not b, so is reordered | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                        if (!(mxf->index_entries[i+1].flags & 0x10)) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                            if ((mxf->index_entries[i].flags & 0x11) == 0) // i frame | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                                temporal_offset = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                            else | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                                temporal_offset = -temporal_offset; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                        } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                        break; | 
															
														
														
													
														
															
																 | 
																 | 
																                    } | 
																 | 
																 | 
																                    } | 
															
														
														
													
														
															
																 | 
																 | 
																                    break; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                } | 
																 | 
																 | 
																                } | 
															
														
														
													
														
															
																 | 
																 | 
																            } | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            put_byte(pb, temporal_offset); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        } else | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            put_byte(pb, 0); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (!(mxf->index_entries[i].flags & 0x33)) { // I frame | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            mxf->last_key_index = key_index; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            key_index = i; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        } | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (mxf->index_entries[i].flags & 0x10 && // backward prediction | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            !(mxf->index_entries[key_index].flags & 0x80)) { // open gop | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            put_byte(pb, mxf->last_key_index - i); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        } else { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            put_byte(pb, key_index - i); // key frame offset | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            if ((mxf->index_entries[i].flags & 0x20) == 0x20) // only forward | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                put_byte(pb, temporal_offset); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } else | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                put_byte(pb, 0); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if (!(mxf->index_entries[i].flags & 0x33)) { // I frame | 
															
														
														
													
														
															
																 | 
																 | 
																                mxf->last_key_index = key_index; | 
																 | 
																 | 
																                mxf->last_key_index = key_index; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                key_index = i; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if (mxf->index_entries[i].flags & 0x10 && // backward prediction | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                !(mxf->index_entries[key_index].flags & 0x80)) { // open gop | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                put_byte(pb, mxf->last_key_index - i); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } else { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                put_byte(pb, key_index - i); // key frame offset | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                if ((mxf->index_entries[i].flags & 0x20) == 0x20) // only forward | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    mxf->last_key_index = key_index; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            put_byte(pb, mxf->index_entries[i].flags); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            // stream offset | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            put_be64(pb, mxf->index_entries[i].offset - mxf->first_edit_unit_offset); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if (s->nb_streams > 1) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                put_be32(pb, mxf->index_entries[i].slice_offset); | 
															
														
														
													
														
															
																 | 
																 | 
																        } | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																        put_byte(pb, mxf->index_entries[i].flags); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        // stream offset | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        put_be64(pb, mxf->index_entries[i].offset - mxf->first_edit_unit_offset); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (s->nb_streams > 1) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            put_be32(pb, mxf->index_entries[i].slice_offset); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    mxf->last_key_index = key_index - mxf->edit_units_count; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    mxf->last_indexed_edit_unit += mxf->edit_units_count; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    mxf->edit_units_count = 0; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        mxf->last_key_index = key_index - mxf->edit_units_count; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        mxf->last_indexed_edit_unit += mxf->edit_units_count; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        mxf->edit_units_count = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -1207,7 +1206,6 @@ static void mxf_write_partition(AVFormatContext *s, int bodysid, | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    // write klv | 
																 | 
																 | 
																    // write klv | 
															
														
														
													
														
															
																 | 
																 | 
																    put_buffer(pb, key, 16); | 
																 | 
																 | 
																    put_buffer(pb, key, 16); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    klv_encode_ber_length(pb, 88 + 16 * mxf->essence_container_count); | 
																 | 
																 | 
																    klv_encode_ber_length(pb, 88 + 16 * mxf->essence_container_count); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    // write partition value | 
																 | 
																 | 
																    // write partition value | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -1458,12 +1456,12 @@ static int mxf_write_header(AVFormatContext *s) | 
															
														
														
													
														
															
																 | 
																 | 
																        } | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																        if (!sc->index) { | 
																 | 
																 | 
																        if (!sc->index) { | 
															
														
														
													
														
															
																 | 
																 | 
																        sc->index = mxf_get_essence_container_ul_index(st->codec->codec_id); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (sc->index == -1) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            av_log(s, AV_LOG_ERROR, "track %d: could not find essence container ul, " | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																                   "codec not currently supported in container\n", i); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            return -1; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        } | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            sc->index = mxf_get_essence_container_ul_index(st->codec->codec_id); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if (sc->index == -1) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                av_log(s, AV_LOG_ERROR, "track %d: could not find essence container ul, " | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                       "codec not currently supported in container\n", i); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                return -1; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																        } | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																        sc->codec_ul = &mxf_essence_container_uls[sc->index].codec_ul; | 
																 | 
																 | 
																        sc->codec_ul = &mxf_essence_container_uls[sc->index].codec_ul; | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -1473,6 +1471,7 @@ static int mxf_write_header(AVFormatContext *s) | 
															
														
														
													
														
															
																 | 
																 | 
																            present[sc->index] = 1; | 
																 | 
																 | 
																            present[sc->index] = 1; | 
															
														
														
													
														
															
																 | 
																 | 
																        } else | 
																 | 
																 | 
																        } else | 
															
														
														
													
														
															
																 | 
																 | 
																            present[sc->index]++; | 
																 | 
																 | 
																            present[sc->index]++; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																        memcpy(sc->track_essence_element_key, mxf_essence_container_uls[sc->index].element_ul, 15); | 
																 | 
																 | 
																        memcpy(sc->track_essence_element_key, mxf_essence_container_uls[sc->index].element_ul, 15); | 
															
														
														
													
														
															
																 | 
																 | 
																        sc->track_essence_element_key[15] = present[sc->index]; | 
																 | 
																 | 
																        sc->track_essence_element_key[15] = present[sc->index]; | 
															
														
														
													
														
															
																 | 
																 | 
																        PRINT_KEY(s, "track essence element key", sc->track_essence_element_key); | 
																 | 
																 | 
																        PRINT_KEY(s, "track essence element key", sc->track_essence_element_key); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -1770,10 +1769,10 @@ static int mxf_write_footer(AVFormatContext *s) | 
															
														
														
													
														
															
																 | 
																 | 
																    if (mxf->edit_unit_byte_count) { // no need to repeat index | 
																 | 
																 | 
																    if (mxf->edit_unit_byte_count) { // no need to repeat index | 
															
														
														
													
														
															
																 | 
																 | 
																        mxf_write_partition(s, 0, 0, footer_partition_key, 0); | 
																 | 
																 | 
																        mxf_write_partition(s, 0, 0, footer_partition_key, 0); | 
															
														
														
													
														
															
																 | 
																 | 
																    } else { | 
																 | 
																 | 
																    } else { | 
															
														
														
													
														
															
																 | 
																 | 
																    mxf_write_partition(s, 0, 2, footer_partition_key, 0); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        mxf_write_partition(s, 0, 2, footer_partition_key, 0); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    mxf_write_klv_fill(s); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    mxf_write_index_table_segment(s); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        mxf_write_klv_fill(s); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        mxf_write_index_table_segment(s); | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    mxf_write_klv_fill(s); | 
																 | 
																 | 
																    mxf_write_klv_fill(s); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -1806,6 +1805,7 @@ static int mxf_write_footer(AVFormatContext *s) | 
															
														
														
													
														
															
																 | 
																 | 
																    av_freep(&mxf->timecode_track); | 
																 | 
																 | 
																    av_freep(&mxf->timecode_track); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    mxf_free(s); | 
																 | 
																 | 
																    mxf_free(s); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    return 0; | 
																 | 
																 | 
																    return 0; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |