apps: lc-compliance: Merge CaptureBalanced and CaptureUnbalanced

The above two classes have very similar implementations, in fact, the
only essential difference is how many requests are queued. `CaptureBalanced`
queues a predetermined number of requests, while `CaptureUnbalanced`
queues requests without limit.

This can be addressed by introducing a "capture" and a "queue" limit
into the `Capture` class, which determine at most how many requests
can be queued, and how many request completions are expected before
stopping.

Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
This commit is contained in:
Barnabás Pőcze 2024-12-19 16:58:42 +01:00
parent 995bb7e507
commit 74c0e8cbf1
3 changed files with 102 additions and 169 deletions

View file

@ -87,11 +87,11 @@ TEST_P(SingleStream, Capture)
{
auto [role, numRequests] = GetParam();
CaptureBalanced capture(camera_);
Capture capture(camera_);
capture.configure(role);
capture.capture(numRequests);
capture.run(numRequests, numRequests);
}
/*
@ -106,12 +106,12 @@ TEST_P(SingleStream, CaptureStartStop)
auto [role, numRequests] = GetParam();
unsigned int numRepeats = 3;
CaptureBalanced capture(camera_);
Capture capture(camera_);
capture.configure(role);
for (unsigned int starts = 0; starts < numRepeats; starts++)
capture.capture(numRequests);
capture.run(numRequests, numRequests);
}
/*
@ -125,11 +125,11 @@ TEST_P(SingleStream, UnbalancedStop)
{
auto [role, numRequests] = GetParam();
CaptureUnbalanced capture(camera_);
Capture capture(camera_);
capture.configure(role);
capture.capture(numRequests);
capture.run(numRequests);
}
INSTANTIATE_TEST_SUITE_P(CaptureTests,