summaryrefslogtreecommitdiff
path: root/src/android/camera_stream.h
AgeCommit message (Expand)Author
2021-12-06android: camera_stream: Use PlatformFrameBufferAllocatorHirokazu Honda
2021-12-01android: camera_stream: Add thread safety annotationHirokazu Honda
2021-12-01libcamera: Correct include headers for Mutex classesHirokazu Honda
2021-12-01android: Consolidate mutex classes to Mutex and MutexLockerHirokazu Honda
2021-12-01libcamera: base: Introduce ConditionVariableHirokazu Honda
2021-11-24android: Convert to pragma onceKieran Bingham
2021-10-26android: post_processor: Make post processing asyncUmang Jain
2021-10-26android: post_processor: Consolidate contextual informationUmang Jain
2021-10-19android: camera_stream: Define explicit move constructor and destructorsLaurent Pinchart
2021-10-19android: camera_stream: Return non-const pointer from camera3Stream()Laurent Pinchart
2021-10-19android: camera_stream: Pass StreamBuffer to process()Laurent Pinchart
2021-10-19android: camera_stream: Plumb process() with Camera3RequestDescriptorUmang Jain
2021-09-29android: Wait on fences in CameraStream::process()Jacopo Mondi
2021-08-10libcamera: Give MappedFrameBuffer its own implementationKieran Bingham
2021-07-11libcamera: buffer: Rename buffer.h to framebuffer.hLaurent Pinchart
2021-06-28android: camera_device: Fix null pointer dereferenceLaurent Pinchart
2021-05-05src: android: Rectify internal header's #include pathUmang Jain
2021-03-03android: Move buffer mapping to CameraStreamJacopo Mondi
2021-02-02android: post_processor: Change the type destination in process()Hirokazu Honda
2021-01-27android: Set result metadata and EXIF fields based on request metadataPaul Elder
2020-10-21android: camera_stream: Make some member variables constantHirokazu Honda
2020-10-16android: jpeg: Port to PostProcessor interfaceUmang Jain
2020-10-16android: CameraStream: Fix nitpick indentation for mutex_Umang Jain
2020-10-14android: camera_stream: Add documentationJacopo Mondi
2020-10-07android: camera_stream: Create buffer poolJacopo Mondi
2020-10-07android: camera_device: Make CameraStream configuration nicerJacopo Mondi
2020-10-07android: camera_stream: Fetch format and size from configurationJacopo Mondi
2020-10-07android: camera_stream: Retrieve Stream and ConfigurationJacopo Mondi
2020-10-07android: camera_device: Move processing to CameraStreamJacopo Mondi
2020-10-07android: camera_stream: Construct with Android streamJacopo Mondi
2020-10-07android: camera_stream: Delegate Encoder constructionJacopo Mondi
2020-10-07android: camera_stream: Add CameraStream::TypeJacopo Mondi
2020-10-07android: camera_stream: Break out CameraStreamJacopo Mondi
class="hl kwd">addBuffer(stream, buffer); camera_->queueRequest(request); } int init() override { if (status_ != TestPass) return status_; config_ = camera_->generateConfiguration({ StreamRole::VideoRecording }); if (!config_ || config_->size() != 1) { std::cout << "Failed to generate default configuration" << std::endl; return TestFail; } return TestPass; } int run() override { StreamConfiguration &cfg = config_->at(0); if (camera_->acquire()) { std::cout << "Failed to acquire the camera" << std::endl; return TestFail; } if (camera_->configure(config_.get())) { std::cout << "Failed to set default configuration" << std::endl; return TestFail; } Stream *stream = cfg.stream(); BufferSource source; int ret = source.allocate(cfg); if (ret != TestPass) return ret; std::vector<Request *> requests; for (const std::unique_ptr<FrameBuffer> &buffer : source.buffers()) { Request *request = camera_->createRequest(); if (!request) { std::cout << "Failed to create request" << std::endl; return TestFail; } if (request->addBuffer(stream, buffer.get())) { std::cout << "Failed to associating buffer with request" << std::endl; return TestFail; } requests.push_back(request); } completeRequestsCount_ = 0; completeBuffersCount_ = 0; camera_->bufferCompleted.connect(this, &BufferImportTest::bufferComplete); camera_->requestCompleted.connect(this, &BufferImportTest::requestComplete); if (camera_->start()) { std::cout << "Failed to start camera" << std::endl; return TestFail; } for (Request *request : requests) { if (camera_->queueRequest(request)) { std::cout << "Failed to queue request" << std::endl; return TestFail; } } EventDispatcher *dispatcher = cm_->eventDispatcher(); Timer timer; timer.start(1000); while (timer.isRunning()) dispatcher->processEvents(); if (completeRequestsCount_ <= cfg.bufferCount * 2) { std::cout << "Failed to capture enough frames (got " << completeRequestsCount_ << " expected at least " << cfg.bufferCount * 2 << ")" << std::endl; return TestFail; } if (completeRequestsCount_ != completeBuffersCount_) { std::cout << "Number of completed buffers and requests differ" << std::endl; return TestFail; } if (camera_->stop()) { std::cout << "Failed to stop camera" << std::endl; return TestFail; } return TestPass; } private: unsigned int completeBuffersCount_; unsigned int completeRequestsCount_; std::unique_ptr<CameraConfiguration> config_; }; } /* namespace */ TEST_REGISTER(BufferImportTest);