diff --git a/include/libcamera/ipa/mali-c55.mojom b/include/libcamera/ipa/mali-c55.mojom index 5d7eb4ee..39b7f1f1 100644 --- a/include/libcamera/ipa/mali-c55.mojom +++ b/include/libcamera/ipa/mali-c55.mojom @@ -28,7 +28,7 @@ interface IPAMaliC55Interface { }; interface IPAMaliC55EventInterface { - paramsComputed(uint32 request); + paramsComputed(uint32 request, uint32 bytesused); statsProcessed(uint32 request, libcamera.ControlList metadata); setSensorControls(libcamera.ControlList sensorControls); }; diff --git a/src/ipa/mali-c55/mali-c55.cpp b/src/ipa/mali-c55/mali-c55.cpp index c6941a95..5877f299 100644 --- a/src/ipa/mali-c55/mali-c55.cpp +++ b/src/ipa/mali-c55/mali-c55.cpp @@ -346,7 +346,8 @@ void IPAMaliC55::fillParams(unsigned int request, ASSERT(params->total_size <= MALI_C55_PARAMS_MAX_SIZE); } - paramsComputed.emit(request); + size_t bytesused = offsetof(struct mali_c55_params_buffer, data) + params->total_size; + paramsComputed.emit(request, bytesused); } void IPAMaliC55::processStats(unsigned int request, unsigned int bufferId, diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp index 4acc091b..17ad2055 100644 --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp @@ -618,7 +618,7 @@ public: void imageBufferReady(FrameBuffer *buffer); void paramsBufferReady(FrameBuffer *buffer); void statsBufferReady(FrameBuffer *buffer); - void paramsComputed(unsigned int requestId); + void paramsComputed(unsigned int requestId, uint32_t bytesused); void statsProcessed(unsigned int requestId, const ControlList &metadata); bool match(DeviceEnumerator *enumerator) override; @@ -1494,7 +1494,7 @@ void PipelineHandlerMaliC55::statsBufferReady(FrameBuffer *buffer) sensorControls); } -void PipelineHandlerMaliC55::paramsComputed(unsigned int requestId) +void PipelineHandlerMaliC55::paramsComputed(unsigned int requestId, uint32_t bytesused) { MaliC55FrameInfo &frameInfo = frameInfoMap_[requestId]; Request *request = frameInfo.request; @@ -1505,8 +1505,7 @@ void PipelineHandlerMaliC55::paramsComputed(unsigned int requestId) * video devices. */ - frameInfo.paramBuffer->_d()->metadata().planes()[0].bytesused = - sizeof(struct mali_c55_params_buffer); + frameInfo.paramBuffer->_d()->metadata().planes()[0].bytesused = bytesused; params_->queueBuffer(frameInfo.paramBuffer); stats_->queueBuffer(frameInfo.statBuffer);