phemios_core/playback/
cd.rs1use super::*;
3impl Player {
4 pub fn is_cd(&self) -> Result<bool, String> {
6 Ok(self
7 .state
8 .lock()
9 .map_err(|_| "État audio indisponible.")?
10 .local_cd)
11 }
12 pub fn start_cd(
15 &self,
16 disc: phemios_cd::Disc,
17 tracks: Vec<String>,
18 device: String,
19 index: usize,
20 permission: Option<Box<dyn Fn() -> Result<(), String> + Send>>,
21 ) -> Result<(), String> {
22 if tracks.is_empty()
23 || tracks.len() > 4096
24 || index >= tracks.len()
25 || device.len() > 2048
26 || device == crate::hqplayer::OUTPUT
27 || tracks
28 .iter()
29 .any(|reference| disc.track(reference).is_err())
30 {
31 return Err("Sélection CD ou sortie audio invalide.".into());
32 }
33 self.launch(
34 actor::Source::Disc(disc, Arc::default()),
35 tracks,
36 device,
37 index,
38 Policy::WithoutEffects,
39 permission,
40 )
41 }
42}