/* * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #pragma once #include "video_capture_factory.h" //#define RENDER_PREVIEW #ifdef RENDER_PREVIEW #include "Renderer.h" #include "video_coding.h" #include "module_common_types.h" #endif #if defined (WEBRTC_MAC_INTEL) || defined (WEBRTC_LINUX) #include "Logger.h" #else #include "Logger.h" #endif #include "testDefines.h" namespace webrtc { class testCameraEncoder: private VideoCaptureDataCallback #ifdef RENDER_PREVIEW ,VCMReceiveCallback #endif { public: testCameraEncoder(void); ~testCameraEncoder(void); int DoTest(); private: int testCapability(VideoCaptureCapability& capability); // Implement VideoCaptureDataCallback virtual void OnIncomingCapturedFrame(const WebRtc_Word32 id, VideoFrame& videoFrame, webrtc::VideoCodecType codecType); virtual void OnCaptureDelayChanged(const WebRtc_Word32 id, const WebRtc_Word32 delay); void EvaluateTestResult(); #ifdef RENDER_PREVIEW //Implements webrtc::VCMReceiveCallback virtual WebRtc_Word32 FrameToRender(VideoFrame& videoFrame); #endif VideoCaptureModule* _captureModule; VideoCaptureModule::DeviceInfo* _captureInfo; VideoCaptureModule::VideoCaptureEncodeInterface* _encodeInterface; #ifdef RENDER_PREVIEW Renderer*_renderer; webrtc::VideoCodingModule* _videoCoding; #endif struct CaptureSetting { VideoCaptureCapability capability; WebRtc_Word32 captureDelay; WebRtc_Word64 lastRenderTimeMS; WebRtc_Word32 incomingFrames; WebRtc_Word32 timingWarnings; WebRtc_Word64 startTime; WebRtc_Word64 stopTime; WebRtc_Word64 initStartTime; WebRtc_Word64 initStopTime; WebRtc_Word64 stopStartTime; WebRtc_Word64 stopStopTime; WebRtc_Word64 bitrateMeasureTime; WebRtc_Word32 noOfBytes; WebRtc_Word32 idrFrames; WebRtc_Word64 firstCapturedFrameTime; CaptureSetting() { ResetAll(); } void ResetSettings() { capability.width=0; capability.height=0; capability.maxFPS=0; captureDelay=0; lastRenderTimeMS=0; incomingFrames=0; timingWarnings=0; startTime=0; stopTime=0; firstCapturedFrameTime=0; noOfBytes=0; idrFrames=0; bitrateMeasureTime=0; } void ResetAll() { ResetSettings(); initStartTime=0; initStopTime=0; stopStartTime=0; stopStopTime=0; } }; Logger _logger; CaptureSetting _captureSettings; }; } // namespace webrtc