Struct nokhwa::backends::capture::MediaFoundationCaptureDevice
source · 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 theCameraInfo
. - 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
impl MediaFoundationCaptureDevice
sourcepub fn new(
index: &CameraIndex,
camera_fmt: RequestedFormat<'_>
) -> Result<Self, NokhwaError>
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.
sourcepub 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.
pub fn new_with( index: &CameraIndex, width: u32, height: u32, fps: u32, fourcc: FrameFormat ) -> Result<Self, NokhwaError>
new
instead.Create a new Media Foundation Device with desired settings.
Errors
This function will error if Media Foundation fails to get the device.
sourcepub fn supported_camera_controls(&self) -> Vec<KnownCameraControl>
pub fn supported_camera_controls(&self) -> Vec<KnownCameraControl>
Gets the list of supported KnownCameraControl
s
Errors
May error if there is an error from MediaFoundation
.
Trait Implementations§
source§impl CaptureBackendTrait for MediaFoundationCaptureDevice
impl CaptureBackendTrait for MediaFoundationCaptureDevice
source§fn backend(&self) -> ApiBackend
fn backend(&self) -> ApiBackend
Returns the current backend used.
source§fn camera_info(&self) -> &CameraInfo
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>
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
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>
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 moresource§fn compatible_list_by_resolution(
&mut self,
fourcc: FrameFormat
) -> Result<HashMap<Resolution, Vec<u32>>, NokhwaError>
fn compatible_list_by_resolution( &mut self, fourcc: FrameFormat ) -> Result<HashMap<Resolution, Vec<u32>>, NokhwaError>
A hashmap of
Resolution
s mapped to framerates. Not sorted! Read moresource§fn compatible_fourcc(&mut self) -> Result<Vec<FrameFormat>, NokhwaError>
fn compatible_fourcc(&mut self) -> Result<Vec<FrameFormat>, NokhwaError>
A Vector of compatible
FrameFormat
s. Will only return 2 elements at most. Read moresource§fn resolution(&self) -> Resolution
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>
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 moresource§fn frame_rate(&self) -> u32
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>
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
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>
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 moresource§fn camera_control(
&self,
control: KnownCameraControl
) -> Result<CameraControl, NokhwaError>
fn camera_control( &self, control: KnownCameraControl ) -> Result<CameraControl, NokhwaError>
Gets the value of
KnownCameraControl
. Read moresource§fn camera_controls(&self) -> Result<Vec<CameraControl>, NokhwaError>
fn camera_controls(&self) -> Result<Vec<CameraControl>, NokhwaError>
Gets the current supported list of
KnownCameraControl
Read moresource§fn set_camera_control(
&mut self,
id: KnownCameraControl,
value: ControlValueSetter
) -> Result<(), NokhwaError>
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 moresource§fn open_stream(&mut self) -> Result<(), NokhwaError>
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 moresource§fn is_stream_open(&self) -> bool
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>
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 moresource§fn frame_raw(&mut self) -> Result<Cow<'_, [u8]>, NokhwaError>
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>
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>
fn compatible_camera_formats( &mut self ) -> Result<Vec<CameraFormat, Global>, NokhwaError>
Gets the compatible
CameraFormat
of the camera Read moresource§fn decoded_buffer_size(&self, alpha: bool) -> usize
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
Auto Trait Implementations§
impl RefUnwindSafe for MediaFoundationCaptureDevice
impl Send for MediaFoundationCaptureDevice
impl Sync for MediaFoundationCaptureDevice
impl Unpin for MediaFoundationCaptureDevice
impl UnwindSafe for MediaFoundationCaptureDevice
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more