Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
gst-plugins-bad
gst-plugins-bad
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 998
    • Issues 998
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 202
    • Merge Requests 202
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • GStreamer
  • gst-plugins-badgst-plugins-bad
  • Merge Requests
  • !1379

Merged
Opened Jun 26, 2020 by Víctor Manuel Jáquez Leal@vjaquezMaintainer

va: VA-API H.264 decoder and infrastructure

  • Overview 20
  • Commits 1
  • Pipelines 16
  • Changes 26

New plugin with an element for H.264 decoding with VA-API. This novel approach, different from gstreamer-vaapi, uses gstcodecs library for state handling.

The code is expected to looks cleaner because it uses VA-API without further layers or wrappers.

  • It uses the first supported DRM device as default VA display (other displays will be supported through user's GstContext)
  • Requires libva >= 1.6
  • No multiview/stereo profiles neither interlaced streams because gstcodecs doesn't handle them yet
  • It is incompatible with gstreamer-vaapi
  • Even if memory:VAMemory is exposed, it is not handled yet by any other element
  • Caps templates are generated dynamically querying VAAPI, but YV12 and I420 are added for system memory caps because they seem to be supported for all the drivers when downloading frames onto main memory, as they are used by xvimagesink and others, avoiding color conversion.
  • Surfaces aren't bounded to context, so they can grow beyond the DBP size, allowing smooth reverse playback.
  • There isn't yet error handling and recovery.
  • 10-bit H.264 streams aren't supported by libva.
  • The element is supposed to spawn if different renderD nodes with vaapi driver support are found (like gstv4l2), but it is not tested.

Sorry for the big code dump :(

Another thing I would like to discuss are the c99 initialitators used in the code. IMHO they make the code look cleaner.

Edited Jun 27, 2020 by Víctor Manuel Jáquez Leal
Assignee
Assign to
Reviewer
Request review from
1.17.2
Milestone
1.17.2 (Past due)
Assign milestone
Time tracking
Reference: gstreamer/gst-plugins-bad!1379
Source branch: vah264dec