summaryrefslogtreecommitdiff
path: root/test/camera
diff options
context:
space:
mode:
Diffstat (limited to 'test/camera')
-rw-r--r--test/camera/buffer_import.cpp95
1 files changed, 1 insertions, 94 deletions
diff --git a/test/camera/buffer_import.cpp b/test/camera/buffer_import.cpp
index 6997ea78..3f392cdc 100644
--- a/test/camera/buffer_import.cpp
+++ b/test/camera/buffer_import.cpp
@@ -16,6 +16,7 @@
#include "media_device.h"
#include "v4l2_videodevice.h"
+#include "buffer_source.h"
#include "camera_test.h"
#include "test.h"
@@ -23,100 +24,6 @@ using namespace libcamera;
namespace {
-/* A provider of external buffers, suitable for import by a Camera. */
-class BufferSource
-{
-public:
- BufferSource()
- : video_(nullptr)
- {
- }
-
- ~BufferSource()
- {
- if (video_) {
- video_->releaseBuffers();
- video_->close();
- }
-
- delete video_;
- video_ = nullptr;
-
- if (media_)
- media_->release();
- }
-
- int allocate(const StreamConfiguration &config)
- {
- /* Locate and open the video device. */
- std::string videoDeviceName = "vivid-000-vid-out";
-
- std::unique_ptr<DeviceEnumerator> enumerator =
- DeviceEnumerator::create();
- if (!enumerator) {
- std::cout << "Failed to create device enumerator" << std::endl;
- return TestFail;
- }
-
- if (enumerator->enumerate()) {
- std::cout << "Failed to enumerate media devices" << std::endl;
- return TestFail;
- }
-
- DeviceMatch dm("vivid");
- dm.add(videoDeviceName);
-
- media_ = enumerator->search(dm);
- if (!media_) {
- std::cout << "No vivid output device available" << std::endl;
- return TestSkip;
- }
-
- video_ = V4L2VideoDevice::fromEntityName(media_.get(), videoDeviceName);
- if (!video_) {
- std::cout << "Failed to get video device from entity "
- << videoDeviceName << std::endl;
- return TestFail;
- }
-
- if (video_->open()) {
- std::cout << "Unable to open " << videoDeviceName << std::endl;
- return TestFail;
- }
-
- /* Configure the format. */
- V4L2DeviceFormat format;
- if (video_->getFormat(&format)) {
- std::cout << "Failed to get format on output device" << std::endl;
- return TestFail;
- }
-
- format.size = config.size;
- format.fourcc = V4L2VideoDevice::toV4L2Fourcc(config.pixelFormat, false);
- if (video_->setFormat(&format)) {
- std::cout << "Failed to set format on output device" << std::endl;
- return TestFail;
- }
-
- if (video_->exportBuffers(config.bufferCount, &buffers_) < 0) {
- std::cout << "Failed to export buffers" << std::endl;
- return TestFail;
- }
-
- return TestPass;
- }
-
- const std::vector<std::unique_ptr<FrameBuffer>> &buffers()
- {
- return buffers_;
- }
-
-private:
- std::shared_ptr<MediaDevice> media_;
- V4L2VideoDevice *video_;
- std::vector<std::unique_ptr<FrameBuffer>> buffers_;
-};
-
class BufferImportTest : public CameraTest, public Test
{
public: