diff options
Diffstat (limited to 'third_party/libwebrtc/api/test/create_frame_generator.h')
-rw-r--r-- | third_party/libwebrtc/api/test/create_frame_generator.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/third_party/libwebrtc/api/test/create_frame_generator.h b/third_party/libwebrtc/api/test/create_frame_generator.h new file mode 100644 index 0000000000..70be0c4e8e --- /dev/null +++ b/third_party/libwebrtc/api/test/create_frame_generator.h @@ -0,0 +1,85 @@ +/* + * 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 a set of nv12 files. +// The frame_repeat_count determines how many times each frame is shown, +// with 1 = show each frame once, etc. +std::unique_ptr<FrameGeneratorInterface> CreateFromNV12FileFrameGenerator( + std::vector<std::string> filenames, + size_t width, + size_t height, + int frame_repeat_count = 1); + +// 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_ |