Answered by:
How to change video resolution for CameraCaptureUI and how to set StartPreviewAsync video to full screen?

Question
-
Hello all, I'm learning the sample code about Metro APP for camera and now I have two question.
Firstly, I want change video resolution, I have added my code to DeviceAppForWebcam to do this.Code like this
void DeviceAppPage::OnVideoFormatChanged(Object^ sender, RoutedEventArgs^ e) { Windows::Foundation::Collections::IVectorView<IMediaEncodingProperties^> ^res; res = videoDevController->GetAvailableMediaStreamProperties(Windows::Media::Capture::MediaStreamType::VideoPreview); ....... videoDevController->SetMediaStreamPropertiesAsync(Windows::Media::Capture::MediaStreamType::VideoPreview, (VideoEncodingProperties^) res->GetAt(j)); }
It works when I use camera option UI sample. But can't work with CameraCapture sample and Camera App. For the last two apps, when I change resolution, I will get following words on flyout
Something went wrong and this app can’t set camera setting
Go back to continue using the cameraI can find it crash at videoDevController->GetAvailableMediaStreamProperties. And I know the different is camera option UI use MediaCapture.StartPreviewAsync to preview video and another use CameraCaptureUI to do this.
So my question for the second case , how can I set video resolution ?
Secondly is how to set video to full sreen when I use MediaCapture.StartPreviewAsync,I have added strech=fill to xml, but nothing happend.
Thanks
- Edited by Tango__ Sunday, June 9, 2013 8:49 AM
Sunday, June 9, 2013 8:48 AM
Answers
-
Hello,
You need to query the supported resolutions of the camera. You can't send an arbitrary resolution or media type. If you do not use a supported resolution or media type you will get the error that you are reporting.
Setting the video to full screen simply requires that you query the screen resolution and DPI and then adjust the preview control to the proper size. There is no "go full screen" option.
I hope this helps,
James
Windows SDK Technologies - Microsoft Developer Services - http://blogs.msdn.com/mediasdkstuff/
- Proposed as answer by James Dailey - MSFTMicrosoft employee, Moderator Wednesday, June 12, 2013 11:09 PM
- Marked as answer by Jamles HezModerator Tuesday, June 18, 2013 10:15 AM
Wednesday, June 12, 2013 11:09 PMModerator
All replies
-
Hello,
You need to query the supported resolutions of the camera. You can't send an arbitrary resolution or media type. If you do not use a supported resolution or media type you will get the error that you are reporting.
Setting the video to full screen simply requires that you query the screen resolution and DPI and then adjust the preview control to the proper size. There is no "go full screen" option.
I hope this helps,
James
Windows SDK Technologies - Microsoft Developer Services - http://blogs.msdn.com/mediasdkstuff/
- Proposed as answer by James Dailey - MSFTMicrosoft employee, Moderator Wednesday, June 12, 2013 11:09 PM
- Marked as answer by Jamles HezModerator Tuesday, June 18, 2013 10:15 AM
Wednesday, June 12, 2013 11:09 PMModerator -
Hi James
Thanks for your help.
For the first question, I know I need query the supported resolutions. But if App use MediaCapture.StartPreviewAsync to preview video, just like the sample CameraOptionsUI Sample, it's OK. But if App use CameraCaptureUI to show video, just like the sample CameraCaptureUI Sample,I will get crash when I query resolutions by using videoDevController->GetAvailableMediaStreamProperties. I want to know for the second case, how can I get the supported resolutions and set resolution.
Thanks
Thursday, June 13, 2013 2:10 AM