|
@@ -56,6 +56,34 @@ NLOHMANN_JSON_SERIALIZE_ENUM(obs_scale_type, {
|
|
|
{OBS_SCALE_AREA, "OBS_SCALE_AREA"},
|
|
|
})
|
|
|
|
|
|
+NLOHMANN_JSON_SERIALIZE_ENUM(video_colorspace, {
|
|
|
+ {VIDEO_CS_DEFAULT, "VIDEO_CS_DEFAULT"},
|
|
|
+ {VIDEO_CS_601, "VIDEO_CS_601"},
|
|
|
+ {VIDEO_CS_709, "VIDEO_CS_709"},
|
|
|
+ {VIDEO_CS_SRGB, "VIDEO_CS_SRGB"},
|
|
|
+ {VIDEO_CS_2100_PQ, "VIDEO_CS_2100_PQ"},
|
|
|
+ {VIDEO_CS_2100_HLG, "VIDEO_CS_2100_HLG"},
|
|
|
+ })
|
|
|
+
|
|
|
+/* This only includes output formats selectable in advanced settings. */
|
|
|
+NLOHMANN_JSON_SERIALIZE_ENUM(video_format, {
|
|
|
+ {VIDEO_FORMAT_NONE, "VIDEO_FORMAT_NONE"},
|
|
|
+ {VIDEO_FORMAT_I420, "VIDEO_FORMAT_I420"},
|
|
|
+ {VIDEO_FORMAT_NV12, "VIDEO_FORMAT_NV12"},
|
|
|
+ {VIDEO_FORMAT_BGRA, "VIDEO_FORMAT_BGRA"},
|
|
|
+ {VIDEO_FORMAT_I444, "VIDEO_FORMAT_I444"},
|
|
|
+ {VIDEO_FORMAT_I010, "VIDEO_FORMAT_I010"},
|
|
|
+ {VIDEO_FORMAT_P010, "VIDEO_FORMAT_P010"},
|
|
|
+ {VIDEO_FORMAT_P216, "VIDEO_FORMAT_P216"},
|
|
|
+ {VIDEO_FORMAT_P416, "VIDEO_FORMAT_P416"},
|
|
|
+ })
|
|
|
+
|
|
|
+NLOHMANN_JSON_SERIALIZE_ENUM(video_range_type, {
|
|
|
+ {VIDEO_RANGE_DEFAULT, "VIDEO_RANGE_DEFAULT"},
|
|
|
+ {VIDEO_RANGE_PARTIAL, "VIDEO_RANGE_PARTIAL"},
|
|
|
+ {VIDEO_RANGE_FULL, "VIDEO_RANGE_FULL"},
|
|
|
+ })
|
|
|
+
|
|
|
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(media_frames_per_second, numerator, denominator)
|
|
|
|
|
|
namespace GoLiveApi {
|
|
@@ -212,10 +240,13 @@ struct VideoEncoderConfiguration {
|
|
|
uint32_t height;
|
|
|
optional<media_frames_per_second> framerate;
|
|
|
optional<obs_scale_type> gpu_scale_type;
|
|
|
+ optional<video_colorspace> colorspace;
|
|
|
+ optional<video_range_type> range;
|
|
|
+ optional<video_format> format;
|
|
|
json settings;
|
|
|
|
|
|
NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(VideoEncoderConfiguration, type, width, height, framerate,
|
|
|
- gpu_scale_type, settings)
|
|
|
+ gpu_scale_type, colorspace, range, format, settings)
|
|
|
};
|
|
|
|
|
|
struct AudioEncoderConfiguration {
|