1extern crate ffmpeg_next as ffmpeg;
2
3use std::env;
4
5fn main() {
6 ffmpeg::init().unwrap();
7
8 for arg in env::args().skip(1) {
9 if let Some(codec) = ffmpeg::decoder::find_by_name(&arg) {
10 println!("type: decoder");
11 println!("\t id: {:?}", codec.id());
12 println!("\t name: {}", codec.name());
13 println!("\t description: {}", codec.description());
14 println!("\t medium: {:?}", codec.medium());
15 println!("\t capabilities: {:?}", codec.capabilities());
16
17 if let Some(profiles) = codec.profiles() {
18 println!("\t profiles: {:?}", profiles.collect::<Vec<_>>());
19 } else {
20 println!("\t profiles: none");
21 }
22
23 if let Ok(video) = codec.video() {
24 if let Some(rates) = video.rates() {
25 println!("\t rates: {:?}", rates.collect::<Vec<_>>());
26 } else {
27 println!("\t rates: any");
28 }
29
30 if let Some(formats) = video.formats() {
31 println!("\t formats: {:?}", formats.collect::<Vec<_>>());
32 } else {
33 println!("\t formats: any");
34 }
35 }
36
37 if let Ok(audio) = codec.audio() {
38 if let Some(rates) = audio.rates() {
39 println!("\t rates: {:?}", rates.collect::<Vec<_>>());
40 } else {
41 println!("\t rates: any");
42 }
43
44 if let Some(formats) = audio.formats() {
45 println!("\t formats: {:?}", formats.collect::<Vec<_>>());
46 } else {
47 println!("\t formats: any");
48 }
49
50 if let Some(layouts) = audio.channel_layouts() {
51 println!("\t channel_layouts: {:?}", layouts.collect::<Vec<_>>());
52 } else {
53 println!("\t channel_layouts: any");
54 }
55 }
56
57 println!("\t max_lowres: {:?}", codec.max_lowres());
58 }
59
60 if let Some(codec) = ffmpeg::encoder::find_by_name(&arg) {
61 println!();
62 println!("type: encoder");
63 println!("\t id: {:?}", codec.id());
64 println!("\t name: {}", codec.name());
65 println!("\t description: {}", codec.description());
66 println!("\t medium: {:?}", codec.medium());
67 println!("\t capabilities: {:?}", codec.capabilities());
68
69 if let Some(profiles) = codec.profiles() {
70 println!("\t profiles: {:?}", profiles.collect::<Vec<_>>());
71 }
72
73 if let Ok(video) = codec.video() {
74 if let Some(rates) = video.rates() {
75 println!("\t rates: {:?}", rates.collect::<Vec<_>>());
76 } else {
77 println!("\t rates: any");
78 }
79
80 if let Some(formats) = video.formats() {
81 println!("\t formats: {:?}", formats.collect::<Vec<_>>());
82 } else {
83 println!("\t formats: any");
84 }
85 }
86
87 if let Ok(audio) = codec.audio() {
88 if let Some(rates) = audio.rates() {
89 println!("\t rates: {:?}", rates.collect::<Vec<_>>());
90 } else {
91 println!("\t rates: any");
92 }
93
94 if let Some(formats) = audio.formats() {
95 println!("\t formats: {:?}", formats.collect::<Vec<_>>());
96 } else {
97 println!("\t formats: any");
98 }
99
100 if let Some(layouts) = audio.channel_layouts() {
101 println!("\t channel_layouts: {:?}", layouts.collect::<Vec<_>>());
102 } else {
103 println!("\t channel_layouts: any");
104 }
105 }
106
107 println!("\t max_lowres: {:?}", codec.max_lowres());
108 }
109 }
110}