[libcamera-devel] [PATCH v1 0/4] Move frame contexts queue to separate class

Umang Jain umang.jain at ideasonboard.com
Fri Jun 3 15:22:55 CEST 2022


Changes in v1 (from RFCv2):
- Implement a proper mechanism to prevent FCQueue oveflow
- Docs fixes
- Minor &reference => *pointer conversions.

Summary:
This patch series moves the frame contexts ring buffer to a separate
class. Minimialistic implementation in 1/4 to keep things run same.

Patch 2/4 extends the .get() function to handle cases as :
- Return same IPAFrameContext if previously created
- Assign a new IPAFrameContext if the frame contexts for frame didn't
  exists
- isFull() detection

Patch 3/4 implements a mechanism to prevent overflowing the FCQueue

Patch 4/4 removes IPAFrameContext pointer requirement from
Algorithm::process() and use a frame number instead.

Smoke tested briefly by running on nautilus.

Umang Jain (4):
  ipa: ipu3: Separate out frame context queue as a distinct class
  ipa: ipu3: ipa_context: Extend FCQueue::get()
  ipa: ipu3: Prevent over queuing of requests
  ipa: algorithm: process() should take in frame number instead of
    context

 include/libcamera/ipa/ipu3.mojom         |   2 +-
 src/ipa/ipu3/algorithms/af.cpp           |   4 +-
 src/ipa/ipu3/algorithms/af.h             |   2 +-
 src/ipa/ipu3/algorithms/agc.cpp          |  13 ++-
 src/ipa/ipu3/algorithms/agc.h            |   4 +-
 src/ipa/ipu3/algorithms/algorithm.h      |   4 +-
 src/ipa/ipu3/algorithms/awb.cpp          |   2 +-
 src/ipa/ipu3/algorithms/awb.h            |   2 +-
 src/ipa/ipu3/algorithms/tone_mapping.cpp |   4 +-
 src/ipa/ipu3/algorithms/tone_mapping.h   |   2 +-
 src/ipa/ipu3/ipa_context.cpp             | 138 ++++++++++++++++++++++-
 src/ipa/ipu3/ipa_context.h               |  20 +++-
 src/ipa/ipu3/ipu3.cpp                    |  33 ++++--
 src/ipa/libipa/algorithm.cpp             |   2 +-
 src/ipa/libipa/algorithm.h               |   6 +-
 src/ipa/rkisp1/algorithms/agc.cpp        |   3 +-
 src/ipa/rkisp1/algorithms/agc.h          |   2 +-
 src/ipa/rkisp1/algorithms/algorithm.h    |   5 +-
 src/ipa/rkisp1/algorithms/awb.cpp        |   2 +-
 src/ipa/rkisp1/algorithms/awb.h          |   2 +-
 src/ipa/rkisp1/rkisp1.cpp                |   2 +-
 src/libcamera/pipeline/ipu3/ipu3.cpp     |  10 +-
 22 files changed, 216 insertions(+), 48 deletions(-)

-- 
2.31.1



More information about the libcamera-devel mailing list