pub struct MediaFoundationCaptureDevice { /* private fields */ }
Available on crate feature input-msmf only.
Expand description

The backend that deals with Media Foundation on Windows. To see what this does, please see CaptureBackendTrait.

Note: This requires Windows 7 or newer to work.

Quirks

  • This does build on non-windows platforms, however when you do the backend will be empty and will return an error for any given operation.
  • Please check nokhwa-bindings-windows source code to see the internal raw interface.
  • The symbolic link for the device is listed in the misc attribute of the CameraInfo.
  • The names may contain invalid characters since they were converted from UTF16.
  • When you call new or drop the struct, initialize/de_initialize will automatically be called.

Implementations§

source§

impl MediaFoundationCaptureDevice

source

pub fn new( index: &CameraIndex, camera_fmt: RequestedFormat<'_> ) -> Result<Self, NokhwaError>

Creates a new capture device using the Media Foundation backend. Indexes are gives to devices by the OS, and usually numbered by order of discovery.

Errors

This function will error if Media Foundation fails to get the device.

source

pub fn new_with( index: &CameraIndex, width: u32, height: u32, fps: u32, fourcc: FrameFormat ) -> Result<Self, NokhwaError>

👎Deprecated since 0.10.0: please use new instead.

Create a new Media Foundation Device with desired settings.

Errors

This function will error if Media Foundation fails to get the device.

source

pub fn supported_camera_controls(&self) -> Vec<KnownCameraControl>

Gets the list of supported KnownCameraControls

Errors

May error if there is an error from MediaFoundation.

Trait Implementations§

source§

impl CaptureBackendTrait for MediaFoundationCaptureDevice

source§

fn backend(&self) -> ApiBackend

Returns the current backend used.
source§

fn camera_info(&self) -> &CameraInfo

Gets the camera information such as Name and Index as a CameraInfo.
source§

fn refresh_camera_format(&mut self) -> Result<(), NokhwaError>

Forcefully refreshes the stored camera format, bringing it into sync with “reality” (current camera state) Read more
source§

fn camera_format(&self) -> CameraFormat

Gets the current CameraFormat. This will force refresh to the current latest if it has changed.
source§

fn set_camera_format( &mut self, new_fmt: CameraFormat ) -> Result<(), NokhwaError>

Will set the current CameraFormat This will reset the current stream if used while stream is opened. Read more
source§

fn compatible_list_by_resolution( &mut self, fourcc: FrameFormat ) -> Result<HashMap<Resolution, Vec<u32>>, NokhwaError>

A hashmap of Resolutions mapped to framerates. Not sorted! Read more
source§

fn compatible_fourcc(&mut self) -> Result<Vec<FrameFormat>, NokhwaError>

A Vector of compatible FrameFormats. Will only return 2 elements at most. Read more
source§

fn resolution(&self) -> Resolution

Gets the current camera resolution (See: Resolution, CameraFormat). This will force refresh to the current latest if it has changed.
source§

fn set_resolution(&mut self, new_res: Resolution) -> Result<(), NokhwaError>

Will set the current Resolution This will reset the current stream if used while stream is opened. Read more
source§

fn frame_rate(&self) -> u32

Gets the current camera framerate (See: CameraFormat). This will force refresh to the current latest if it has changed.
source§

fn set_frame_rate(&mut self, new_fps: u32) -> Result<(), NokhwaError>

Will set the current framerate This will reset the current stream if used while stream is opened. Read more
source§

fn frame_format(&self) -> FrameFormat

Gets the current camera’s frame format (See: FrameFormat, CameraFormat). This will force refresh to the current latest if it has changed.
source§

fn set_frame_format(&mut self, fourcc: FrameFormat) -> Result<(), NokhwaError>

Will set the current FrameFormat This will reset the current stream if used while stream is opened. Read more
source§

fn camera_control( &self, control: KnownCameraControl ) -> Result<CameraControl, NokhwaError>

Gets the value of KnownCameraControl. Read more
source§

fn camera_controls(&self) -> Result<Vec<CameraControl>, NokhwaError>

Gets the current supported list of KnownCameraControl Read more
source§

fn set_camera_control( &mut self, id: KnownCameraControl, value: ControlValueSetter ) -> Result<(), NokhwaError>

Sets the control to control in the camera. Usually, the pipeline is calling camera_control(), getting a camera control that way then calling value() to get a ControlValueSetter and setting the value that way. Read more
source§

fn open_stream(&mut self) -> Result<(), NokhwaError>

Will open the camera stream with set parameters. This will be called internally if you try and call frame() before you call open_stream(). Read more
source§

fn is_stream_open(&self) -> bool

Checks if stream if open. If it is, it will return true.
source§

fn frame(&mut self) -> Result<Buffer, NokhwaError>

Will get a frame from the camera as a Buffer. Depending on the backend, if you have not called open_stream() before you called this, it will either return an error. Read more
source§

fn frame_raw(&mut self) -> Result<Cow<'_, [u8]>, NokhwaError>

Will get a frame from the camera without any processing applied, meaning you will usually get a frame you need to decode yourself. Read more
source§

fn stop_stream(&mut self) -> Result<(), NokhwaError>

Will drop the stream. Read more
source§

fn compatible_camera_formats( &mut self ) -> Result<Vec<CameraFormat, Global>, NokhwaError>

Gets the compatible CameraFormat of the camera Read more
source§

fn decoded_buffer_size(&self, alpha: bool) -> usize

The minimum buffer size needed to write the current frame. If alpha is true, it will instead return the minimum size of the buffer with an alpha channel as well. This assumes that you are decoding to RGB/RGBA for FrameFormat::MJPEG or FrameFormat::YUYV and Luma8/LumaA8 for FrameFormat::GRAY
source§

fn frame_texture<'a>( &mut self, device: &Device, queue: &Queue, label: Option<&'a str> ) -> Result<Texture, NokhwaError>

Available on crate feature wgpu-types only.
Directly copies a frame to a Wgpu texture. This will automatically convert the frame into a RGBA frame. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>