You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The earlier code had several flaws:
1. It was very slow, because finding a matching block always started
with the very first block in the first cluster and checked every block
until an acceptable block (one with the right timestamp from the right
track) had been found.
2. Only one CueTrackPositions (namely the first one) has been checked
per CuePoint, although there can be multiple CueTrackPositions.
3. If e.g. no CueTrack element was present, one got a generic error
(error code 0x200), because a mandatory element was missing; but
MATROSKA_CueTrackNum returned -1 (for invalid TrackNum) and so one also
received a nonsense error 0x312: "CueEntry Track #-1 and timecode xxx ms
not found".
4. The CueClusterPosition and CueRelativePosition elements have not been
checked at all.
All four points have been corrected.
(mkvmerge versions 5.9 to 6.3 (inclusive) wrote CueRelativePosition
elements that (in case of BlockGroups) pointed to the inner blocks and
not the outer BlockGroups. mkvalidator now detects such files as
invalid.)
Signed-off-by: Andreas Rheinhardt <[email protected]>
if (TimecodeEntry<PrevTimecode&&PrevTimecode!=INVALID_TIMECODE_T)
880
881
OutputWarning(0x311,T("The Cues entry for timecode %") TPRId64T(" ms is listed after entry %") TPRId64T(" ms"),Scale64(TimecodeEntry,1,1000000),Scale64(PrevTimecode,1,1000000));
881
882
882
-
// find a matching Block
883
-
for (Cluster=ARRAYBEGIN(RClusters,matroska_cluster*);Cluster!=ARRAYEND(RClusters,matroska_cluster*); ++Cluster)
0 commit comments