Lines Matching defs:tracks
90 struct Track **tracks;
175 static int write_fragments(struct Tracks *tracks, int start_index,
192 for (i = start_index; i < tracks->nb_tracks; i++) {
193 struct Track *track = tracks->tracks[i];
322 static int read_tfra(struct Tracks *tracks, int start_index, AVIOContext *f)
335 for (i = start_index; i < tracks->nb_tracks && !track; i++)
336 if (tracks->tracks[i]->track_id == track_id)
337 track = tracks->tracks[i];
413 static int read_mfra(struct Tracks *tracks, int start_index,
437 while (!read_tfra(tracks, start_index, f)) {
442 err = write_fragments(tracks, start_index, f, basename, split, ismf,
496 static int handle_file(struct Tracks *tracks, const char *file, int split,
501 int err = 0, i, orig_tracks = tracks->nb_tracks;
539 temp = av_realloc_array(tracks->tracks,
540 tracks->nb_tracks + 1,
541 sizeof(*tracks->tracks));
547 tracks->tracks = temp;
548 tracks->tracks[tracks->nb_tracks] = track;
565 av_freep(&tracks->tracks[tracks->nb_tracks]);
569 tracks->duration = FFMAX(tracks->duration,
574 if (tracks->audio_track < 0)
575 tracks->audio_track = tracks->nb_tracks;
576 tracks->nb_audio_tracks++;
591 if (tracks->video_track < 0)
592 tracks->video_track = tracks->nb_tracks;
593 tracks->nb_video_tracks++;
603 tracks->nb_tracks++;
608 err = read_mfra(tracks, orig_tracks, file, split, ismf, basename,
617 static void output_server_manifest(struct Tracks *tracks, const char *basename,
640 for (i = 0; i < tracks->nb_tracks; i++) {
641 struct Track *track = tracks->tracks[i];
655 static void print_track_chunks(FILE *out, struct Tracks *tracks, int main,
660 struct Track *track = tracks->tracks[main];
664 for (j = main + 1; j < tracks->nb_tracks; j++) {
665 if (tracks->tracks[j]->is_audio == track->is_audio) {
666 if (track->offsets[i].duration != tracks->tracks[j]->offsets[i].duration) {
668 type, i, track->name, main, tracks->tracks[j]->name, j);
671 if (track->offsets[i].time != tracks->tracks[j]->offsets[i].time) {
674 type, i, track->name, main, tracks->tracks[j]->name, j);
690 static void output_client_manifest(struct Tracks *tracks, const char *basename,
708 "Duration=\"%"PRId64 "\">\n", tracks->duration * 10);
709 if (tracks->video_track >= 0) {
710 struct Track *track = tracks->tracks[tracks->video_track];
717 tracks->nb_video_tracks, track->chunks);
718 for (i = 0; i < tracks->nb_tracks; i++) {
719 track = tracks->tracks[i];
735 print_track_chunks(out, tracks, tracks->video_track, "video");
738 if (tracks->audio_track >= 0) {
739 struct Track *track = tracks->tracks[tracks->audio_track];
746 tracks->nb_audio_tracks, track->chunks);
747 for (i = 0; i < tracks->nb_tracks; i++) {
748 track = tracks->tracks[i];
766 print_track_chunks(out, tracks, tracks->audio_track, "audio");
773 static void clean_tracks(struct Tracks *tracks)
776 for (i = 0; i < tracks->nb_tracks; i++) {
777 av_freep(&tracks->tracks[i]->codec_private);
778 av_freep(&tracks->tracks[i]->offsets);
779 av_freep(&tracks->tracks[i]);
781 av_freep(&tracks->tracks);
782 tracks->nb_tracks = 0;
792 struct Tracks tracks = { 0, .video_track = -1, .audio_track = -1 };
821 if (handle_file(&tracks, argv[i], split, ismf,
826 if (!tracks.nb_tracks || (!basename && !split))
830 output_server_manifest(&tracks, basename, output_prefix,
832 output_client_manifest(&tracks, basename, output_prefix, split);
834 clean_tracks(&tracks);