ffmpeg_next/device/
input.rs

1use std::ptr;
2
3use ffi::*;
4use format;
5use Format;
6
7pub struct AudioIter(*mut AVInputFormat);
8
9impl Iterator for AudioIter {
10    type Item = Format;
11
12    fn next(&mut self) -> Option<<Self as Iterator>::Item> {
13        unsafe {
14            // We get a clippy warning in 4.4 but not in 5.0 and newer, so we allow that cast to not complicate the code
15            #[allow(clippy::unnecessary_cast)]
16            let ptr = av_input_audio_device_next(self.0) as *mut AVInputFormat;
17
18            if ptr.is_null() && !self.0.is_null() {
19                None
20            } else {
21                self.0 = ptr;
22
23                Some(Format::Input(format::Input::wrap(ptr)))
24            }
25        }
26    }
27}
28
29pub fn audio() -> AudioIter {
30    AudioIter(ptr::null_mut())
31}
32
33pub struct VideoIter(*mut AVInputFormat);
34
35impl Iterator for VideoIter {
36    type Item = Format;
37
38    fn next(&mut self) -> Option<<Self as Iterator>::Item> {
39        unsafe {
40            // We get a clippy warning in 4.4 but not in 5.0 and newer, so we allow that cast to not complicate the code
41            #[allow(clippy::unnecessary_cast)]
42            let ptr = av_input_video_device_next(self.0) as *mut AVInputFormat;
43
44            if ptr.is_null() && !self.0.is_null() {
45                None
46            } else {
47                self.0 = ptr;
48
49                Some(Format::Input(format::Input::wrap(ptr)))
50            }
51        }
52    }
53}
54
55pub fn video() -> VideoIter {
56    VideoIter(ptr::null_mut())
57}