mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 07:19:45 +03:00
test: v4l2_subdevice: Add format handling test
Add test for video format get and set operations on V4L2Subdevice class. Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
a56f8a57b5
commit
7f4ce94ad9
5 changed files with 206 additions and 0 deletions
82
test/v4l2_subdevice/v4l2_subdevice_test.cpp
Normal file
82
test/v4l2_subdevice/v4l2_subdevice_test.cpp
Normal file
|
@ -0,0 +1,82 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright (C) 2019, Google Inc.
|
||||
*
|
||||
* v4l2_subdevice_test.cpp - VIMC-based V4L2 subdevice test
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "device_enumerator.h"
|
||||
#include "media_device.h"
|
||||
#include "v4l2_subdevice.h"
|
||||
#include "v4l2_subdevice_test.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace libcamera;
|
||||
|
||||
/*
|
||||
* This test runs on vimc media device. For a description of vimc, in the
|
||||
* context of libcamera testing, please refer to
|
||||
* 'test/media_device/media_device_link_test.cpp' file.
|
||||
*
|
||||
* If the vimc module is not loaded, the test gets skipped.
|
||||
*/
|
||||
|
||||
int V4L2SubdeviceTest::init()
|
||||
{
|
||||
enumerator_ = DeviceEnumerator::create();
|
||||
if (!enumerator_) {
|
||||
cerr << "Failed to create device enumerator" << endl;
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
if (enumerator_->enumerate()) {
|
||||
cerr << "Failed to enumerate media devices" << endl;
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
DeviceMatch dm("vimc");
|
||||
media_ = std::move(enumerator_->search(dm));
|
||||
if (!media_) {
|
||||
cerr << "Unable to find \'vimc\' media device node" << endl;
|
||||
return TestSkip;
|
||||
}
|
||||
|
||||
media_->acquire();
|
||||
|
||||
int ret = media_->open();
|
||||
if (ret) {
|
||||
cerr << "Unable to open media device: " << media_->deviceNode()
|
||||
<< ": " << strerror(ret) << endl;
|
||||
media_->release();
|
||||
return TestSkip;
|
||||
}
|
||||
|
||||
MediaEntity *videoEntity = media_->getEntityByName("Scaler");
|
||||
if (!videoEntity) {
|
||||
cerr << "Unable to find media entity 'Scaler'" << endl;
|
||||
media_->release();
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
scaler_ = new V4L2Subdevice(videoEntity);
|
||||
ret = scaler_->open();
|
||||
if (ret) {
|
||||
cerr << "Unable to open video subdevice "
|
||||
<< scaler_->deviceNode() << endl;
|
||||
media_->release();
|
||||
return TestSkip;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void V4L2SubdeviceTest::cleanup()
|
||||
{
|
||||
media_->release();
|
||||
|
||||
delete scaler_;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue