Skip to content

Commit

Permalink
Add support for VkVideoSession
Browse files Browse the repository at this point in the history
  • Loading branch information
dwlsalmeida committed Oct 3, 2023
1 parent 70b5e6b commit cd80a32
Show file tree
Hide file tree
Showing 3 changed files with 407 additions and 4 deletions.
29 changes: 26 additions & 3 deletions examples/src/bin/video.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ use std::sync::Arc;
use vulkano::{
device::{Device, DeviceCreateInfo, DeviceExtensions, QueueCreateInfo, QueueFlags},
image::ImageUsage,
instance::{Instance, InstanceCreateFlags, InstanceCreateInfo, InstanceExtensions},
instance::{Instance, InstanceCreateFlags, InstanceCreateInfo},
video::{
VideoDecodeCapabilityFlags, VideoDecodeH264PictureLayoutFlags, VideoDecodeH264ProfileInfo,
VideoFormatInfo, VideoProfileInfo, VideoProfileListInfo,
VideoFormatInfo, VideoProfileInfo, VideoProfileListInfo, VideoSession,
VideoSessionCreateInfo,
},
VulkanLibrary,
};
Expand Down Expand Up @@ -151,9 +152,31 @@ fn main() {
},
};

let formats = physical_device
let mut formats = physical_device
.video_format_properties(video_format_info)
.unwrap();

println!("video formats: {:#?}", formats);

let format = formats.pop().unwrap();
let h264_extension_properties = physical_device
.extension_properties()
.iter()
.find(|&p| p.extension_name == "VK_STD_vulkan_video_codec_h264_decode")
.expect("h264 extension not found");

let video_session_create_info = VideoSessionCreateInfo {
queue_family_index: video_queue_family_index,
video_profile: profile_info,
picture_format: format.format,
max_coded_extent: video_caps.max_coded_extent,
reference_picture_format: format.format,
max_dpb_slots: video_caps.max_dpb_slots,
max_active_reference_pictures: video_caps.max_active_reference_pictures,
std_header_version: h264_extension_properties.clone(),
..Default::default()
};

let video_session = VideoSession::new(Arc::clone(&device), video_session_create_info).unwrap();
println!("video session: {:#?}", video_session);
}
1 change: 1 addition & 0 deletions vulkano/src/device/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ use crate::{
instance::{Instance, InstanceOwned, InstanceOwnedDebugWrapper},
macros::{impl_id_counter, vulkan_bitflags},
memory::ExternalMemoryHandleType,
video::{VideoSession, VideoSessionCreateInfo},
Requires, RequiresAllOf, RequiresOneOf, Validated, ValidationError, Version, VulkanError,
VulkanObject,
};
Expand Down
Loading

0 comments on commit cd80a32

Please sign in to comment.