Lines Matching refs:tracks

91     struct Track **tracks;  member
176 static int write_fragments(struct Tracks *tracks, int start_index, in write_fragments() argument
193 for (i = start_index; i < tracks->nb_tracks; i++) { in write_fragments()
194 struct Track *track = tracks->tracks[i]; in write_fragments()
229 static int read_tfra(struct Tracks *tracks, int start_index, AVIOContext *f) in read_tfra() argument
242 for (i = start_index; i < tracks->nb_tracks && !track; i++) in read_tfra()
243 if (tracks->tracks[i]->track_id == track_id) in read_tfra()
244 track = tracks->tracks[i]; in read_tfra()
285 static int read_mfra(struct Tracks *tracks, int start_index, in read_mfra() argument
309 while (!read_tfra(tracks, start_index, f)) { in read_mfra()
314 err = write_fragments(tracks, start_index, f, basename, split, ismf, in read_mfra()
367 static int handle_file(struct Tracks *tracks, const char *file, int split, in handle_file() argument
372 int err = 0, i, orig_tracks = tracks->nb_tracks; in handle_file()
410 temp = av_realloc(tracks->tracks, in handle_file()
411 sizeof(*tracks->tracks) * (tracks->nb_tracks + 1)); in handle_file()
417 tracks->tracks = temp; in handle_file()
418 tracks->tracks[tracks->nb_tracks] = track; in handle_file()
435 av_freep(&tracks->tracks[tracks->nb_tracks]); in handle_file()
439 tracks->duration = FFMAX(tracks->duration, in handle_file()
444 if (tracks->audio_track < 0) in handle_file()
445 tracks->audio_track = tracks->nb_tracks; in handle_file()
446 tracks->nb_audio_tracks++; in handle_file()
461 if (tracks->video_track < 0) in handle_file()
462 tracks->video_track = tracks->nb_tracks; in handle_file()
463 tracks->nb_video_tracks++; in handle_file()
473 tracks->nb_tracks++; in handle_file()
478 err = read_mfra(tracks, orig_tracks, file, split, ismf, basename, in handle_file()
487 static void output_server_manifest(struct Tracks *tracks, const char *basename, in output_server_manifest() argument
510 for (i = 0; i < tracks->nb_tracks; i++) { in output_server_manifest()
511 struct Track *track = tracks->tracks[i]; in output_server_manifest()
525 static void print_track_chunks(FILE *out, struct Tracks *tracks, int main, in print_track_chunks() argument
529 struct Track *track = tracks->tracks[main]; in print_track_chunks()
533 for (j = main + 1; j < tracks->nb_tracks; j++) { in print_track_chunks()
534 if (tracks->tracks[j]->is_audio == track->is_audio) { in print_track_chunks()
535 if (track->offsets[i].duration != tracks->tracks[j]->offsets[i].duration) { in print_track_chunks()
537 type, i, track->name, main, tracks->tracks[j]->name, j); in print_track_chunks()
540 if (track->offsets[i].time != tracks->tracks[j]->offsets[i].time) { in print_track_chunks()
543 type, i, track->name, main, tracks->tracks[j]->name, j); in print_track_chunks()
553 static void output_client_manifest(struct Tracks *tracks, const char *basename, in output_client_manifest() argument
571 "Duration=\"%"PRId64 "\">\n", tracks->duration * 10); in output_client_manifest()
572 if (tracks->video_track >= 0) { in output_client_manifest()
573 struct Track *track = tracks->tracks[tracks->video_track]; in output_client_manifest()
580 tracks->nb_video_tracks, track->chunks); in output_client_manifest()
581 for (i = 0; i < tracks->nb_tracks; i++) { in output_client_manifest()
582 track = tracks->tracks[i]; in output_client_manifest()
598 print_track_chunks(out, tracks, tracks->video_track, "video"); in output_client_manifest()
601 if (tracks->audio_track >= 0) { in output_client_manifest()
602 struct Track *track = tracks->tracks[tracks->audio_track]; in output_client_manifest()
609 tracks->nb_audio_tracks, track->chunks); in output_client_manifest()
610 for (i = 0; i < tracks->nb_tracks; i++) { in output_client_manifest()
611 track = tracks->tracks[i]; in output_client_manifest()
629 print_track_chunks(out, tracks, tracks->audio_track, "audio"); in output_client_manifest()
636 static void clean_tracks(struct Tracks *tracks) in clean_tracks() argument
639 for (i = 0; i < tracks->nb_tracks; i++) { in clean_tracks()
640 av_freep(&tracks->tracks[i]->codec_private); in clean_tracks()
641 av_freep(&tracks->tracks[i]->offsets); in clean_tracks()
642 av_freep(&tracks->tracks[i]); in clean_tracks()
644 av_freep(&tracks->tracks); in clean_tracks()
645 tracks->nb_tracks = 0; in clean_tracks()
655 struct Tracks tracks = { 0, .video_track = -1, .audio_track = -1 }; in main() local
686 if (handle_file(&tracks, argv[i], split, ismf, in main()
691 if (!tracks.nb_tracks || (!basename && !split)) in main()
695 output_server_manifest(&tracks, basename, output_prefix, in main()
697 output_client_manifest(&tracks, basename, output_prefix, split); in main()
699 clean_tracks(&tracks); in main()