Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mkvalidator: Fix parsing of Video element and checking of cues #39

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Commits on Jan 27, 2019

  1. mkvalidator: Fix parsing of Video elements

    The earlier code checked the PixelCrop* elements as if they applied
    after the scaling to DisplayWidth/Height has been done.
    
    Furthermore some checks have been improved (the earlier code didn't
    check whether PixelWidth/Height is zero). Moreover a heuristic check
    has been added to test whether it has been forgotten to update
    DisplayWidth/Height in light of the PixelCrop* elements.
    
    Signed-off-by: Andreas Rheinhardt <[email protected]>
    mkver committed Jan 27, 2019
    Configuration menu
    Copy the full SHA
    0e6dc3e View commit details
    Browse the repository at this point in the history
  2. mkvalidator: Fix calculating amount of void data

    Signed-off-by: Andreas Rheinhardt <[email protected]>
    mkver committed Jan 27, 2019
    Configuration menu
    Copy the full SHA
    e764d21 View commit details
    Browse the repository at this point in the history

Commits on Jan 28, 2019

  1. mkvalidator: Accept more void data

    The current level basically ensures that files produced by mkvmerge
    produce a warning, although they don't use an excessive amount of void
    data. So raise the arbitrary threshold a bit to make this warning
    meaningful.
    
    Signed-off-by: Andreas Rheinhardt <[email protected]>
    mkver committed Jan 28, 2019
    Configuration menu
    Copy the full SHA
    3079e62 View commit details
    Browse the repository at this point in the history

Commits on Jan 30, 2019

  1. libmatroska2: Improve MATROSKA_CuePosInSegment

    This function seems to have been copied and pasted from
    MATROSKA_CueTimeCode, with only minimal modifications performed to make
    it do what its name suggest. This means that a variable that never
    stores a time is called TimeCode and that the function returns
    INVALID_TIMECODE_T instead of INVALID_FILEPOS_T. These things have been
    changed.
    
    Signed-off-by: Andreas Rheinhardt <[email protected]>
    mkver committed Jan 30, 2019
    Configuration menu
    Copy the full SHA
    374b3c9 View commit details
    Browse the repository at this point in the history

Commits on Feb 7, 2019

  1. libmatroska2: Add variant of MATROSKA_GetBlockForTimecode

    The differences of MATROSKA_GetNextBlockForTimecode and the classical
    MATROSKA_GetBlockForTimecode are threefold:
    1. The new function can return both the inner Block as well as the outer
    BlockGroup based upon a parameter (that is irrelevant for SimpleBlocks).
    2. Consequently the return value is a pointer to an ebml_element and no
    longer a matroska_block*.
    3. It also allows to get a matching block that is not the first matching
    block in a cluster.
    This commit is in preparation of a patch for mkvalidator.
    
    Signed-off-by: Andreas Rheinhardt <[email protected]>
    mkver committed Feb 7, 2019
    Configuration menu
    Copy the full SHA
    4667ef8 View commit details
    Browse the repository at this point in the history

Commits on Feb 8, 2019

  1. mkvalidator: Fix checking of cues

    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]>
    mkver committed Feb 8, 2019
    Configuration menu
    Copy the full SHA
    af66147 View commit details
    Browse the repository at this point in the history