In 2007, during the fever over DRM being included in Windows Vista, a Windows Vista Team blog was created to respond to a lot of the concerns. One of the questions responded to the ability of VoIP software to perform echo cancellation when running on Windows Vista.
This is what Nick White had to say by way of an FAQ:
Will echo cancellation work less well for premium content?
We believe that Windows Vista provides applications with access to sufficient information to successfully build high quality echo cancellation functionality.
What information does Windows Vista provide to allow applications to build high quality echo cancellation functionality?
Note: Reading that statement, i get the impression that Windows Vista provides sufficient information to allow applications to successfully build high-quality echo cancellation functionality. Presumably the way Windows provides this information is through an API.
Echo cancellation works by sampling the playing output, and "subtracting it" from the recorded microphone input.
Unfortunately, as MSDN notes, one cannot always sample playing output:
Windows Vista provides digital rights
management (DRM). Content providers
rely on DRM to protect their
proprietary music or other content
from unauthorized copying and other
illegal uses. WASAPI does not permit
loopback recording of digital streams
that contain DRM-protected content.
Similarly, a trusted audio driver does
not permit a loopback device to
capture digital streams that contain
protected content. Windows Vista
allows only trusted drivers to play
protected content. For more
information about trusted drivers and
DRM, see the Windows DDK
documentation.
Presumably that means that using Loopback Mode from WASAPI is not the intended method to provide echo-cancellation services.
What is the intended API to allow the implementation of high quality echo cancellation?
Note: This is related to, but separate from, another question i asked: How to sample output audio mix?. This question is specifically looking for an expansion of the response by the Window Vista team that echo-cancellation is possible in Windows. This question is looking for the API; it can be a separate question of how to use it.
Googling for an answer, i get the impression that (while performing echo-cancellation) an application is allowed to sample DRM protected content, but the content will be degraded (i.e. "sufficient information"). This would make any echo-cancellation worse, but still possible.
Or was the Windows team implying "sufficient for most cases, but not while the user is listening to a song or playing a movie" - and that it is in fact not possible to successfully build high quality echo cancellation functionality?
Update: It should be noted i'm not looking for an echo-cancellation API, i'm looking for an API to sample the playing output - which is what's required to implement echo cancellation. Unless of course Windows Vista provides an echo-cancellation API (which is how they continue to protect Premium content). But i've not seen an echo-cancellation API either.
http://msdn.microsoft.com/en-us/library/ff819492(v=VS.85).aspx
If you are looking for an API to do echo cancellation, it looks like the voice capture dsp has built in support for acoustic echo cancellation.
Example:
http://msdn.microsoft.com/en-us/library/dd443455(VS.85).aspx
Related
I want to create an audio-book application using Laravel.
Is it possible to protect from downloading an audio from a site ?
Is right click disable does the trick OR
What security measures will I take to prevent any audio files download ?
Meanwhile I have decided to use HTML5-Audio Player.
This question is complicated, and depending on how you deliver the audio, the answer will changes. I would recommend to look at how protected content are delivered on certain platform.
Let take a look at Spotify, they are using Widevine:
Widevine is a proprietary digital rights management (DRM) technology from Google used by the Google Chrome, Brave and Firefox web browsers (including some derivatives), Android MediaDRM, Android TV, and other consumer electronics devices.
Wikipedia
Simply disabling the download is only a frontend feature removed, that can be easily bypass. For protected content, more complicated solution are required like a DRM.
This was pompted by a couple of recent questions where the answer amounted to "there seems to be no API for that" in both cases.
Retrieving Windows version "1511" was about retrieving the "Version 1511" string prominently displayed in the Help / About boxes of system apps from Notepad to MMC since the November update. The only proposed workaround was to read it off an undocumented registry key.
How to detect whether Windows 10 features are currently enabled in the console was about a console app detecting whether it's running under the "new" console (ForceV2=1) vs. the legacy console. An incomplete and unsatisfactory workaround (that I posted there) was to check whether the console window allows itself to be resized wider.
I would expect that there must be more cases of such new features that the published APIs haven't caught up with, yet. Examples welcome, references and known workarounds even better.
The inability to obtain a version number is entirely intentional. Both GetVersion(Ex) and VerifyVersionInfo are deprecated, although they are still available for Windows desktop apps. The use of GetVersion(Ex) is strongly discourage, and VerifyVersionInfo should really only be used for you must be this high to ride this ride checks. See this post and this one.
Universal Windows apps have access to an opaque string for logs and telemetry, but apps shouldn't be trying to display a user-visible version number. See AnalyticsInfo.VersionInfo. In short, if you are UWP you already know you are on Windows 10. If you have hard dependencies on a particular version, that is handled through AppX manifest elements.
I'd like something equivalent to the Android Speech Recognition Intent where the OS will initiate the speech recording, pass the recorded speech to a hosted cloud service for processing and return an array of strings to the calling application.
I've had a look at some docs, but it is not clear if Microsoft support this (particularly where they provide the hosted cloud recogniser service). Lots of docs refer to having to host your own server.
I'm not aware of anything available for free - I'm relatively certain Microsoft deosn't provide anything (they didn't last we looked, which was about a year ago). Chant has a variety of products. We've used them successfully under WinMo 6.5.
I'd interested in sending data from one WP7 to another WP7 phone so I could create 2 player games. If I understand correctly most WP7 will support bluetooth, but its not in the minimum spec, is this correct? What API's can I use to access the bluetooth, any good examples of this out there?
Unfortunately Microsoft don't provide any access to the bluetooth stack via any documented APIs in this version of the Dev tools.
They don't seem to have any sense of urgency about fixing this (or any of the many other missing features), so I wouldn't expect the situation to change any time soon.
I'd like to know what the status is to sync data (eg. SQLite, etc.) from Windows with smartphones. Ideally, the same tool should support the main smartphones (iPhone, BlackBerry, Windows Mobile, Android).
Google returned information on OpenSync and SyncML, and I'd like to ask experts whether those projects are ready for showtime, and if not, if there are alternatives I should look at.
It seems like it's pretty much still a proprietary world, and the easiest way is to first sync with Outlook, and then sync Outlook with the smartphone using whatever sync utility it provided.
Thank you.
There is no single protocol which is supported by all phones. The two most popular ones are ActiveSync and OMA DM.
ActiveSync is supported by virtually all modern smartphones (except BlackBerry) and can sync mail, contacts and calendars. It can also (depending on the device support) do some basic device management such as remote lock or wipe.
OMA DM is a "competing" spec which is prevalent on Symbian phones but also supported on a few others. It is SyncML based and allows syncing pretty much anything on the phone.