diff --git a/src/MjpegServerImpl.cpp b/src/MjpegServerImpl.cpp
index 628ce87f80..b741750ab6 100644
--- a/src/MjpegServerImpl.cpp
+++ b/src/MjpegServerImpl.cpp
@@ -55,6 +55,12 @@ static const char* startRootPage = "
\n"
" httpGetAsync(name, val);\n"
"}\n"
"\n"
+ "\n"
"CameraServer\n"
"
\n"
"Settings JSON\n";
@@ -386,6 +392,28 @@ void MjpegServerImpl::ConnThread::SendHTML(llvm::raw_ostream& os,
}
}
+ os << "Supported Video Modes:
\n";
+ os << "\n";
+ os << "| Pixel Format | "
+ << "Width | "
+ << "Height | "
+ << "FPS |
";
+ for (auto mode : source.EnumerateVideoModes(&status)) {
+ os << "| ";
+ switch (mode.pixelFormat) {
+ case VideoMode::kMJPEG: os << "MJPEG"; break;
+ case VideoMode::kYUYV: os << "YUYV"; break;
+ case VideoMode::kRGB565: os << "RGB565"; break;
+ case VideoMode::kBGR: os << "BGR"; break;
+ case VideoMode::kGray: os << "gray"; break;
+ default: os << "unknown"; break;
+ }
+ os << " | " << mode.width;
+ os << " | " << mode.height;
+ os << " | " << mode.fps;
+ os << " |
";
+ }
+ os << "
\n";
os << endRootPage << "\r\n";
os.flush();
}
@@ -404,7 +432,7 @@ void MjpegServerImpl::ConnThread::SendJSON(llvm::raw_ostream& os,
first = false;
else
os << ",\n";
- os << "{";
+ os << '{';
llvm::SmallString<128> name_buf;
auto name = source.GetPropertyName(prop, name_buf, &status);
auto kind = source.GetPropertyKind(prop);
@@ -453,6 +481,28 @@ void MjpegServerImpl::ConnThread::SendJSON(llvm::raw_ostream& os,
}
os << '}';
}
+ os << "\n],\n\"modes\": [\n";
+ first = true;
+ for (auto mode : source.EnumerateVideoModes(&status)) {
+ if (first)
+ first = false;
+ else
+ os << ",\n";
+ os << '{';
+ os << "\n\"pixelFormat\": \"";
+ switch (mode.pixelFormat) {
+ case VideoMode::kMJPEG: os << "MJPEG"; break;
+ case VideoMode::kYUYV: os << "YUYV"; break;
+ case VideoMode::kRGB565: os << "RGB565"; break;
+ case VideoMode::kBGR: os << "BGR"; break;
+ case VideoMode::kGray: os << "gray"; break;
+ default: os << "unknown"; break;
+ }
+ os << "\",\n\"width\": \"" << mode.width << '"';
+ os << ",\n\"height\": \"" << mode.height << '"';
+ os << ",\n\"fps\": \"" << mode.fps << '"';
+ os << '}';
+ }
os << "\n]\n}\n";
os.flush();
}