mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.6 KiB
74 lines
2.6 KiB
// Video support with XAML |
|
|
|
// Copyright (c) Microsoft Open Technologies, Inc. |
|
// All rights reserved. |
|
// |
|
// (3 - clause BSD License) |
|
// |
|
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that |
|
// the following conditions are met: |
|
// |
|
// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the |
|
// following disclaimer. |
|
// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the |
|
// following disclaimer in the documentation and/or other materials provided with the distribution. |
|
// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or |
|
// promote products derived from this software without specific prior written permission. |
|
// |
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED |
|
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
|
// PARTICULAR PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY |
|
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, |
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING |
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
// POSSIBILITY OF SUCH DAMAGE. |
|
|
|
#pragma once |
|
|
|
#include "cap_winrt/CaptureFrameGrabber.hpp" |
|
|
|
#include <mutex> |
|
#include <memory> |
|
|
|
class Video { |
|
public: |
|
|
|
// non-blocking |
|
bool initGrabber(int device, int w, int h); |
|
void closeGrabber(); |
|
bool isStarted(); |
|
|
|
// singleton |
|
static Video &getInstance(); |
|
|
|
void CopyOutput(); |
|
|
|
private: |
|
// singleton |
|
Video(); |
|
|
|
void _GrabFrameAsync(::Media::CaptureFrameGrabber^ frameGrabber); |
|
|
|
bool listDevices(); |
|
|
|
Platform::Agile<Windows::Media::Capture::MediaCapture> m_capture; |
|
Platform::Agile<Windows::Devices::Enumeration::DeviceInformationCollection> m_devices; |
|
|
|
::Media::CaptureFrameGrabber^ m_frameGrabber; |
|
|
|
bool listDevicesTask(); |
|
|
|
bool bChooseDevice; |
|
bool bVerbose; |
|
bool bFlipImageX; |
|
//std::atomic<bool> bGrabberInited; |
|
int m_deviceID; |
|
int attemptFramerate; |
|
std::atomic<bool> bIsFrameNew; |
|
std::atomic<bool> bGrabberInited; |
|
std::atomic<bool> bGrabberInitInProgress; |
|
unsigned int width, height; |
|
int bytesPerPixel; |
|
|
|
}; |