[Bug 770921] New: vaapidecoder loses input caps info

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Sep 6 03:23:32 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=770921

            Bug ID: 770921
           Summary: vaapidecoder loses input caps info
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gstreamer-vaapi
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: thaytan at noraisin.net
        QA Contact: gstreamer-bugs at lists.freedesktop.org
                CC: bsreerenj at gmail.com, vjaquez at igalia.com
     GNOME version: ---

When first created, the vaapidecoder takes the input state caps and generates
codec_state, which is then managed / updated only by the decoder and changes
are notified to vaapidecode via the gst_vaapi_decoder_state_changed() callback.

Any changes the base decoder makes to the state will completely override the
input_state - even if it's been subsequently updated by new sink caps.

This is a problem when the initial caps are incomplete and updated later. For
example:

video/x-h264, stream-format=(string)byte-stream, alignment=(string)nal,
parsed=(boolean)true

then later

video/x-h264, width=(int)1280, height=(int)1080, framerate=(fraction)25/1,
pixel-aspect-ratio=(fraction)3/2, profile=(string)high,
stream-format=(string)byte-stream, alignment=(string)nal, parsed=(boolean)true,
level=(string)4

Later again, when the H.264 decoder realises the stream is interlaced, it will
update the internal codec_state and then destroy the new info that arrived in
the later caps, and the result will be output caps with:

video/x-raw(memory:VASurface), format=(string)NV12, width=(int)1280,
height=(int)1080, interlace-mode=(string)interleaved,
pixel-aspect-ratio=(fraction)3/2, chroma-site=(string)mpeg2,
colorimetry=(string)bt709, framerate=(fraction)0/1

(the framerate has been lost)

That then means that vaapipostproc outputs both fields with identical
timestamps after deinterlacing, because it's lost the frame duration.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list