Lines Matching defs:track
193 struct Track *track = tracks->tracks[i];
194 const char *type = track->is_video ? "video" : "audio";
195 snprintf(dirname, sizeof(dirname), "%sQualityLevels(%d)", output_prefix, track->bitrate);
203 for (j = 0; j < track->chunks; j++) {
205 dirname, type, track->offsets[j].time);
206 avio_seek(in, track->offsets[j].offset, SEEK_SET);
216 fprintf(stderr, "failed fragment %d in track %d (%s)\n", j,
217 track->track_id, track->name);
328 struct Track *track = NULL;
334 track_id = avio_rb32(f); /* track id */
335 for (i = start_index; i < tracks->nb_tracks && !track; i++)
337 track = tracks->tracks[i];
338 if (!track) {
344 track->chunks = avio_rb32(f);
345 track->offsets = av_calloc(track->chunks, sizeof(*track->offsets));
346 if (!track->offsets) {
347 track->chunks = 0;
353 for (i = 0; i < track->chunks; i++) {
355 track->offsets[i].time = avio_rb64(f);
356 track->offsets[i].offset = avio_rb64(f);
358 track->offsets[i].time = avio_rb32(f);
359 track->offsets[i].offset = avio_rb32(f);
368 track->offsets[i - 1].duration = track->offsets[i].time -
369 track->offsets[i - 1].time;
371 if (track->chunks > 0) {
372 track->offsets[track->chunks - 1].duration = track->offsets[0].time +
373 track->duration -
374 track->offsets[track->chunks - 1].time;
377 for (i = 0; i < track->chunks; i++) {
378 int64_t duration = read_moof_duration(f, track->offsets[i].offset);
379 if (duration > 0 && llabs(duration - track->offsets[i].duration) > 3) {
382 track->offsets[i].duration = duration;
385 if (track->chunks > 0) {
386 if (track->offsets[track->chunks - 1].duration <= 0) {
387 fprintf(stderr, "Calculated last chunk duration for track %d "
389 "fragments ", track->track_id,
390 track->offsets[track->chunks - 1].duration);
391 if (track->chunks > 1) {
392 track->offsets[track->chunks - 1].duration =
393 track->offsets[track->chunks - 2].duration;
395 track->offsets[track->chunks - 1].duration = 1;
398 track->offsets[track->chunks - 1].duration);
399 track->duration = track->offsets[track->chunks - 1].time +
400 track->offsets[track->chunks - 1].duration -
401 track->offsets[0].time;
403 track->duration);
454 static int get_private_data(struct Track *track, AVCodecParameters *codecpar)
456 track->codec_private_size = 0;
457 track->codec_private = av_mallocz(codecpar->extradata_size);
458 if (!track->codec_private)
460 track->codec_private_size = codecpar->extradata_size;
461 memcpy(track->codec_private, codecpar->extradata, codecpar->extradata_size);
465 static int get_video_private_data(struct Track *track, AVCodecParameters *codecpar)
472 return get_private_data(track, codecpar);
492 track->codec_private_size = avio_close_dyn_buf(io, &track->codec_private);
503 struct Track *track;
529 fprintf(stderr, "Skipping track %d in %s as it has zero bitrate\n",
534 track = av_mallocz(sizeof(*track));
535 if (!track) {
543 av_free(track);
548 tracks->tracks[tracks->nb_tracks] = track;
550 track->name = file;
552 track->name = ptr + 1;
554 track->bitrate = st->codecpar->bit_rate;
555 track->track_id = st->id;
556 track->timescale = st->time_base.den;
557 track->duration = st->duration;
558 track->is_audio = st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO;
559 track->is_video = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO;
561 if (!track->is_audio && !track->is_video) {
564 track->track_id, file);
570 av_rescale_rnd(track->duration, AV_TIME_BASE,
571 track->timescale, AV_ROUND_UP));
573 if (track->is_audio) {
577 track->channels = st->codecpar->ch_layout.nb_channels;
578 track->sample_rate = st->codecpar->sample_rate;
580 track->fourcc = "AACL";
581 track->tag = 255;
582 track->blocksize = 4;
584 track->fourcc = "WMAP";
585 track->tag = st->codecpar->codec_tag;
586 track->blocksize = st->codecpar->block_align;
588 get_private_data(track, st->codecpar);
590 if (track->is_video) {
594 track->width = st->codecpar->width;
595 track->height = st->codecpar->height;
597 track->fourcc = "H264";
599 track->fourcc = "WVC1";
600 get_video_private_data(track, st->codecpar);
641 struct Track *track = tracks->tracks[i];
642 const char *type = track->is_video ? "video" : "audio";
644 type, path_prefix, track->name, track->bitrate);
646 "valueType=\"data\" />\n", track->track_id);
660 struct Track *track = tracks->tracks[main];
663 for (i = 0; i < track->chunks; i++) {
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);
680 i, track->offsets[i].duration);
681 if (pos != track->offsets[i].time) {
682 fprintf(out, "t=\"%"PRId64"\" ", track->offsets[i].time);
683 pos = track->offsets[i].time;
685 pos += track->offsets[i].duration;
710 struct Track *track = tracks->tracks[tracks->video_track];
711 struct Track *first_track = track;
717 tracks->nb_video_tracks, track->chunks);
719 track = tracks->tracks[i];
720 if (!track->is_video)
726 index, track->bitrate, track->fourcc, track->width, track->height);
727 for (j = 0; j < track->codec_private_size; j++)
728 fprintf(out, "%02X", track->codec_private[j]);
731 if (track->chunks != first_track->chunks)
733 track->name, track->track_id, track->chunks, first_track->name, first_track->track_id, first_track->chunks);
739 struct Track *track = tracks->tracks[tracks->audio_track];
740 struct Track *first_track = track;
746 tracks->nb_audio_tracks, track->chunks);
748 track = tracks->tracks[i];
749 if (!track->is_audio)
756 index, track->bitrate, track->fourcc, track->sample_rate,
757 track->channels, track->blocksize, track->tag);
758 for (j = 0; j < track->codec_private_size; j++)
759 fprintf(out, "%02X", track->codec_private[j]);
762 if (track->chunks != first_track->chunks)
764 track->name, first_track->name);