diff --git a/src/media/video/winvideo/video_device_impl.cpp b/src/media/video/winvideo/video_device_impl.cpp index adb752423ba8d925a6e8e158308d0df312941eaf..a7efcaa7fb6f37a82040828e9159f1da17038438 100644 --- a/src/media/video/winvideo/video_device_impl.cpp +++ b/src/media/video/winvideo/video_device_impl.cpp @@ -57,10 +57,11 @@ public: DeviceParams getDeviceParams() const; void setDeviceParams(const DeviceParams&); + void setup(); + private: std::unique_ptr<CaptureGraphInterfaces> cInterface; - void setup(); std::vector<VideoSize> sizeList_; std::map<VideoSize, std::vector<FrameRate>> rateList_; std::map<VideoSize, AM_MEDIA_TYPE*> capMap_; @@ -80,6 +81,13 @@ VideoDeviceImpl::VideoDeviceImpl(const std::string& id) void VideoDeviceImpl::setup() { + // Add new size, rate, bitrate, and cap map. + sizeList_.clear(); + rateList_.clear(); + capMap_.clear(); + + cInterface.reset(new CaptureGraphInterfaces()); + if (id == DEVICE_DESKTOP) { name = DEVICE_DESKTOP; VideoSize size {0, 0}; @@ -357,6 +365,7 @@ VideoDevice::VideoDevice(const std::string& path, DeviceParams VideoDevice::getDeviceParams() const { + deviceImpl_->setup(); return deviceImpl_->getDeviceParams(); }