diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cam/kms_sink.cpp | 16 | ||||
-rw-r--r-- | src/cam/kms_sink.h | 1 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/cam/kms_sink.cpp b/src/cam/kms_sink.cpp index d30fba78..da579846 100644 --- a/src/cam/kms_sink.cpp +++ b/src/cam/kms_sink.cpp @@ -136,7 +136,7 @@ int KMSSink::configure(const libcamera::CameraConfiguration &config) return 0; } -int KMSSink::configurePipeline(const libcamera::PixelFormat &format) +int KMSSink::selectPipeline(const libcamera::PixelFormat &format) { /* * If the requested format has an alpha channel, also consider the X @@ -174,25 +174,31 @@ int KMSSink::configurePipeline(const libcamera::PixelFormat &format) crtc_ = crtc; plane_ = plane; format_ = format; - break; + return 0; } if (plane->supportsFormat(xFormat)) { crtc_ = crtc; plane_ = plane; format_ = xFormat; - break; + return 0; } } } } - if (!crtc_) { + return -EPIPE; +} + +int KMSSink::configurePipeline(const libcamera::PixelFormat &format) +{ + const int ret = selectPipeline(format); + if (ret) { std::cerr << "Unable to find display pipeline for format " << format.toString() << std::endl; - return -EPIPE; + return ret; } std::cout diff --git a/src/cam/kms_sink.h b/src/cam/kms_sink.h index 1e4290ad..4a0a872c 100644 --- a/src/cam/kms_sink.h +++ b/src/cam/kms_sink.h @@ -47,6 +47,7 @@ private: libcamera::Request *camRequest_; }; + int selectPipeline(const libcamera::PixelFormat &format); int configurePipeline(const libcamera::PixelFormat &format); void requestComplete(DRM::AtomicRequest *request); |