summaryrefslogtreecommitdiff
path: root/src/cam/options.cpp
diff options
context:
space:
mode:
authorEric Curtin <ecurtin@redhat.com>2022-05-20 20:01:06 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-05-23 12:49:44 +0300
commit153b468930a9df22debb28889312f8a5c511ee04 (patch)
tree2ee7a8b9c25386378858271854157824010eee16 /src/cam/options.cpp
parent11554a259f4e8df3cc2ddce0217d35fd7797cfc5 (diff)
cam: sdl_sink: Add MJPG support to SDL sink
So we have at least two supported capturing pixel formats (although many possible output pixel formats thanks to SDL conversion). MJPG support only built in if SDL2_image is available, provides decompression. Signed-off-by: Eric Curtin <ecurtin@redhat.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Tested-by: Jacopo Mondi <jacopo@jmondi.org> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/cam/options.cpp')
0 files changed, 0 insertions, 0 deletions
iostream> #include <string.h> #include <unistd.h> #include "libcamera/internal/event_dispatcher.h" #include "libcamera/internal/event_notifier.h" #include "libcamera/internal/thread.h" #include "libcamera/internal/timer.h" #include "test.h" using namespace std; using namespace libcamera; class EventTest : public Test { protected: void readReady(EventNotifier *notifier) { size_ = read(notifier->fd(), data_, sizeof(data_)); notified_ = true; } int init() { return pipe(pipefd_); } int run() { EventDispatcher *dispatcher = Thread::current()->eventDispatcher(); std::string data("H2G2"); Timer timeout; ssize_t ret; EventNotifier readNotifier(pipefd_[0], EventNotifier::Read); readNotifier.activated.connect(this, &EventTest::readReady); /* Test read notification with data. */ memset(data_, 0, sizeof(data_)); size_ = 0; ret = write(pipefd_[1], data.data(), data.size()); if (ret < 0) { cout << "Pipe write failed" << endl; return TestFail; } timeout.start(100); dispatcher->processEvents(); timeout.stop(); if (static_cast<size_t>(size_) != data.size()) { cout << "Event notifier read ready test failed" << endl; return TestFail; } /* Test read notification without data. */ notified_ = false; timeout.start(100); dispatcher->processEvents(); timeout.stop(); if (notified_) { cout << "Event notifier read no ready test failed" << endl; return TestFail; } /* Test read notifier disabling. */ notified_ = false; readNotifier.setEnabled(false); ret = write(pipefd_[1], data.data(), data.size()); if (ret < 0) { cout << "Pipe write failed" << endl; return TestFail; } timeout.start(100); dispatcher->processEvents(); timeout.stop(); if (notified_) { cout << "Event notifier read disabling failed" << endl; return TestFail; } /* Test read notifier enabling. */ notified_ = false; readNotifier.setEnabled(true); timeout.start(100); dispatcher->processEvents(); timeout.stop(); if (!notified_) { cout << "Event notifier read enabling test failed" << endl; return TestFail; } return TestPass; } void cleanup() { close(pipefd_[0]); close(pipefd_[1]); } private: int pipefd_[2]; bool notified_; char data_[16]; ssize_t size_; }; TEST_REGISTER(EventTest)