summaryrefslogtreecommitdiff
path: root/src/ipa/raspberrypi/raspberrypi.cpp
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2020-09-18 10:42:23 +0100
committerNiklas Söderlund <niklas.soderlund@ragnatech.se>2020-09-21 13:10:48 +0200
commit8404d02d75586d4fc570096f72a46f5af13b80ed (patch)
treec76405fdecb723b0296050ae2bf19f296c0f97f4 /src/ipa/raspberrypi/raspberrypi.cpp
parent6bca768a0b632849493e00060177c56cd51bbf78 (diff)
libcamera: pipeline: ipa: raspberrypi: Rework drop frame signalling
The IPA now signals up front how many frames it wants the pipeline handler to drop. This makes it easier to handle up-coming changes to the buffer handling for import/export buffers. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'src/ipa/raspberrypi/raspberrypi.cpp')
-rw-r--r--src/ipa/raspberrypi/raspberrypi.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
index 4557016c..688d2efc 100644
--- a/src/ipa/raspberrypi/raspberrypi.cpp
+++ b/src/ipa/raspberrypi/raspberrypi.cpp
@@ -65,8 +65,8 @@ class IPARPi : public IPAInterface
public:
IPARPi()
: lastMode_({}), controller_(), controllerInit_(false),
- frame_count_(0), check_count_(0), hide_count_(0),
- mistrust_count_(0), lsTable_(nullptr)
+ frame_count_(0), check_count_(0), mistrust_count_(0),
+ lsTable_(nullptr)
{
}
@@ -137,8 +137,6 @@ private:
uint64_t frame_count_;
/* For checking the sequencing of Prepare/Process calls. */
uint64_t check_count_;
- /* How many frames the pipeline handler should hide, or "drop". */
- unsigned int hide_count_;
/* How many frames we should avoid running control algos on. */
unsigned int mistrust_count_;
/* LS table allocation passed in from the pipeline handler. */
@@ -242,14 +240,18 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,
*/
frame_count_ = 0;
check_count_ = 0;
+ unsigned int drop_frame = 0;
if (controllerInit_) {
- hide_count_ = helper_->HideFramesModeSwitch();
+ drop_frame = helper_->HideFramesModeSwitch();
mistrust_count_ = helper_->MistrustFramesModeSwitch();
} else {
- hide_count_ = helper_->HideFramesStartup();
+ drop_frame = helper_->HideFramesStartup();
mistrust_count_ = helper_->MistrustFramesStartup();
}
+ result->data.push_back(drop_frame);
+ result->operation |= RPI_IPA_CONFIG_DROP_FRAMES;
+
struct AgcStatus agcStatus;
/* These zero values mean not program anything (unless overwritten). */
agcStatus.shutter_time = 0.0;
@@ -366,13 +368,11 @@ void IPARPi::processEvent(const IPAOperationData &event)
* they are "unreliable".
*/
prepareISP(embeddedbufferId);
+ frame_count_++;
/* Ready to push the input buffer into the ISP. */
IPAOperationData op;
- if (++frame_count_ > hide_count_)
- op.operation = RPI_IPA_ACTION_RUN_ISP;
- else
- op.operation = RPI_IPA_ACTION_RUN_ISP_AND_DROP_FRAME;
+ op.operation = RPI_IPA_ACTION_RUN_ISP;
op.data = { bayerbufferId & RPiIpaMask::ID };
queueFrameAction.emit(0, op);
break;