Giter VIP home page Giter VIP logo

vk_video_samples's Introduction

VK_VULKAN_VIDEO

This project conatins two Vulkan Video sample applications which demonstrate video decoding and encoding, respectively. These samples can be independently compiled. Instructions on how to build either the encoder or decoder sample are present within each respective folder.

VK_VIDEO_DECODE

vk_video_decode

This project is a Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content. The application decodes the h.264/5 compressed content using an HW accelerated decoder, the decoded YCbCr frames are processed with Vulkan Graphics and then presented via the Vulkan WSI.

Currently, the sample application supports Linux and Windows10 operating systems.

Features

  • Extracts (DEMUX via FFMPEG) compressed video from .mp4, .mkv .mov and others video containers using h.264 (AVC) or h.265 (HEVC) compression formats.
  • The HW video decoder processes textures to Vulkan Video Images that can be directly sampled from Vulkan Samplers (Textures).
  • Converts the YCbCr (YUV) Images to RGB while sampling the decoded images using the VK_KHR_sampler_ycbcr_conversion
  • Displays the post-processed video frames using Vulkan WSI.
  • Provides the h.264/5 SPS/PPS video picture parameters inlined with each frame's parameters. This isn't compliant with the Vulkan Video Specification. Proper handling of such parameters must be done using an object of type VkVideoSessionParametersKHR.
  • Added support for VkVideoSessionParametersKHR for full compliance with the Vulkan Video Specification.
  • Use Video display timing synchronization (such as VK_EXT_present_timing) at the WSI side - currently the video is played at the maximum frame rate that the display device can support. The video may be played at a faster rate than it is authored.
  • Convert the sample's framework to be compatible with the rest of the nvpro-samples.

For instructions on how to build the sample decode application, please see the build instructions.

Please download and install Beta NVIDIA Driver with Vulkan Video Enabled.

For Vulkan Video Specification please refer to Vulkan Spec with Video Extensions.

For deep-dive information on Vulkan Video please refer to the Deep Dive Slide Deck.

VK_VIDEO_ENCODE

This project is a Nvpro-based Vulkan Video sample application demonstrating video encoding. By using the Vulkan video encoding extensions to drive the HW-accelerated video encoder, this application encodes YCbCr content and writes the h.264 compressed video to a file.

The sample is currently limited to YCbCr 4:2:0 8bpp files and all-Intra GOP structure.

Currently, the sample application supports Linux and Windows10 operating systems.

Features

  • Compatibility with the remaining nvpro-samples.
  • Video encoding using h.264 standard.
  • Support for all-Intra GOP structure.
  • Support for P frames.
  • Support for B frames.
  • Encoding frames from graphical application.
  • Different YCbCr chroma subsampling and bit depth options.
  • Support for h.265 standard.

For instructions on how to build the sample decode application, please see the build instructions.

Please download and install Beta NVIDIA Driver with Vulkan Video Enabled.

For Vulkan Video Specification please refer to Vulkan Spec with Video Extensions.

For deep-dive information on Vulkan Video please refer to the Deep Dive Slide Deck.

vk_video_samples's People

Contributors

rjmontas avatar tlorach avatar zlatinski avatar

Watchers

 avatar

Forkers

pdiaz

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.