• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Output Capture
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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
  • Follow-Ups:
    • Re: Output Capture
      • From: Andy O'Meara <email@hidden>
    • Re: Output Capture
      • From: email@hidden
References: 
 >Output Capture (From: email@hidden)
 >Re: Output Capture (From: Jeff Moore <email@hidden>)
 >Re: Output Capture (From: email@hidden)
 >Re: Output Capture (From: Jeff Moore <email@hidden>)
 >Re: Output Capture (From: Andy O'Meara <email@hidden>)
 >Re: Output Capture (From: Jeff Moore <email@hidden>)
 >Re: Output Capture (From: Andy O'Meara <email@hidden>)

  • Prev by Date: Re: Output Capture
  • Next by Date: Re: Output Capture
  • Previous by thread: Re: Output Capture
  • Next by thread: Re: Output Capture
  • Index(es):
    • Date
    • Thread