webrtc 工厂模式

    科技2022-09-08  129

    #ifndef MODULES_VIDEO_CAPTURE_VIDEO_CAPTURE_FACTORY_H_ #define MODULES_VIDEO_CAPTURE_VIDEO_CAPTURE_FACTORY_H_ #include "modules/video_capture/video_capture.h" namespace webrtc { class VideoCaptureFactory { public: // Create a video capture module object // id - unique identifier of this video capture module object. // deviceUniqueIdUTF8 - name of the device. // Available names can be found by using GetDeviceName static rtc::scoped_refptr<VideoCaptureModule> Create( const char* deviceUniqueIdUTF8); // Create a video capture module object used for external capture. // id - unique identifier of this video capture module object // externalCapture - [out] interface to call when a new frame is captured. static rtc::scoped_refptr<VideoCaptureModule> Create( VideoCaptureExternal*& externalCapture); static VideoCaptureModule::DeviceInfo* CreateDeviceInfo(); private: ~VideoCaptureFactory(); }; } // namespace webrtc #endif // MODULES_VIDEO_CAPTURE_VIDEO_CAPTURE_FACTORY_H_ rtc::scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( const char* deviceUniqueIdUTF8) { #if defined(WEBRTC_ANDROID) return nullptr; #else return videocapturemodule::VideoCaptureImpl::Create(deviceUniqueIdUTF8); #endif } rtc::scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create( VideoCaptureExternal*& externalCapture) { return videocapturemodule::VideoCaptureImpl::Create(externalCapture); } VideoCaptureModule::DeviceInfo* VideoCaptureFactory::CreateDeviceInfo() { #if defined(WEBRTC_ANDROID) return nullptr; #else return videocapturemodule::VideoCaptureImpl::CreateDeviceInfo(); #endif } } // namespace webrtc namespace webrtc { namespace videocapturemodule { rtc::scoped_refptr<VideoCaptureModule> VideoCaptureImpl::Create( const char* deviceUniqueIdUTF8) { return new rtc::RefCountedObject<VideoCaptureImpl>(); } } // namespace videocapturemodule } // namespace webrtc rtc::scoped_refptr<VideoCaptureModule> VideoCaptureImpl::Create( VideoCaptureExternal*& externalCapture) { rtc::scoped_refptr<VideoCaptureImpl> implementation( new rtc::RefCountedObject<VideoCaptureImpl>()); externalCapture = implementation.get(); return implementation; } // static VideoCaptureModule::DeviceInfo* VideoCaptureImpl::CreateDeviceInfo() { // TODO(tommi): Use the Media Foundation version on Vista and up. return DeviceInfoDS::Create(); }

     

    Processed: 0.013, SQL: 9