18 vector<GStreamerDefinition> goutputs;
20 if (!gopts->doesOptionExist(
"gstreamer")) {
return goutputs; }
27 auto goutput_node = gopts->getOptionNode(
"gstreamer");
29 if (!goutput_node || goutput_node.IsNull() || !goutput_node.IsSequence()) {
return goutputs; }
31 for (
auto goutput_item : goutput_node) {
33 gopts->get_required_variable_in_option<
string>(goutput_item,
"format"));
34 goutputs.emplace_back(
36 gopts->get_required_variable_in_option<
string>(goutput_item,
"filename"),
37 gopts->get_optional_variable_in_option<
string>(goutput_item,
"type")
38 .value_or(format ==
"sro" ?
"stream" :
"event")
40 auto& definition = goutputs.back();
41 definition.implementation = gopts->get_variable_in_option<
string>(goutput_item,
"implementation",
"");
42 if (format ==
"sro" && (definition.implementation.empty() || definition.type !=
"stream")) {
43 throw std::invalid_argument(
"sro requires an implementation plugin and type: stream (the default)");
45 if (format ==
"jlabsro") {
46 throw std::invalid_argument(
"jlabsro has been replaced by sro with an implementation plugin");