X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihed-cros-libva%2Fsrc%2Fsurface.rs;h=2a77a39d7d61b4839a806b7677427595e7bc7f4f;hb=49bf1d79384ecf1b28822101233719fb1c1b29b1;hp=ddc1f157d3b591bc7091c087baa647fa94f9e9f3;hpb=379fea7e311111ee1dfefba1526979e69073c650;p=nihav-player.git diff --git a/nihed-cros-libva/src/surface.rs b/nihed-cros-libva/src/surface.rs index ddc1f15..2a77a39 100644 --- a/nihed-cros-libva/src/surface.rs +++ b/nihed-cros-libva/src/surface.rs @@ -6,6 +6,7 @@ use std::rc::Rc; use crate::bindings; use crate::display::Display; +use crate::formats::{RTFormat, VAFourcc}; use crate::status::*; use crate::UsageHints; @@ -22,8 +23,8 @@ impl Surface { /// [`Display::create_surfaces`]. pub(crate) fn new( display: Rc, - rt_format: u32, - va_fourcc: Option, + rt_format: RTFormat, + va_fourcc: Option, width: u32, height: u32, usage_hints: Option, @@ -67,7 +68,7 @@ impl Surface { (unsafe { bindings::vaCreateSurfaces( display.handle(), - rt_format, + rt_format.into(), width, height, surfaces.as_mut_ptr(), @@ -111,14 +112,20 @@ impl Surface { } /// Wrapper over `vaQuerySurfaceStatus` to find out any pending ops on the render target. - pub fn query_status(&self) -> VAResult { + pub fn query_status(&self) -> VAResult { let mut status: bindings::VASurfaceStatus::Type = 0; // Safe because `self` represents a valid VASurface. (unsafe { bindings::vaQuerySurfaceStatus(self.display.handle(), self.id, &mut status) }) .check()?; - Ok(status) + match status { + bindings::VASurfaceStatus::VASurfaceRendering => Ok(VASurfaceStatus::Rendering), + bindings::VASurfaceStatus::VASurfaceDisplaying => Ok(VASurfaceStatus::Displaying), + bindings::VASurfaceStatus::VASurfaceReady => Ok(VASurfaceStatus::Ready), + bindings::VASurfaceStatus::VASurfaceSkipped => Ok(VASurfaceStatus::Skipped), + _ => Err(VAError::Unknown), + } } /// Returns the ID of this surface.