Skip to content

Commit ea30799

Browse files
afq984Chromeos LUCI
authored and
Chromeos LUCI
committed
Convert CrasProcessorEffect to CRAS_STREAM_ACTIVE_AP_EFFECT in Rust
BUG=b:383924467 TEST=bazel test //... Change-Id: I980ed54403c5f20ccc57d5fc51c1ecbd5d678a34 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/adhd/+/6090658 Commit-Queue: Li-Yu Yu <[email protected]> Tested-by: [email protected] <[email protected]> Reviewed-by: Hung-Hsien Chen <[email protected]>
1 parent 36fa535 commit ea30799

File tree

3 files changed

+32
-24
lines changed

3 files changed

+32
-24
lines changed

cras/common/rust_common.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ void cras_rust_free_string(char *s);
124124
*/
125125
const char *cras_processor_effect_to_str(enum CrasProcessorEffect effect);
126126

127+
CRAS_STREAM_ACTIVE_AP_EFFECT cras_processor_effect_to_active_ap_effects(enum CrasProcessorEffect effect);
128+
127129
/**
128130
* Returns the names of active effects as a string.
129131
* The resulting string should be freed with cras_rust_free_string.

cras/common/src/types_internal.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,27 @@ impl CrasProcessorEffect {
3232
CrasProcessorEffect::Overridden => c"Overridden",
3333
}
3434
}
35+
36+
fn to_active_ap_effects(&self) -> CRAS_STREAM_ACTIVE_AP_EFFECT {
37+
match self {
38+
CrasProcessorEffect::NoEffects => CRAS_STREAM_ACTIVE_AP_EFFECT::empty(),
39+
CrasProcessorEffect::Negate => CRAS_STREAM_ACTIVE_AP_EFFECT::NEGATE,
40+
CrasProcessorEffect::NoiseCancellation => {
41+
CRAS_STREAM_ACTIVE_AP_EFFECT::NOISE_CANCELLATION
42+
}
43+
CrasProcessorEffect::StyleTransfer => {
44+
// Style transfer implies noise cancellation.
45+
CRAS_STREAM_ACTIVE_AP_EFFECT::NOISE_CANCELLATION
46+
| CRAS_STREAM_ACTIVE_AP_EFFECT::STYLE_TRANSFER
47+
}
48+
CrasProcessorEffect::Beamforming => {
49+
// Beamforming is a variant of noise cancellation.
50+
CRAS_STREAM_ACTIVE_AP_EFFECT::NOISE_CANCELLATION
51+
| CRAS_STREAM_ACTIVE_AP_EFFECT::BEAMFORMING
52+
}
53+
CrasProcessorEffect::Overridden => CRAS_STREAM_ACTIVE_AP_EFFECT::PROCESSOR_OVERRIDDEN,
54+
}
55+
}
3556
}
3657

3758
/// Returns the name of the CrasProcessorEffect as a string.
@@ -41,6 +62,13 @@ pub extern "C" fn cras_processor_effect_to_str(effect: CrasProcessorEffect) -> *
4162
effect.as_c_str().as_ptr()
4263
}
4364

65+
#[no_mangle]
66+
pub extern "C" fn cras_processor_effect_to_active_ap_effects(
67+
effect: CrasProcessorEffect,
68+
) -> CRAS_STREAM_ACTIVE_AP_EFFECT {
69+
effect.to_active_ap_effects()
70+
}
71+
4472
bitflags! {
4573
#[allow(non_camel_case_types)]
4674
#[repr(transparent)]

cras/src/server/cras_stream_apm.c

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -592,30 +592,8 @@ static CRAS_STREAM_ACTIVE_AP_EFFECT get_active_ap_effects(
592592
}
593593
}
594594

595-
switch (apm->cras_processor_effect) {
596-
case NoEffects:
597-
break;
598-
case Negate:
599-
effects |= CRAS_STREAM_ACTIVE_AP_EFFECT_NEGATE;
600-
break;
601-
case NoiseCancellation:
602-
effects |= CRAS_STREAM_ACTIVE_AP_EFFECT_NOISE_CANCELLATION;
603-
break;
604-
case StyleTransfer:
605-
// Style transfer implies noise cancellation.
606-
effects |= CRAS_STREAM_ACTIVE_AP_EFFECT_NOISE_CANCELLATION;
607-
608-
effects |= CRAS_STREAM_ACTIVE_AP_EFFECT_STYLE_TRANSFER;
609-
break;
610-
case Beamforming:
611-
// Beamforming is a variant of noise cancellation.
612-
effects |= CRAS_STREAM_ACTIVE_AP_EFFECT_NOISE_CANCELLATION;
613-
effects |= CRAS_STREAM_ACTIVE_AP_EFFECT_BEAMFORMING;
614-
break;
615-
case Overridden:
616-
effects |= CRAS_STREAM_ACTIVE_AP_EFFECT_PROCESSOR_OVERRIDDEN;
617-
break;
618-
}
595+
effects |=
596+
cras_processor_effect_to_active_ap_effects(apm->cras_processor_effect);
619597

620598
return effects;
621599
}

0 commit comments

Comments
 (0)