summaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2022-07-28ipa: raspberrypi: Replace tabs with spaces in tuning data filesLaurent Pinchart
2022-07-28libcamera: yaml_parser: Preserve order of items in dictionaryLaurent Pinchart
2022-07-28test: yaml-parser: Test dictionary items orderingLaurent Pinchart
2022-07-28libcamera: yaml_parser: Replace ok flag to get() with std::optionalLaurent Pinchart
2022-07-27ipa: raspberrypi: agc: Fix log message prefixesNaushir Patuck
2022-07-27ipa: raspberrypi: Remove #define constantsNaushir Patuck
2022-07-27ipa: raspberryip: Remove all exception throw statementsNaushir Patuck
2022-07-27raspberrypi: Update Copyright statement in all Raspberry Pi source filesNaushir Patuck
2022-07-27ipa: raspberrypi: Rename header files from *.hpp to *.hNaushir Patuck
2022-07-27ipa: raspberrypi: Remove extern "C" declarationsNaushir Patuck
2022-07-27ipa: raspberrypi: Change to C style code commentsNaushir Patuck
2022-07-27ipa: raspberrypi: Code refactoring to match style guidelinesNaushir Patuck
2022-07-27libcamera: camera: Fix documentation typoUmang Jain
2022-07-26libcamera: Correctly report enabled ipa modulesQuentin Schulz
2022-07-25android: camera_capabilities: Adjust minimum frame duration to match FPSHan-Lin Chen
2022-07-25android: camera_capabilities: Add (1600x1200) and (1280x960) resolutionsHan-Lin Chen
2022-07-24android: exif: Fix thumbnail buffer lifetimeCheng-Hao Yang
2022-07-24test: gstreamer: Check availability of cameras before runningUmang Jain
2022-07-24test: gstreamer: Drop internal header from base classUmang Jain
2022-07-22qcam: assets: shader: bayer_8.frag: Add precisionKunal Agarwal
2022-07-22ipa: rkisp1: Transfer queueRequest() call to each algorithmFlorian Sylvestre
2022-07-22ipa: libipa: algorithm: Add queueRequest() to the Algorithm classFlorian Sylvestre
2022-07-22pipeline: raspberrypi: Improve image/embedded buffer matching logicNaushir Patuck
2022-07-21libcamera: pipeline: simple: converter: Handle unsupported input formatXavier Roumegue
2022-07-20ipa: rkisp1: Drop unnecessary forward declarations and includesLaurent Pinchart
2022-07-20libcamera: controls: Suppress error message from ControlList::get()Naushir Patuck
2022-07-20libcamera: controls: Drop ControlList::contains()Laurent Pinchart
2022-07-20test: control_list: Use get() to test for control presenceLaurent Pinchart
2022-07-20licamera: controls: Update ControlList::get() documentationLaurent Pinchart
2022-07-20licamera: controls: Drop unnecessary template qualifiers in documentationLaurent Pinchart
2022-07-20libcamera: Remove extra ':' after '\todo'Laurent Pinchart
2022-07-20pipeline: rkisp1: Support devices without self pathPaul Elder
2022-07-19gstreamer: Be pedantic on srcpads accessUmang Jain
2022-07-19utils: ipu3-pack: Provide a 10-bit bayer packing utilityUmang Jain
2022-07-19libcamera: controls: Avoid double lookupsLaurent Pinchart
2022-07-19libcamera: controls: Use std::optional to handle invalid control valuesChristian Rauch
2022-07-18qcam: viewfinder_qt: Support X RGB variantsKieran Bingham
2022-07-18qcam: format_converter: Support X RGB variantsKieran Bingham
2022-07-18qcam: viewfinder_qt: Fix include ordersKieran Bingham
2022-07-18qcam: main_window: Fix include orderingKieran Bingham
2022-07-18libcamera: raspberry: Fix format validationJacopo Mondi
2022-07-15cam: sdl: Use uint32_t in place of SDL_PixelFormatEnumJacopo Mondi
2022-07-15utils: rkisp1: Support optional CSI-2 receiver subdevLaurent Pinchart
2022-07-15utils: rkisp1: Fix pixel format for raw captureLaurent Pinchart
2022-07-15utils: rkisp1: Fix sensor format parsingLaurent Pinchart
2022-07-15utils: rkisp1: Remove frames before starting captureLaurent Pinchart
2022-07-14pipeline: raspberrypi: Fix incorrect advertising of ScalerCropNaushir Patuck
2022-07-14pipeline: rkisp1: Support media graph with separate CSI RXPaul Elder
2022-07-13utils: ipu3-unpack: Fix error stringUmang Jain
2022-07-13libcamera: base: Suppress clang-11 compile error on ARM32Naushir Patuck
span> { delete loop_; loop_ = nullptr; if (camera_) { camera_->release(); camera_.reset(); } cm_->stop(); } int CamApp::exec() { int ret; ret = run(); cleanup(); return ret; } void CamApp::quit() { if (loop_) loop_->exit(); } int CamApp::parseOptions(int argc, char *argv[]) { KeyValueParser streamKeyValue; streamKeyValue.addOption("role", OptionString, "Role for the stream (viewfinder, video, still)", ArgumentRequired); streamKeyValue.addOption("width", OptionInteger, "Width in pixels", ArgumentRequired); streamKeyValue.addOption("height", OptionInteger, "Height in pixels", ArgumentRequired); streamKeyValue.addOption("pixelformat", OptionInteger, "Pixel format", ArgumentRequired); OptionsParser parser; parser.addOption(OptCamera, OptionString, "Specify which camera to operate on", "camera", ArgumentRequired, "camera"); parser.addOption(OptCapture, OptionNone, "Capture until interrupted by user", "capture"); parser.addOption(OptFile, OptionString, "Write captured frames to disk\n" "The first '#' character in the file name is expanded to the stream name and frame sequence number.\n" "The default file name is 'frame-#.bin'.", "file", ArgumentOptional, "filename"); parser.addOption(OptStream, &streamKeyValue, "Set configuration of a camera stream", "stream", true); parser.addOption(OptHelp, OptionNone, "Display this help message", "help"); parser.addOption(OptList, OptionNone, "List all cameras", "list"); options_ = parser.parse(argc, argv); if (!options_.valid()) return -EINVAL; if (options_.empty() || options_.isSet(OptHelp)) { parser.usage(); return options_.empty() ? -EINVAL : -EINTR; } return 0; } int CamApp::run() { if (options_.isSet(OptList)) { std::cout << "Available cameras:" << std::endl; for (const std::shared_ptr<Camera> &cam : cm_->cameras()) std::cout << "- " << cam->name() << std::endl; } if (options_.isSet(OptCapture)) { Capture capture(camera_.get()); return capture.run(loop_, options_); } return 0; } void signalHandler(int signal) { std::cout << "Exiting" << std::endl; CamApp::instance()->quit(); } int main(int argc, char **argv) { CamApp app; if (app.init(argc, argv)) return EXIT_FAILURE; struct sigaction sa = {}; sa.sa_handler = &signalHandler; sigaction(SIGINT, &sa, nullptr); if (app.exec()) return EXIT_FAILURE; return 0; }