Program Listing for File ImgFrameCapability.hpp

Return to documentation for file (include/depthai/capabilities/ImgFrameCapability.hpp)

#pragma once

// C++ std
#include <cstdint>
#include <optional>

// libraries
#include "depthai/utility/spimpl.h"

// depthai public
#include <depthai/capabilities/Capability.hpp>
#include <depthai/capabilities/CapabilityRange.hpp>
#include <depthai/common/optional.hpp>
#include <depthai/pipeline/datatype/ImgFrame.hpp>
#include <depthai/utility/Serialization.hpp>

namespace dai {

enum struct ImgResizeMode {
    CROP,
    STRETCH,
    LETTERBOX,
};

class ImgFrameCapability : public CapabilityCRTP<Capability, ImgFrameCapability> {
   public:
    constexpr static const char* NAME = "dai/img-frame";
    // Capability getIntersection(const Capability& other) override;

    CapabilityRange<std::pair<uint32_t, uint32_t>> size;
    CapabilityRange<float> fps;
    std::optional<ImgFrame::Type> type;
    ImgResizeMode resizeMode{ImgResizeMode::CROP};
    std::optional<bool> enableUndistortion;
    // TODO(jakgra) add optional CapabilityRange fov / max-min horiz. / vertical crop;

    ~ImgFrameCapability() override;

    DEPTHAI_SERIALIZE(ImgFrameCapability, size, fps, type, resizeMode, enableUndistortion);

   private:
    class Impl;
    spimpl::impl_ptr<Impl> pimpl;
};

}  // namespace dai