Freigeben über


Determining pin dependence in MediaCapture

In general most of the cameras expose 1-3 pins from which you can capture Video Preview stream, Video Record stream, Photo stream.

Example: Normal USB cameras generally expose 1 pin (Preview) , H264 cameras expose 2 pins (1 for Preview and 1 for Record), SOC cameras expose 3 pins (independent Preview, Record and Photo capture).

MediaCapture default mapping of Single pin camera - Media Streams

MediaCapture default mapping of 2 pin camera - Media Streams

MediaCapture default mapping of 3 pin camera - Media Streams

MediaCapture exposes a way to determine this pin independence information. This will come in handy when you are adding effects to a Media Stream and when you don't want any effects to be applied inadvertently to a stream that you didn't desire to apply.

Let's take an example: Say your intension is to apply a custom effect (using AddEffectAsync) to a Photo stream while taking a Photo when Preview and Recording are in progress. For your same code, the behavior will vary when you run your application on a machine with a USB camera attached vs. a machine with H264 camera attached vs. on a SOC device like a Phone or tablet. On a machine with USB camera, your effect will be applied to Preview, Record and Photo. On machine with H264 camera, your effect will be applied to Preview and Photo. On Phone or Tablet, your effect will be applied to Photo only. 

So determining Pin dependence will be helpful in some scenarios. You can use MediaCapture.MediaCaptureSettings.VideoDeviceCharacteristic to determine this behavior : https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.capture.videodevicecharacteristic.aspx