Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Capturing audio/video in Silverlight 4: a surprising fact about CaptureSource

0.00/5 (No votes)
21 Jun 2010 2  
How to avoid performance problems when capturing audio only (or video only)
I created a simple sound-recording application in SL4, but the performance of my application was really poor. It took a while to me to find the reason of the problem - my webcam was activated each time the application started recording sound. Although the video input was not used by my application, the webcam was active and it decreased the performance of my application (not speaking about the fact that it took several seconds to turn the camera on/off, since my USB webcam is really, really slow).

That was not what I expected, since I only initialized the "AudioCaptureDevice" property of the "CaptureSource" class.

My code looked like this:
C#
var audioDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();
_captureSource = new CaptureSource() { AudioCaptureDevice = audioDevice };


I used Red Gate's .NET Reflector to disassemble the CaptureSource constructor and I found something like this:
C#
public CaptureSource() {
    this.VideoCaptureDevice = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();
    this.AudioCaptureDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();
}


Gotcha! Would you expect that? If you only want to capture audio, you must explicitly say that you don't want to capture video (and vice-versa). I changed my code to the following and it works without problems:
C#
// This CaptureSource will record audio only...
_captureSource = new CaptureSource() { VideoCaptureDevice = null }


This is IMO where Silverlight library designers made a huge mistake... Well, we all are only humans. I hope this article helped you to improve the performance of your SL application.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here