Lines Matching +full:function +full:- +full:enumerator

2 From: Jeffy Chen <jeffy.chen@rock-chips.com>
11 gst-launch-1.0 libcamerasrc ! waylandsink
13 Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
14 ---
15 meson_options.txt | 2 +-
16 src/libcamera/device_enumerator.cpp | 8 +-
22 7 files changed, 552 insertions(+), 3 deletions(-)
28 diff --git a/meson_options.txt b/meson_options.txt
30 --- a/meson_options.txt
32 @@ -37,7 +37,7 @@ option('lc-compliance',
36 - choices : ['ipu3', 'raspberrypi', 'rkisp1', 'simple', 'uvcvideo', 'vimc'],
41 diff --git a/src/libcamera/device_enumerator.cpp b/src/libcamera/device_enumerator.cpp
43 --- a/src/libcamera/device_enumerator.cpp
45 @@ -93,8 +93,12 @@ void DeviceMatch::add(const std::string &entity)
49 - if (driver_ != device->driver())
50 - return false;
51 + const std::string driver = device->driver();
60 diff --git a/src/libcamera/pipeline/custom/custom.cpp b/src/libcamera/pipeline/custom/custom.cpp
63 --- /dev/null
65 @@ -0,0 +1,415 @@
66 +/* SPDX-License-Identifier: LGPL-2.1-or-later */
73 + * custom.cpp - Pipeline handler for custom devices
151 + bool match(DeviceEnumerator *enumerator) override;
156 + return static_cast<CustomCameraData *>(camera->_d());
220 + int ret = data_->video_->tryFormat(&format);
260 + V4L2VideoDevice::Formats v4l2Formats = data->video_->formats();
281 + config->addConfiguration(cfg);
283 + config->validate();
291 + StreamConfiguration &cfg = config->at(0);
298 + ret = data->video_->setFormat(&format);
304 + return -EINVAL;
306 + cfg.setStream(&data->stream_);
315 + unsigned int count = stream->configuration().bufferCount;
317 + return data->video_->exportBuffers(count, buffers);
323 + unsigned int count = data->stream_.configuration().bufferCount;
325 + int ret = data->video_->importBuffers(count);
329 + ret = data->video_->streamOn();
331 + data->video_->releaseBuffers();
341 + data->video_->streamOff();
342 + data->video_->releaseBuffers();
350 + FrameBuffer *buffer = request->findBuffer(&data->stream_);
355 + return -ENOENT;
358 + ret = data->video_->queueBuffer(buffer);
365 +bool PipelineHandlerCustom::match(DeviceEnumerator *enumerator)
379 + media = acquireMediaDevice(enumerator, dm);
386 + if (data->init(media))
390 + std::string id = media->model();
396 + std::set<Stream *> streams{ &data->stream_ };
409 + const std::vector<MediaEntity *> &entities = media->entities();
415 + if (e->name() == name) return true;
417 + return e->name().find(name.substr(4)) != string::npos;
423 + return e->function() == MEDIA_ENT_F_IO_V4L;
435 + return -ENODEV;
440 + int ret = video_->open();
444 + video_->bufferReady.connect(this, &CustomCameraData::bufferReady);
446 + properties_.set(properties::Model, utils::toAscii(media->model()));
453 + for (const auto &it : video_->formats()) {
468 + Request *request = buffer->request();
471 + request->metadata().set(controls::SensorTimestamp,
472 + buffer->metadata().timestamp);
474 + pipe()->completeBuffer(request, buffer);
475 + pipe()->completeRequest(request);
481 diff --git a/src/libcamera/pipeline/custom/meson.build b/src/libcamera/pipeline/custom/meson.build
484 --- /dev/null
486 @@ -0,0 +1,5 @@
487 +# SPDX-License-Identifier: CC0-1.0
492 diff --git a/test/pipeline/custom/custom_pipeline_test.cpp b/test/pipeline/custom/custom_pipeline_t…
495 --- /dev/null
497 @@ -0,0 +1,110 @@
498 +/* SPDX-License-Identifier: GPL-2.0-or-later */
502 + * custom_pipeline_test.cpp - Custom pipeline test
544 + unique_ptr<DeviceEnumerator> enumerator = DeviceEnumerator::create();
545 + if (!enumerator) {
546 + cerr << "Failed to create device enumerator" << endl;
550 + if (enumerator->enumerate()) {
567 + std::shared_ptr<MediaDevice> device = enumerator->search(dm);
578 + int ret = cameraManager_->start();
589 + auto cameras = cameraManager_->cameras();
591 + cout << "Found camera '" << cam->id() << "'" << endl;
603 + cameraManager_->stop();
608 diff --git a/test/pipeline/custom/meson.build b/test/pipeline/custom/meson.build
611 --- /dev/null
613 @@ -0,0 +1,14 @@
614 +# SPDX-License-Identifier: CC0-1.0
628 diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build
630 --- a/test/pipeline/meson.build
632 @@ -2,3 +2,4 @@
637 --