Files
allwpilib/cscore/examples/enum_usb/enum_usb.cpp

79 lines
2.7 KiB
C++
Raw Normal View History

2017-08-25 17:48:06 -07:00
/*----------------------------------------------------------------------------*/
2018-01-02 09:16:20 -08:00
/* Copyright (c) 2017-2018 FIRST. All Rights Reserved. */
2017-08-25 17:48:06 -07:00
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
#include <wpi/SmallString.h>
#include <wpi/raw_ostream.h>
2017-08-25 17:48:06 -07:00
#include "cscore.h"
int main() {
CS_Status status = 0;
wpi::SmallString<64> buf;
for (const auto& caminfo : cs::EnumerateUsbCameras(&status)) {
wpi::outs() << caminfo.dev << ": " << caminfo.path << " (" << caminfo.name
<< ")\n";
cs::UsbCamera camera{"usbcam", caminfo.dev};
wpi::outs() << "Properties:\n";
for (const auto& prop : camera.EnumerateProperties()) {
wpi::outs() << " " << prop.GetName();
2016-11-15 23:54:50 -08:00
switch (prop.GetKind()) {
case cs::VideoProperty::kBoolean:
wpi::outs() << " (bool): "
<< "value=" << prop.Get()
<< " default=" << prop.GetDefault();
break;
case cs::VideoProperty::kInteger:
wpi::outs() << " (int): "
<< "value=" << prop.Get() << " min=" << prop.GetMin()
<< " max=" << prop.GetMax() << " step=" << prop.GetStep()
<< " default=" << prop.GetDefault();
break;
case cs::VideoProperty::kString:
wpi::outs() << " (string): " << prop.GetString(buf);
break;
case cs::VideoProperty::kEnum: {
wpi::outs() << " (enum): "
<< "value=" << prop.Get();
auto choices = prop.GetChoices();
for (size_t i = 0; i < choices.size(); ++i) {
if (choices[i].empty()) continue;
wpi::outs() << "\n " << i << ": " << choices[i];
}
break;
}
default:
break;
}
wpi::outs() << '\n';
}
wpi::outs() << "Video Modes:\n";
for (const auto& mode : camera.EnumerateVideoModes()) {
wpi::outs() << " PixelFormat:";
switch (mode.pixelFormat) {
2017-08-25 17:48:06 -07:00
case cs::VideoMode::kMJPEG:
wpi::outs() << "MJPEG";
2017-08-25 17:48:06 -07:00
break;
case cs::VideoMode::kYUYV:
wpi::outs() << "YUYV";
2017-08-25 17:48:06 -07:00
break;
case cs::VideoMode::kRGB565:
wpi::outs() << "RGB565";
2017-08-25 17:48:06 -07:00
break;
default:
wpi::outs() << "Unknown";
2017-08-25 17:48:06 -07:00
break;
}
wpi::outs() << " Width:" << mode.width;
wpi::outs() << " Height:" << mode.height;
wpi::outs() << " FPS:" << mode.fps << '\n';
}
}
}