Lines Matching refs:track

475         MXFTrack *track = s->streams[i]->priv_data;
477 if (track && (!body_sid || !track->body_sid || track->body_sid == body_sid) && !memcmp(klv->key + sizeof(mxf_essence_element_key), track->track_number, sizeof(track->track_number)))
480 /* return 0 if only one stream, for OP Atom files with 0 as track number */
1102 MXFTrack *track = arg;
1105 track->track_id = avio_rb32(pb);
1108 avio_read(pb, track->track_number, 4);
1111 mxf_read_utf16be_string(pb, size, &track->name);
1114 track->edit_rate.num = avio_rb32(pb);
1115 track->edit_rate.den = avio_rb32(pb);
1118 avio_read(pb, track->sequence_ref, 16);
2090 MXFTrack *track = mxf->fc->streams[k]->priv_data;
2091 if (track && track->index_sid == t->index_sid) {
2092 mxf_track = track;
2328 /* the source timecode is calculated by adding the start_position of the sourceclip from the file source package track
2333 av_log(mxf->fc, AV_LOG_ERROR, "could not resolve source track strong ref\n");
2338 av_log(mxf->fc, AV_LOG_ERROR, "could not resolve source track sequence strong ref\n");
2357 /* scale sourceclip start_position to match physical track edit rate */
2375 static int mxf_add_metadata_stream(MXFContext *mxf, MXFTrack *track)
2383 for (j = 0; j < track->sequence->structural_components_count; j++) {
2384 component = mxf_resolve_sourceclip(mxf, &track->sequence->structural_components_refs[j]);
2400 st->id = track->track_id;
2405 if (track->name && track->name[0])
2406 av_dict_set(&st->metadata, "track_name", track->name, 0);
2408 codec_ul = mxf_get_codec_ul(ff_mxf_data_definition_uls, &track->sequence->data_definition_ul);
2614 av_log(mxf->fc, AV_LOG_ERROR, "could not resolve material track strong ref\n");
2627 av_log(mxf->fc, AV_LOG_ERROR, "could not resolve material track sequence strong ref\n");
2646 av_log(mxf->fc, AV_LOG_WARNING, "material track %d: has %d components\n",
2656 av_log(mxf->fc, AV_LOG_TRACE, "material track %d: no corresponding source package found\n", material_track->track_id);
2661 av_log(mxf->fc, AV_LOG_ERROR, "could not resolve source track strong ref\n");
2671 av_log(mxf->fc, AV_LOG_ERROR, "material track %d: no corresponding source track found\n", material_track->track_id);
2699 av_log(mxf->fc, AV_LOG_ERROR, "could not resolve source track sequence strong ref\n");
2707 av_log(mxf->fc, AV_LOG_ERROR, "material track %d: DataDefinition mismatch\n", material_track->track_id);
2754 av_log(mxf->fc, AV_LOG_INFO, "source track %d: stream %d, no descriptor found\n", source_track->track_id, st->index);
3433 MXFTrack *track = s->streams[i]->priv_data;
3434 if (track && track->body_sid == body_sid && track->wrapping != UnknownWrapped)
3435 return track->wrapping;
3498 MXFTrack *track = st->priv_data;
3501 if (!track)
3503 track->edit_units_per_packet = 1;
3504 if (track->wrapping != ClipWrapped)
3507 t = mxf_find_index_table(mxf, track->index_sid);
3521 track->edit_units_per_packet = FFMAX(1, track->edit_rate.num / track->edit_rate.den / 25);
3529 MXFTrack *track = st->priv_data;
3536 if (!track || track->wrapping != ClipWrapped)
3539 /* check if track already has an IndexTableSegment */
3543 if (s->body_sid == track->body_sid)
3551 if (mxf->partitions[i].body_sid != track->body_sid)
3582 if (!track->index_sid)
3583 track->index_sid = track->body_sid;
3591 segment->index_sid = track->index_sid;
3765 /* Get the edit unit of the next packet from current_offset in a track. The returned edit unit can be original_duration as well! */
3766 static int mxf_get_next_track_edit_unit(MXFContext *mxf, MXFTrack *track, int64_t current_offset, int64_t *edit_unit_out)
3769 MXFIndexTable *t = mxf_find_index_table(mxf, track->index_sid);
3771 if (!t || track->original_duration <= 0)
3775 b = track->original_duration;
3779 if (mxf_edit_unit_absolute_offset(mxf, t, m, track->edit_rate, NULL, &offset, NULL, 0) < 0)
3795 MXFTrack *track = st->priv_data;
3796 AVRational time_base = av_inv_q(track->edit_rate);
3804 return av_rescale_q(edit_unit, sample_rate, track->edit_rate);
3814 return av_rescale_q(edit_unit, sample_rate, track->edit_rate);
3819 * Make sure track->sample_count is correct based on what offset we're currently at.
3826 MXFTrack *track = st->priv_data;
3827 int64_t edit_unit = av_rescale_q(track->sample_count, st->time_base, av_inv_q(track->edit_rate));
3829 MXFIndexTable *t = mxf_find_index_table(mxf, track->index_sid);
3831 if (!t || track->wrapping == UnknownWrapped)
3834 if (mxf_edit_unit_absolute_offset(mxf, t, edit_unit + track->edit_units_per_packet, track->edit_rate, NULL, &next_ofs, NULL, 0) < 0 &&
3849 if (mxf_get_next_track_edit_unit(mxf, track, current_offset + 1, &new_edit_unit) < 0 || new_edit_unit <= 0) {
3850 av_log(mxf->fc, AV_LOG_ERROR, "failed to find next track edit unit in stream %d\n", st->index);
3855 track->sample_count = mxf_compute_sample_count(mxf, st, new_edit_unit);
3865 MXFTrack *track = st->priv_data;
3871 pkt->pts = track->sample_count;
3876 track->sample_count = mxf_compute_sample_count(mxf, st, av_rescale_q(track->sample_count, st->time_base, av_inv_q(track->edit_rate)) + 1);
3878 track->sample_count += pkt->size / (par->ch_layout.nb_channels * (int64_t)bits_per_sample / 8);
3886 MXFTrack *track = st->priv_data;
3890 MXFIndexTable *t = mxf_find_index_table(mxf, track->index_sid);
3892 if (t && track->sample_count < t->nb_ptses) {
3893 pkt->dts = track->sample_count + t->first_dts;
3894 pkt->pts = t->ptses[track->sample_count];
3895 } else if (track->intra_only) {
3898 pkt->pts = track->sample_count;
3900 track->sample_count++;
3905 } else if (track) {
3906 pkt->dts = pkt->pts = track->sample_count;
3908 track->sample_count++;
3951 MXFTrack *track;
3961 track = st->priv_data;
3968 if (track->wrapping != FrameWrapped) {
4211 { "eia608_extract", "extract eia 608 captions from s436m track",