1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
//
// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#pragma once
#include "IFrameOutput.hpp"
#include <opencv2/opencv.hpp>
namespace common
{
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 common
|