Re: Output Capture
Re: Output Capture
- Subject: Re: Output Capture
- From: Kevin Avila <email@hidden>
- Date: Thu, 19 Jul 2007 08:17:28 -0700
What if the user is playing iTunes from a different machine? Or
perhaps from a *gasp* traditional radio/CD player? That's my
situation anyway. I think instead of over-engineering this you can
only do the best you can with local echo cancellation and suggest
serious users invest in a headset w/ microphone.
Kevin Avila
DTS Audio Engineer
World Wide Developer Relations
Apple, Inc.
On Jul 19, 2007, at 7:57 AM, email@hidden wrote:
On Jul 19, 2007, at 8:42 AM, Kevin Avila wrote:
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.
For me, echo cancellation is what's most important, for voice chat
in games. I can probably get the output from just my app, but from
what little I've tested so far, it's best to have as much output as
possible. Games are a special case since they tend to take over
the whole computer, but that's not always so. Our games run in a
window sometimes, and it wouldn't surprise me if people have itunes
open in the background playing their own music or whatnot, which
will just kill voice chat.
This is going to be a fairly big deal in the future I think, so at
some point Apple will need to come to a decision as to whether to
provide the computer's output in core audio, or provide echo
cancelled mic input, or provide a routine that allows the user to
feed in mic input and get out echo cancelled buffers (using the
computer's output under the hood). The last two options avoid DRM
problems, but as a developer I might prefer option one, unless
Apple's echo cancellation is top notch. The "Apple Way" would seem
to be just to provide an echo cancelled mic input. As someone
pointed out, I hate to think that DRM is causing crippled APIs, but
I suppose it would be naive to think otherwise :-P
--Zack
_______________________________________________
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