| // |
| // Copyright © 2020 Arm Ltd and Contributors. All rights reserved. |
| // SPDX-License-Identifier: MIT |
| // |
| |
| #pragma once |
| |
| #include "IFrameOutput.hpp" |
| #include <opencv2/opencv.hpp> |
| |
| namespace od |
| { |
| |
| class CvVideoFileWriter : public IFrameOutput<cv::Mat> { |
| public: |
| /** |
| * @brief Default constructor. |
| * |
| * Underlying open cv video writer object will be instantiated. |
| */ |
| CvVideoFileWriter() = default; |
| |
| ~CvVideoFileWriter() override = default; |
| |
| /** |
| * @brief Initialises video file writer. |
| * |
| * Opens opencv writer with given params. FFMPEG backend is used. |
| * |
| * @param outputVideo path to the video file. |
| * @param encoding cv::CAP_PROP_FOURCC code. |
| * @param fps target frame rate. |
| * @param width target frame width. |
| * @param height target frame height. |
| * |
| */ |
| void Init(const std::string& outputVideo, int encoding, double fps, int width, int height); |
| |
| /** |
| * Writes frame to the file using opencv writer. |
| * |
| * @param frame data to write. |
| */ |
| void WriteFrame(std::shared_ptr<cv::Mat>& frame) override; |
| |
| /** |
| * Releases opencv writer. |
| */ |
| void Close() override; |
| |
| /** |
| * Checks if opencv writer was successfully opened. |
| * @return true is underlying writer is ready to be used, false otherwise. |
| */ |
| bool IsReady() const override; |
| |
| private: |
| cv::VideoWriter m_cvWriter{}; |
| bool m_ready = false; |
| }; |
| }// namespace od |