aja-presets.hpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #pragma once
  2. #include "aja-enums.hpp"
  3. #include <ajantv2/includes/ntv2enums.h>
  4. #include <map>
  5. #include <string>
  6. #include <vector>
  7. namespace aja {
  8. struct RoutingPreset {
  9. std::string name;
  10. ConnectionKind kind;
  11. NTV2Mode mode;
  12. RasterDefinition raster_def;
  13. HDMIWireFormat hdmi_wire_format;
  14. VPIDStandard vpid_standard;
  15. uint32_t num_channels;
  16. uint32_t num_framestores;
  17. uint32_t flags;
  18. std::string route_string;
  19. std::vector<NTV2DeviceID> device_ids;
  20. bool is_rgb;
  21. bool verbatim;
  22. };
  23. using RoutingPresets = std::vector<RoutingPreset>;
  24. using RoutingPresetPair = std::pair<std::string, RoutingPreset>;
  25. using RoutingPresetMap = std::map<std::string, RoutingPreset>;
  26. class RoutingConfigurator {
  27. public:
  28. RoutingConfigurator();
  29. void AddPreset(const std::string &name, const RoutingPreset &preset);
  30. bool PresetByName(const std::string &name, RoutingPreset &preset) const;
  31. RoutingPresetMap GetPresetTable() const;
  32. bool FindFirstPreset(ConnectionKind kind, NTV2DeviceID id,
  33. NTV2Mode mode, NTV2VideoFormat vf,
  34. NTV2PixelFormat pf, VPIDStandard standard,
  35. HDMIWireFormat hwf, RoutingPreset &preset);
  36. private:
  37. void build_preset_table();
  38. RoutingPresetMap m_presets;
  39. };
  40. } // namespace aja