aja-presets.hpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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, NTV2Mode mode, NTV2VideoFormat vf,
  33. NTV2PixelFormat pf, VPIDStandard standard, HDMIWireFormat hwf, RoutingPreset &preset);
  34. private:
  35. void build_preset_table();
  36. RoutingPresetMap m_presets;
  37. };
  38. } // namespace aja