Path: blob/main/audio_streams_conformance_test/src/sys/linux.rs
5394 views
// Copyright 2022 The ChromiumOS Authors1// Use of this source code is governed by a BSD-style license that can be2// found in the LICENSE file.34use std::fmt;56use audio_streams::StreamSourceGenerator;7#[cfg(feature = "audio_cras")]8use libcras::CrasClientType;9#[cfg(feature = "audio_cras")]10use libcras::CrasSocketType;11#[cfg(feature = "audio_cras")]12use libcras::CrasStreamSourceGenerator;13use serde::Serialize;1415use crate::args::*;16use crate::error::Error;1718#[derive(Debug, Clone, Copy, PartialEq, Serialize)]19pub enum StreamSource {20#[cfg(feature = "audio_cras")]21CRAS,22}2324impl TryFrom<&str> for StreamSource {25type Error = Error;2627fn try_from(s: &str) -> Result<Self, Self::Error> {28match s {29#[cfg(feature = "audio_cras")]30"cras" => Ok(StreamSource::CRAS),31_ => Err(Error::InvalidStreamSuorce(s.to_owned())),32}33}34}3536impl fmt::Display for StreamSource {37fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {38match self {39#[cfg(feature = "audio_cras")]40StreamSource::CRAS => write!(f, "cras"),41_ => write!(f, "unknown stream source"),42}43}44}4546#[allow(unused_variables)]47#[cfg(feature = "audio_cras")]48fn create_cras_stream_source_generator(args: &Args) -> Box<dyn StreamSourceGenerator> {49Box::new(CrasStreamSourceGenerator::new(50false,51CrasClientType::CRAS_CLIENT_TYPE_TEST,52CrasSocketType::Legacy,53))54}5556#[allow(unused_variables)]57pub(crate) fn create_stream_source_generator(58stream_source: StreamSource,59args: &Args,60) -> Box<dyn StreamSourceGenerator> {61match stream_source {62#[cfg(feature = "audio_cras")]63StreamSource::CRAS => create_cras_stream_source_generator(args),64}65}666768