1use clap::ValueEnum;
4use std::str::FromStr;
5use voirs_sdk::{AudioFormat, QualityLevel};
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
9pub enum CliAudioFormat {
10 Wav,
11 Flac,
12 Mp3,
13 Opus,
14 Ogg,
15}
16
17impl From<CliAudioFormat> for AudioFormat {
18 fn from(cli_format: CliAudioFormat) -> Self {
19 match cli_format {
20 CliAudioFormat::Wav => AudioFormat::Wav,
21 CliAudioFormat::Flac => AudioFormat::Flac,
22 CliAudioFormat::Mp3 => AudioFormat::Mp3,
23 CliAudioFormat::Opus => AudioFormat::Opus,
24 CliAudioFormat::Ogg => AudioFormat::Ogg,
25 }
26 }
27}
28
29impl From<AudioFormat> for CliAudioFormat {
30 fn from(format: AudioFormat) -> Self {
31 match format {
32 AudioFormat::Wav => CliAudioFormat::Wav,
33 AudioFormat::Flac => CliAudioFormat::Flac,
34 AudioFormat::Mp3 => CliAudioFormat::Mp3,
35 AudioFormat::Opus => CliAudioFormat::Opus,
36 AudioFormat::Ogg => CliAudioFormat::Ogg,
37 }
38 }
39}
40
41impl Default for CliAudioFormat {
42 fn default() -> Self {
43 CliAudioFormat::Wav
44 }
45}
46
47#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
49pub enum CliQualityLevel {
50 Low,
51 Medium,
52 High,
53 Ultra,
54}
55
56impl From<CliQualityLevel> for QualityLevel {
57 fn from(cli_quality: CliQualityLevel) -> Self {
58 match cli_quality {
59 CliQualityLevel::Low => QualityLevel::Low,
60 CliQualityLevel::Medium => QualityLevel::Medium,
61 CliQualityLevel::High => QualityLevel::High,
62 CliQualityLevel::Ultra => QualityLevel::Ultra,
63 }
64 }
65}
66
67impl From<QualityLevel> for CliQualityLevel {
68 fn from(quality: QualityLevel) -> Self {
69 match quality {
70 QualityLevel::Low => CliQualityLevel::Low,
71 QualityLevel::Medium => CliQualityLevel::Medium,
72 QualityLevel::High => CliQualityLevel::High,
73 QualityLevel::Ultra => CliQualityLevel::Ultra,
74 }
75 }
76}
77
78impl Default for CliQualityLevel {
79 fn default() -> Self {
80 CliQualityLevel::High
81 }
82}