lumia-imaging-sdk

CameraPreviewImageSource.StartPreviewAsync doesn't work with videoEncodingProperties


I'm using CameraPreviewImageSource.PreviewFrameAvailable event to determine flashes by calculating average luminosity of each frame. For my purposes I don't need big frames, but with default settings StartPreviewAsync() method generates frames with size 1280*720px. I tried to use StartPreviewAsync(videoEncodingProperties) but every time I get an exception HRESULT:0x80040155 Interface not registered.

I can set preview frame size through underlying VideoDeviceController object, but it looks overcomplicated a bit, especially concerning that I have to set properties in a magically determined sequence (otherway the camera will be broken after exiting from the app).

await App.CameraPreviewImageSource.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview, _previewProperties);
var properties = await App.CameraPreviewImageSource.StartPreviewAsync();
properties.Width = _previewProperties.Width;
properties.Height = _previewProperties.Height;

Am I doing something wrong or StartPreviewAsync(videoEncodingProperties) method in SDK simply doesn't work at all?


Solution

  • Well, "right" sequence of commands solves the problem:

    var properties = await App.CameraPreviewImageSource.StartPreviewAsync();
    await App.CameraPreviewImageSource.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview, _previewProperties);
    properties.Width = _previewProperties.Width;
    properties.Height = _previewProperties.Height;