ffmpeg_the_third/device/
input.rs1use std::ptr;
2
3use crate::ffi::*;
4use crate::format;
5
6pub struct AudioIter(*const AVInputFormat);
7
8impl Iterator for AudioIter {
9 type Item = format::Input;
10
11 fn next(&mut self) -> Option<<Self as Iterator>::Item> {
12 unsafe {
13 let ptr = av_input_audio_device_next(self.0);
14
15 if let Some(input) = format::Input::from_raw(ptr) {
16 self.0 = ptr;
17 Some(input)
18 } else {
19 None
20 }
21 }
22 }
23}
24
25pub fn audio() -> AudioIter {
26 AudioIter(ptr::null())
27}
28
29pub struct VideoIter(*const AVInputFormat);
30
31impl Iterator for VideoIter {
32 type Item = format::Input;
33
34 fn next(&mut self) -> Option<<Self as Iterator>::Item> {
35 unsafe {
36 let ptr = av_input_video_device_next(self.0);
37
38 if let Some(input) = format::Input::from_raw(ptr) {
39 self.0 = ptr;
40 Some(input)
41 } else {
42 None
43 }
44 }
45 }
46}
47
48pub fn video() -> VideoIter {
49 VideoIter(ptr::null())
50}