| /* | |
| * Copyright (c) 2019 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 API_TEST_CREATE_FRAME_GENERATOR_H_ | |
| #define API_TEST_CREATE_FRAME_GENERATOR_H_ | |
| #include <memory> | |
| #include <string> | |
| #include <vector> | |
| #include "absl/types/optional.h" | |
| #include "api/test/frame_generator_interface.h" | |
| #include "system_wrappers/include/clock.h" | |
| namespace webrtc { | |
| namespace test { | |
| // Creates a frame generator that produces frames with small squares that | |
| // move randomly towards the lower right corner. | |
| // `type` has the default value FrameGeneratorInterface::OutputType::I420. | |
| // `num_squares` has the default value 10. | |
| std::unique_ptr<FrameGeneratorInterface> CreateSquareFrameGenerator( | |
| int width, | |
| int height, | |
| absl::optional<FrameGeneratorInterface::OutputType> type, | |
| absl::optional<int> num_squares); | |
| // Creates a frame generator that repeatedly plays a set of yuv files. | |
| // The frame_repeat_count determines how many times each frame is shown, | |
| // with 1 = show each frame once, etc. | |
| std::unique_ptr<FrameGeneratorInterface> CreateFromYuvFileFrameGenerator( | |
| std::vector<std::string> filenames, | |
| size_t width, | |
| size_t height, | |
| int frame_repeat_count); | |
| // Creates a frame generator that repeatedly plays an ivf file. | |
| std::unique_ptr<FrameGeneratorInterface> CreateFromIvfFileFrameGenerator( | |
| std::string filename); | |
| // Creates a frame generator which takes a set of yuv files (wrapping a | |
| // frame generator created by CreateFromYuvFile() above), but outputs frames | |
| // that have been cropped to specified resolution: source_width/source_height | |
| // is the size of the source images, target_width/target_height is the size of | |
| // the cropped output. For each source image read, the cropped viewport will | |
| // be scrolled top to bottom/left to right for scroll_tim_ms milliseconds. | |
| // After that the image will stay in place for pause_time_ms milliseconds, | |
| // and then this will be repeated with the next file from the input set. | |
| std::unique_ptr<FrameGeneratorInterface> | |
| CreateScrollingInputFromYuvFilesFrameGenerator( | |
| Clock* clock, | |
| std::vector<std::string> filenames, | |
| size_t source_width, | |
| size_t source_height, | |
| size_t target_width, | |
| size_t target_height, | |
| int64_t scroll_time_ms, | |
| int64_t pause_time_ms); | |
| // Creates a frame generator that produces randomly generated slides. It fills | |
| // the frames with randomly sized and colored squares. | |
| // `frame_repeat_count` determines how many times each slide is shown. | |
| std::unique_ptr<FrameGeneratorInterface> | |
| CreateSlideFrameGenerator(int width, int height, int frame_repeat_count); | |
| } // namespace test | |
| } // namespace webrtc | |
| #endif // API_TEST_CREATE_FRAME_GENERATOR_H_ |