1 /* 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef WEBRTC_MODULES_VIDEO_CODING_TEST_TEST_UTIL_H_ 12 #define WEBRTC_MODULES_VIDEO_CODING_TEST_TEST_UTIL_H_ 13 14 /* 15 * General declarations used through out VCM offline tests. 16 */ 17 18 #include <string> 19 20 #include "webrtc/base/constructormagic.h" 21 #include "webrtc/modules/include/module_common_types.h" 22 #include "webrtc/modules/video_coding/include/video_coding.h" 23 #include "webrtc/system_wrappers/include/event_wrapper.h" 24 25 enum { kMaxNackListSize = 250 }; 26 enum { kMaxPacketAgeToNack = 450 }; 27 28 class NullEvent : public webrtc::EventWrapper { 29 public: ~NullEvent()30 virtual ~NullEvent() {} 31 Set()32 virtual bool Set() { return true; } 33 Reset()34 virtual bool Reset() { return true; } 35 Wait(unsigned long max_time)36 virtual webrtc::EventTypeWrapper Wait(unsigned long max_time) { // NOLINT 37 return webrtc::kEventTimeout; 38 } 39 StartTimer(bool periodic,unsigned long time)40 virtual bool StartTimer(bool periodic, unsigned long time) { // NOLINT 41 return true; 42 } 43 StopTimer()44 virtual bool StopTimer() { return true; } 45 }; 46 47 class NullEventFactory : public webrtc::EventFactory { 48 public: ~NullEventFactory()49 virtual ~NullEventFactory() {} 50 CreateEvent()51 virtual webrtc::EventWrapper* CreateEvent() { return new NullEvent; } 52 }; 53 54 class FileOutputFrameReceiver : public webrtc::VCMReceiveCallback { 55 public: 56 FileOutputFrameReceiver(const std::string& base_out_filename, uint32_t ssrc); 57 virtual ~FileOutputFrameReceiver(); 58 59 // VCMReceiveCallback 60 virtual int32_t FrameToRender(webrtc::VideoFrame& video_frame); // NOLINT 61 62 private: 63 std::string out_filename_; 64 FILE* out_file_; 65 FILE* timing_file_; 66 int width_; 67 int height_; 68 int count_; 69 70 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(FileOutputFrameReceiver); 71 }; 72 73 class CmdArgs { 74 public: 75 CmdArgs(); 76 77 std::string codecName; 78 webrtc::VideoCodecType codecType; 79 int width; 80 int height; 81 int rtt; 82 std::string inputFile; 83 std::string outputFile; 84 }; 85 86 #endif // WEBRTC_MODULES_VIDEO_CODING_TEST_TEST_UTIL_H_ 87