|
|
|
@@ -445,8 +445,21 @@ static int64_t mkv_write_cues(AVFormatContext *s, mkv_cues *cues, mkv_track *tra |
|
|
|
ebml_master cuepoint, track_positions; |
|
|
|
mkv_cuepoint *entry = &cues->entries[i]; |
|
|
|
uint64_t pts = entry->pts; |
|
|
|
int ctp_nb = 0; |
|
|
|
|
|
|
|
cuepoint = start_ebml_master(pb, MATROSKA_ID_POINTENTRY, MAX_CUEPOINT_SIZE(num_tracks)); |
|
|
|
// Calculate the number of entries, so we know the element size |
|
|
|
for (j = 0; j < num_tracks; j++) |
|
|
|
tracks[j].has_cue = 0; |
|
|
|
for (j = 0; j < cues->num_entries - i && entry[j].pts == pts; j++) { |
|
|
|
int tracknum = entry[j].stream_idx; |
|
|
|
av_assert0(tracknum>=0 && tracknum<num_tracks); |
|
|
|
if (tracks[tracknum].has_cue && s->streams[tracknum]->codec->codec_type != AVMEDIA_TYPE_SUBTITLE) |
|
|
|
continue; |
|
|
|
tracks[tracknum].has_cue = 1; |
|
|
|
ctp_nb ++; |
|
|
|
} |
|
|
|
|
|
|
|
cuepoint = start_ebml_master(pb, MATROSKA_ID_POINTENTRY, MAX_CUEPOINT_SIZE(ctp_nb)); |
|
|
|
put_ebml_uint(pb, MATROSKA_ID_CUETIME, pts); |
|
|
|
|
|
|
|
// put all the entries from different tracks that have the exact same |
|
|
|
|