summaryrefslogtreecommitdiff
path: root/src/qcam
AgeCommit message (Expand)Author
2020-06-17qcam: main_window: Introduce initial hotplug supportUmang Jain
2020-06-16qcam: dng_writer: Record creation time in the EXIF directoryNiklas Söderlund
2020-06-15qcam: dng_writer: Add support for IPU3 Bayer formatsNiklas Söderlund
2020-06-09qcam: Specify Feather icons license in DEP5Laurent Pinchart
2020-06-09libcamera: Add missing SPDX headers to miscellaneous small filesLaurent Pinchart
2020-06-09qcam: Fix compilation with Qt v5.15.0Peter Seiderer
2020-06-06libcamera: Rename pixelformats.{cpp,h} to pixel_format.{cpp,h}Laurent Pinchart
2020-05-28qcam: viewfinder: Use correct DRM/QImage mappingsKieran Bingham
2020-05-18(q)cam: Fix header guardsLaurent Pinchart
2020-05-13licenses: License all meson files under CC0-1.0Laurent Pinchart
2020-05-04qcam: dng_writer: Write EXIF IFD as custom directoryLaurent Pinchart
2020-05-03qcam: dng_writer: Remove colon from \todoNiklas Söderlund
2020-05-03qcam: dng_writer: Generate thumbnail in RGB formatLaurent Pinchart
2020-05-03qcam: dng_writer: Populate DNG tags from metadataLaurent Pinchart
2020-05-03qcam: dng_writer: Output thumbnailLaurent Pinchart
2020-05-03qcam: dng_writer: Name arguments to packScanline()Laurent Pinchart
2020-05-03qcam: Pass request metadata to DNG writerLaurent Pinchart
2020-05-03qcam: dng_writer: Fix missing field nameNiklas Söderlund
2020-05-02qcam: Add RAW capture supportNiklas Söderlund
2020-05-02qcam: Add DNGWriterNiklas Söderlund
2020-05-02qcam: Allow for a second raw stream to be configuredNiklas Söderlund
2020-05-01qcam: Check that camera can generate configuration from rolesNiklas Söderlund
2020-05-01qcam: Make use of StreamKeyValueParserNiklas Söderlund
2020-04-30qcam: main_window: Fix combo-box entry selection on startupUmang Jain
2020-04-30qcam: main_window: Make cameraCombo_ privateUmang Jain
2020-04-30qcam: Fix logging of sequence numberLaurent Pinchart
2020-04-27qcam: Don't crash if camera can't be openedLaurent Pinchart
2020-03-26qcam: Print whole stream configuration when adjustedLaurent Pinchart
2020-03-24qcam: main_window: Prefer stream formats that don't require conversionLaurent Pinchart
2020-03-24qcam: viewfinder: Report the natively supported pixel formatsLaurent Pinchart
2020-03-24qcam: viewfinder: Print message to report format converter usageLaurent Pinchart
2020-03-24qcam: viewfinder: Add support for more native formatsLaurent Pinchart
2020-03-24qcam: viewfinder: Display icon when stopping captureLaurent Pinchart
2020-03-24qcam: viewfinder: Avoid memory copy when conversion isn't neededLaurent Pinchart
2020-03-24qcam: viewfinder: Reorder methods to match header fileLaurent Pinchart
2020-03-24qcam: viewfinder: Use PixelFormat default constructorLaurent Pinchart
2020-03-24qcam: viewfinder: Embed QImage in ViewFinderLaurent Pinchart
2020-03-24qcam: viewfinder: Make the viewfinder hold a reference to a bufferLaurent Pinchart
2020-03-24qcam: viewfinder: Move multi-planar check into viewfinderLaurent Pinchart
2020-03-24qcam: viewfinder: Add MappedBuffer to store memory mapping informationLaurent Pinchart
2020-03-24qcam: Use Qt qInfo() and qWarning() logging facilitiesLaurent Pinchart
2020-03-24qcam: main_window: Remove unneeded debug messageLaurent Pinchart
2020-03-24qcam: main_window: Document functions and reorganize member dataLaurent Pinchart
2020-03-24qcam: main_window: Don't print message when saving a pictureLaurent Pinchart
2020-03-24qcam: main_window: Add shortcuts for toolbar actionsLaurent Pinchart
2020-03-24qcam: main_window: Use icons from system icon themeLaurent Pinchart
2020-03-24qcam: main_window: Replace start and stop actions with a toggle actionLaurent Pinchart
2020-03-24qcam: main_window: Move capture event processing to main threadLaurent Pinchart
2020-03-24qcam: main_window: Move request queuing to a separate functionLaurent Pinchart
2020-03-24qcam: Use QSize through the code baseLaurent Pinchart
s="hl opt">; } int testConfigured() { /* Test operations which should fail. */ if (camera_->acquire() != -EBUSY) return TestFail; if (camera_->freeBuffers() != -EACCES) return TestFail; if (camera_->createRequest()) return TestFail; Request request(camera_.get()); if (camera_->queueRequest(&request) != -EACCES) return TestFail; if (camera_->start() != -EACCES) return TestFail; if (camera_->stop() != -EACCES) return TestFail; /* Test operations which should pass. */ if (camera_->configureStreams(defconf_)) return TestFail; /* Test valid state transitions, end in Prepared state. */ if (camera_->release()) return TestFail; if (camera_->acquire()) return TestFail; if (camera_->configureStreams(defconf_)) return TestFail; if (camera_->allocateBuffers()) return TestFail; return TestPass; } int testPrepared() { /* Test operations which should fail. */ if (camera_->acquire() != -EBUSY) return TestFail; if (camera_->release() != -EBUSY) return TestFail; if (camera_->configureStreams(defconf_) != -EACCES) return TestFail; if (camera_->allocateBuffers() != -EACCES) return TestFail; Request request1(camera_.get()); if (camera_->queueRequest(&request1) != -EACCES) return TestFail; if (camera_->stop() != -EACCES) return TestFail; /* Test operations which should pass. */ Request *request2 = camera_->createRequest(); if (!request2) return TestFail; /* Never handed to hardware so need to manually delete it. */ delete request2; /* Test valid state transitions, end in Running state. */ if (camera_->freeBuffers()) return TestFail; if (camera_->release()) return TestFail; if (camera_->acquire()) return TestFail; if (camera_->configureStreams(defconf_)) return TestFail; if (camera_->allocateBuffers()) return TestFail; if (camera_->start()) return TestFail; return TestPass; } int testRuning() { /* Test operations which should fail. */ if (camera_->acquire() != -EBUSY) return TestFail; if (camera_->release() != -EBUSY) return TestFail; if (camera_->configureStreams(defconf_) != -EACCES) return TestFail; if (camera_->allocateBuffers() != -EACCES) return TestFail; if (camera_->freeBuffers() != -EACCES) return TestFail; if (camera_->start() != -EACCES) return TestFail; /* Test operations which should pass. */ Request *request = camera_->createRequest(); if (!request) return TestFail; Stream *stream = *camera_->streams().begin(); BufferPool &pool = stream->bufferPool(); Buffer &buffer = pool.buffers().front(); std::map<Stream *, Buffer *> map = { { stream, &buffer } }; if (request->setBuffers(map)) return TestFail; if (camera_->queueRequest(request)) return TestFail; /* Test valid state transitions, end in Available state. */ if (camera_->stop()) return TestFail; if (camera_->freeBuffers()) return TestFail; if (camera_->release()) return TestFail; return TestPass; } int run() { Stream *stream = *camera_->streams().begin(); std::set<Stream *> streams = { stream }; defconf_ = camera_->streamConfiguration(streams); if (testAvailable() != TestPass) { cout << "State machine in Available state failed" << endl; return TestFail; } if (testAcquired() != TestPass) { cout << "State machine in Acquired state failed" << endl; return TestFail; } if (testConfigured() != TestPass) { cout << "State machine in Configured state failed" << endl; return TestFail; } if (testPrepared() != TestPass) { cout << "State machine in Prepared state failed" << endl; return TestFail; } if (testRuning() != TestPass) { cout << "State machine in Running state failed" << endl; return TestFail; } return TestPass; } std::map<Stream *, StreamConfiguration> defconf_; }; } /* namespace */ TEST_REGISTER(Statemachine);