int timescale;
char codec_str[30];
int64_t sidx_start, sidx_length;
- int64_t earliest_presentation;
- uint32_t earliest_presentation_timescale;
};
struct Tracks {
if (size < 8)
break;
if (tag == MKBETAG('s', 'i', 'd', 'x')) {
- int version, track_id;
- uint32_t timescale;
- int64_t earliest_presentation;
- version = avio_r8(f);
- avio_rb24(f); /* flags */
- track_id = avio_rb32(f);
- timescale = avio_rb32(f);
- earliest_presentation = version ? avio_rb64(f) : avio_rb32(f);
for (i = start_index; i < tracks->nb_tracks; i++) {
struct Track *track = tracks->tracks[i];
if (!track->sidx_start) {
} else if (pos == track->sidx_start + track->sidx_length) {
track->sidx_length = pos + size - track->sidx_start;
}
- if (track->track_id == track_id) {
- track->earliest_presentation = earliest_presentation;
- track->earliest_presentation_timescale = timescale;
- }
}
}
if (avio_seek(f, pos + size, SEEK_SET) != pos + size)
int nb_tracks_buf[2] = { 0 };
int *nb_tracks;
int set, nb_sets;
- int64_t latest_start = 0;
if (!tracks->multiple_tracks_per_file) {
adaptation_sets = adaptation_sets_buf;
fprintf(out, "\"\n");
fprintf(out, "\tminBufferTime=\"PT5S\">\n");
- for (i = 0; i < tracks->nb_tracks; i++) {
- int64_t start = av_rescale_rnd(tracks->tracks[i]->earliest_presentation,
- AV_TIME_BASE,
- tracks->tracks[i]->earliest_presentation_timescale,
- AV_ROUND_UP);
- latest_start = FFMAX(start, latest_start);
- }
- fprintf(out, "\t<Period start=\"");
- write_time(out, latest_start, 3, AV_ROUND_UP);
- fprintf(out, "\">\n");
-
+ fprintf(out, "\t<Period start=\"PT0.0S\">\n");
for (set = 0; set < nb_sets; set++) {
if (nb_tracks[set] == 0)