Skip to content

codecs: vp9decoder: Reimplement VP9 parser and use it

    codecs: vp9decoder: Allow decoding start with intra-only frame

    As per spec "7.2 Uncompressed header semantics" and
    "8.2 Frame order constraints", decoding can start with intra-only
    frame. This commit is for fixing vp90-2-16-intra-only.webm
    bitstream test failure.
    codecs: vp9decoder: Pass GstVideoCodecFrame to duplicate_picture()

    ... and fix picture duplication logic for vavp9dec
    codecs: vp9decoder: Port to GstVp9StatefulParser

    Use newly implemented VP9 parser. Since new GstVp9FrameHeader
    struct holds all the information of the stream, baseclass will not
    pass parser object to new_sequence() method anymore.
    codecparsers: Reimplement VP9 parser

    Existing VP9 parser implementation doesn't provide information
    required by other stateless decoding APIs (i.e., DXVA and NVDEC),
    specifically loop filter and segmentation parameters might not exist
    current frame. So parser needs to fill the information by using previously
    parsed information.
    We can update the gstvp9parser implementation so that it can provide
    all information required by stateless decoding APIs with a huge API break,
    or adding more ugly struct in it.
    Instead doing as such, this commit introduce a new VP9 parser implementation.

    What is different from existing one?
    * All variables will follow the specification as much as possible:
      VP9 Bitstream & Decoding Process Specification - v0.6 31st March 2016
    * Parser will fill all the required information for decoding frame
      to GstVp9FrameHeader struct. In case of old VP9 parser,
      user needs to read additional data from parser's member variables.
    * GstVp9StatefulParser object struct is completely completely opaque
    codecs: vp9decoder: Don't check codec change with show_existing_frame

    Show existing frame will zero frame_type value but it doesn't mean
    it's keyframe.
Edited by Seungha Yang

Merge request reports