using namespace std;
using namespace google::protobuf;
+string spec_to_string(DeviceSpec device_spec)
+{
+ char buf[256];
+
+ switch (device_spec.type) {
+ case InputSourceType::SILENCE:
+ return "<silence>";
+ case InputSourceType::CAPTURE_CARD:
+ snprintf(buf, sizeof(buf), "Capture card %u", device_spec.index);
+ return buf;
+ case InputSourceType::ALSA_INPUT:
+ snprintf(buf, sizeof(buf), "ALSA input %u", device_spec.index);
+ return buf;
+ case InputSourceType::FFMPEG_VIDEO_INPUT:
+ snprintf(buf, sizeof(buf), "FFmpeg input %u", device_spec.index);
+ return buf;
+ default:
+ assert(false);
+ }
+}
+
bool save_input_mapping_to_file(const map<DeviceSpec, DeviceInfo> &devices, const InputMapping &input_mapping, const string &filename)
{
InputMappingProto mapping_proto;
case DeviceSpecProto::SILENCE:
device_mapping.push_back(DeviceSpec{InputSourceType::SILENCE, 0});
break;
+ case DeviceSpecProto::FFMPEG_VIDEO_INPUT:
case DeviceSpecProto::CAPTURE_CARD: {
// First see if there's a card that matches on both index and name.
- DeviceSpec spec{InputSourceType::CAPTURE_CARD, unsigned(device_proto.index())};
+ DeviceSpec spec;
+ spec.type = (device_proto.type() == DeviceSpecProto::CAPTURE_CARD) ?
+ InputSourceType::CAPTURE_CARD : InputSourceType::FFMPEG_VIDEO_INPUT;
+ spec.index = unsigned(device_proto.index());
assert(devices.count(spec));
+
const DeviceInfo &dev = devices.find(spec)->second;
if (remaining_devices.count(spec) &&
dev.display_name == device_proto.display_name()) {