Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • gst-plugins-bad gst-plugins-bad
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 973
    • Issues 973
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 105
    • Merge requests 105
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GStreamerGStreamer
  • gst-plugins-badgst-plugins-bad
  • Merge requests
  • !1379

va: VA-API H.264 decoder and infrastructure

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Víctor Manuel Jáquez Leal requested to merge vjaquez/gst-plugins-bad:vah264dec into master Jun 26, 2020
  • 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
Reviewers
Request review from
Time tracking
Source branch: vah264dec