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 << "" + << "" + << "" + << ""; + for (auto mode : source.EnumerateVideoModes(&status)) { + os << ""; + } + os << "
Pixel FormatWidthHeightFPS
"; + 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 << "
\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(); }