| /* |
| * 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. |
| */ |
| |
| #ifndef SRC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_HELPERS_VIE_FILE_CAPTURE_DEVICE_H_ |
| #define SRC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_HELPERS_VIE_FILE_CAPTURE_DEVICE_H_ |
| |
| #include <cstdio> |
| |
| #include <string> |
| |
| #include "typedefs.h" |
| |
| namespace webrtc { |
| class CriticalSectionWrapper; |
| class EventWrapper; |
| class ViEExternalCapture; |
| } |
| |
| // This class opens a i420 file and feeds it into a ExternalCapture instance, |
| // thereby acting as a faked capture device with deterministic input. |
| class ViEFileCaptureDevice { |
| public: |
| // The input sink is where to send the I420 video frames. |
| explicit ViEFileCaptureDevice(webrtc::ViEExternalCapture* input_sink); |
| virtual ~ViEFileCaptureDevice(); |
| |
| // Opens the provided I420 file and interprets it according to the provided |
| // width and height. Returns false if the file doesn't exist. |
| bool OpenI420File(const std::string& path, int width, int height); |
| |
| // Reads the previously opened file for at most time_slice_ms milliseconds, |
| // after which it will return. It will make sure to sleep accordingly so we |
| // do not send more than max_fps cap (we may send less, though). |
| void ReadFileFor(uint64_t time_slice_ms, uint32_t max_fps); |
| |
| // Closes the opened input file. |
| void CloseFile(); |
| |
| private: |
| webrtc::ViEExternalCapture* input_sink_; |
| |
| std::FILE* input_file_; |
| webrtc::CriticalSectionWrapper* mutex_; |
| |
| WebRtc_UWord32 frame_length_; |
| WebRtc_UWord8* frame_buffer_; |
| WebRtc_UWord32 width_; |
| WebRtc_UWord32 height_; |
| }; |
| |
| #endif // SRC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_HELPERS_VIE_FILE_CAPTURE_DEVICE_H_ |