-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Expose more AEC3 params, example & test #45
base: upgrade-v1-aec3-tuning
Are you sure you want to change the base?
Expose more AEC3 params, example & test #45
Conversation
dc41a7b
to
d740b36
Compare
7462722
to
51cfa88
Compare
2acf4d9
to
837bcc2
Compare
ea0ef64
to
aa214d0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Whoa this is a lot of work @jacksongoode, thanks for it! And sorry for my very late review.
I'm adding just some little technicality suggestions, but all of them are very minor.
impl fmt::Display for AudioProcessingError { | ||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | ||
match self { | ||
Self::InvalidParameters => write!(f, "Invalid parameters"), | ||
Self::ConfigValidationFailed => write!(f, "Config validation failed"), | ||
Self::CreationFailed => write!(f, "Failed to create audio processor"), | ||
Self::InitializationFailed(code) => write!(f, "Initialization failed: {}", code), | ||
Self::UnknownError(code) => write!(f, "Unknown error: {}", code), | ||
Self::CppException(code) => write!(f, "C++ exception occurred: {}", code), | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Another option is to use thiserror
to write these in more consice manner and have Display
generated, but it won't save us much anyway. (so not advocating for that)
I tried to get most of the new params exposedI believe this exposes all of the AEC3. I added a few tests that capture and measure ERL across AEC with different configurations. I also added a module level test to made sure we have the proper props bound. Most of this was some regex transfer over from the cpp to the proper places but I could've missed some items.I added a new example with the AEC3 config which mirrors the structure of the basic karaoke example but with the ability to just pass in a config.
There's a little bit of weirdness, uncertainty around the need for an EchoCanceller to be explicitly added to the processor, I would imagine it would take a default if undefined.