||CaptureTask retrieves image from MediaTrack and encodes the image to jpeg in
ImageEncoder. The whole procedures start at AttachTrack(), it will add this
class into MediaTrack and retrieves an image in MediaTrackGraph thread.
Once the image is retrieved, it will be sent to ImageEncoder and the encoded
blob will be sent out via encoder callback in main thread.
CaptureTask holds a reference of ImageCapture to ensure ImageCapture won't be
released during the period of the capturing process described above.
||Implementation of https://dvcs.w3.org/hg/dap/raw-file/default/media-stream-
The ImageCapture accepts a video MediaStreamTrack as input source. The image
will be sent back as a JPG format via Blob event.
All the functions in ImageCapture are run in main thread.
There are two ways to capture image, MediaEngineSource and MediaTrackGraph.
When the implementation of MediaEngineSource supports TakePhoto(),
it uses the platform camera to grab image. Otherwise, it falls back
to the MediaTrackGraph way.