libcamera/test/v4l2_subdevice/list_formats.cpp
Jacopo Mondi 5b9b3c38a1 libcamera: v4l2_subdevice: Rename deviceName() method
Rename the 'deviceName()' method to 'entityName()' as it actually
returns the name of the entity backing the v4l2 subdevice.

While at it, make the names getter methods return a const reference
instead of returning by copy.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2019-04-02 11:02:38 +02:00

81 lines
2.1 KiB
C++

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright (C) 2019, Google Inc.
*
* libcamera V4L2 Subdevice format handling test
*/
#include <iomanip>
#include <iostream>
#include <vector>
#include "geometry.h"
#include "v4l2_subdevice.h"
#include "v4l2_subdevice_test.h"
using namespace std;
using namespace libcamera;
/* List image formats on the "Scaler" subdevice of vimc media device. */
class ListFormatsTest : public V4L2SubdeviceTest
{
protected:
int run() override;
private:
void printFormats(unsigned int pad, unsigned code,
std::vector<SizeRange> &formats);
};
void ListFormatsTest::printFormats(unsigned int pad,
unsigned int code,
std::vector<SizeRange> &sizes)
{
cout << "Enumerate formats on pad " << pad << endl;
for (SizeRange &size : sizes) {
cout << " mbus code: 0x" << setfill('0') << setw(4)
<< hex << code << endl;
cout << " min width: " << dec << size.minWidth << endl;
cout << " min height: " << dec << size.minHeight << endl;
cout << " max width: " << dec << size.maxWidth << endl;
cout << " max height: " << dec << size.maxHeight << endl;
}
}
int ListFormatsTest::run()
{
/* List all formats available on existing "Scaler" pads. */
std::map<unsigned int, std::vector<SizeRange>> formats;
formats = scaler_->formats(0);
if (formats.empty()) {
cerr << "Failed to list formats on pad 0 of subdevice "
<< scaler_->entityName() << endl;
return TestFail;
}
for (auto it = formats.begin(); it != formats.end(); ++it)
printFormats(0, it->first, it->second);
formats = scaler_->formats(1);
if (formats.empty()) {
cerr << "Failed to list formats on pad 1 of subdevice "
<< scaler_->entityName() << endl;
return TestFail;
}
for (auto it = formats.begin(); it != formats.end(); ++it)
printFormats(1, it->first, it->second);
/* List format on a non-existing pad, format vector shall be empty. */
formats = scaler_->formats(2);
if (!formats.empty()) {
cerr << "Listing formats on non-existing pad 2 of subdevice "
<< scaler_->entityName()
<< " should return an empty format list" << endl;
return TestFail;
}
return TestPass;
}
TEST_REGISTER(ListFormatsTest);