Re: Output Capture
Re: Output Capture
- Subject: Re: Output Capture
- From: Kevin Avila <email@hidden>
- Date: Thu, 19 Jul 2007 07:42:41 -0700
I would like to get some clarification on the context of this thread.
Is the solution we're looking for echo cancellation or noise
cancellation? While the DSP is similar in both cases the applications
differ.
Noise cancellation is for attenuating all background noise in the
environment, this method is what might require access to the entire
system's output, perhaps even an additional microphone or mic array;
implementation can be tricky.
Echo cancelation on the other hand is primarily used in voice
communication technologies, like iChat, and can be implemented much
easier since you only need access to your local incoming sound data
and a single microphone. Implementation is non-trivial, however as
Jeff pointed out, a simple Google search will render many valid
examples & papers about the subject. You basically calculate the
latency of both input & output devices (Core Audio provides API to do
this), play your sound and when you receive input from the microphone
you compare that input with the output you just played by subtracting
the original output with the new input and volia! Echo cancellation.
Easier said then done, but it's a very popular topic in academia and
in the industry at large and there is a wealth of information
regarding the subject on the internet.
Kevin Avila
DTS Audio Engineer
World Wide Developer Relations
Apple, Inc.
On Jul 19, 2007, at 4:53 AM, Andy O'Meara wrote:
Well, does iChat do echo cancellation via public APIs or does it
use private Apple APIs?
iChat works entirely with public APIs and their own echo
cancellation code. No private APIs are used.
You speak as if we have access to the iChat code, so it's not a
given at all that just because iChat can do something, so can we.
Why would you need access to the iChat code? Echo Cancellation is
a major research area in signal processing. It is written about in
numerous text books and papers every year. I'm sure you can dig up
something useful with even a casual Google search.
If it's the case that iChat only uses public APIs, how about some
of that code gets pasted into a new Sample Code project and put
on ADC? That would seem to make the most sense since people like
us repeatedly are looking for a cold, hard solution. And if you
don't won't to do that, could you help us understand why not? If
the reason is that it would be unsupported code, then we'd say
back that we understand and acknowledge that and we assume the
consequences of that.
Since we don't provide an Echo Cancellation library, obviously
there won't be any sample code for that. But that aside, there is
all sorts of sample code for all the APIs that iChat uses out of
Core Audio.
Sorry, I should have been more clear that I was referring to iChat
performing general system audio loopback (the issue in question),
not audio processing it's doing on that audio. In other words, if
iChat did do some sort of system loopback, then it would be
certainly helpful to see the code that did that. But from what you
said, since it only uses public APIs, then it can't do system
loopback based on the facts that you listed earlier.
Andy
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
40apple.com
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden