Program Listing for File VideoEncoderProperties.hpp

Return to documentation for file (include/depthai/properties/VideoEncoderProperties.hpp)

#pragma once

#include <depthai/common/optional.hpp>

#include "depthai/properties/Properties.hpp"

namespace dai {

struct VideoEncoderProperties : PropertiesSerializable<Properties, VideoEncoderProperties> {
    enum class RateControlMode : int { CBR, VBR };

    enum class Profile : int { H264_BASELINE, H264_HIGH, H264_MAIN, H265_MAIN, MJPEG };
    std::int32_t bitrate = 0;
    std::int32_t keyframeFrequency = 30;
    std::int32_t maxBitrate = 0;
    std::int32_t numBFrames = 0;
    std::uint32_t numFramesPool = 0;
    std::int32_t outputFrameSize = 0;
    Profile profile = Profile::H264_BASELINE;
    std::int32_t quality = 80;
    bool lossless = false;
    RateControlMode rateCtrlMode = RateControlMode::CBR;
    float frameRate = 30.0f;

    ~VideoEncoderProperties() override;
};

DEPTHAI_SERIALIZE_EXT(VideoEncoderProperties,
                      bitrate,
                      keyframeFrequency,
                      maxBitrate,
                      numBFrames,
                      numFramesPool,
                      outputFrameSize,
                      profile,
                      quality,
                      lossless,
                      rateCtrlMode,
                      frameRate);

}  // namespace dai