intel/ipu6-camera-hal / modules/v4l2/v4l2_device.h / CROS_CAMERA_EXPORT / L260-L290
) in case of flush request, i.e., to abort poll before timeout explicit V4L2DevicePoller(const std::vector<V4L2De
- 기술 영역v4l2
- 문제timeout
Evidence
모든 후보는 이 목록의 항목에 연결되어 있습니다. 각 항목은 Repository, 파일 경로, 심볼명, 라인 범위, Commit SHA, PR 또는 Issue 번호를 담고 있으며, 원본을 바로 열 수 있습니다. 인용문은 원문 그대로 보존합니다. 번역한 인용문은 근거로 쓸 수 없기 때문입니다.
Evidence 467건을 표시하고 있습니다.
intel/ipu6-camera-hal / modules/v4l2/v4l2_device.h / CROS_CAMERA_EXPORT / L260-L290
) in case of flush request, i.e., to abort poll before timeout explicit V4L2DevicePoller(const std::vector<V4L2De
intel/ipu6-camera-hal / include/linux/v4l2-controls.h / v4l2_colorfx / L85-L106
define V4L2_CID_HUE_AUTO (V4L2_CID_BASE + 25) define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE + 26) WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS define V4L2_CID_SHARPNESS (V4L2_CID_BASE + 27) define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE + 28) define V4L2_CID_CHROMA_AGC (V4L2_C…
intel/ipu6-camera-hal / include/linux/v4l2-controls.h / v4l2_mpeg_video_h264_profile / L437-L460
define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_MPEG_BASE + 363)
intel/ipu6-camera-hal / include/linux/v4l2-controls.h / v4l2_vp8_num_partitions / L574-L580
define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_MPEG_BASE + 407) define V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (V4L2_CID_MPEG_BASE + 500) WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS
intel/ipu6-camera-hal / include/linux/v4l2-controls.h / v4l2_exposure_auto_type / L689-L695
define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_MPEG_MFC51_BASE + 5) define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_MPEG_MFC51_BASE + 6) define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_MPEG_MFC51_BASE + 7) WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS define V…
intel/ipu6-camera-hal / include/api/Parameters.h / camera_stream_configuration_mode_t / L384-L495
camera_stream_configuration_mode_t: This defines the general operation mode for the HAL (for a given stream configuration), where modes besides NORMAL have different semantics, and usually the generality of the APIs are limited in exchange for higher performance in some particular area.
intel/ipu6-camera-hal / include/api/Parameters.h / Parameters / L1135-L2949
\class Parameters \brief Manage parameter's data structure, and provide set and get parameters This class provides a thread safe management to internal parameter's data structure, and helps client to easily set parameters to and get parameters from camera device. \version 0.1
intel/ipu6-camera-hal / src/metadata/icamera_metadata_tags.h / icamera_metadata_tag_t / L110-L447
Main enum for defining camera metadata tags. New entries must always go before the section _END tag to preserve existing enumeration values. In addition, the name and type of the tag needs to be added to src/metadata/icamera_metadata_tag_info.c
intel/ipu6-camera-hal / src/metadata/icamera_metadata_tags.h / icamera_metadata_tag / L110-L447
Main enum for defining camera metadata tags. New entries must always go before the section _END tag to preserve existing enumeration values. In addition, the name and type of the tag needs to be added to src/metadata/icamera_metadata_tag_info.c
intel/ipu6-camera-hal / src/metadata/ParameterGenerator.h / icamera / L25-L114
include "Parameters.h" include "iutils/Thread.h"
intel/ipu6-camera-hal / src/metadata/ParameterGenerator.h / ParameterGenerator / L48-L112
\class ParameterGenerator This class is used to generator parameter results. It updates the parameters with AIQ results, sensor embedded metadata and 3A statistics. The parameter results are stored with the frame sequence indicating on which frame the parameters are active.
intel/ipu6-camera-hal / src/metadata/icamera_metadata_base.cpp / validate_icamera_metadata_structure / L280-L410
; if (entries_end < metadata->entries_start || // overflow check entries_end > metadata->data_start) {intel/ipu6-camera-hal / src/metadata/icamera_metadata_tag_info.c / icamera_metadata_enum_snprint / L532-L2696
} break; } case CAMERA_AE_COMPENSATION: { break; } case CAMERA_AEintel/ipu6-camera-hal / src/metadata/ParameterGenerator.cpp / ParameterGenerator::updateCommonMetadata / L466-L670
entry); entry.tag = CAMERA_SENSOR_ROLLING_SHUTTER_SKEW; entry.type = ICAMERA_TYPE_INT64; entry.count
intel/ipu6-camera-hal / src/iutils/Utils.cpp / CameraUtils::getFrameSize / L537-L568
Why alignment is 64? The IPU DMA unit must transimit at leat 64 bytes one time. Why need extra size? It's due to a hardware issue: the DMA unit is a power of two, and a line should be transferred as few units as possible. The result is that up to line length more data than the image size may be transferred to memory a…
intel/ipu6-camera-hal / src/image_process/PostProcessorBase.cpp / JpegProcess::doPostProcessing / L235-L310
ile (thumbnailPackage.encodedDataSize > THUMBNAIL_SIZE_LIMITATION && thumbnailPackage.quality > 0);
intel/ipu6-camera-hal / src/image_process/ImageScalerCore.cpp / ImageScalerCore::cropCompose / L861-L919
VGA-QCIF end
intel/ipu6-camera-hal / src/image_process/ImageConverter.cpp / convertBuftoYV12 / L740-L757
break; default: ALOGE("%s: unsupported format %d", __func__, format); break;intel/ipu6-camera-hal / src/image_process/ImageConverter.cpp / convertBuftoNV21 / L759-L775
break; default: ALOGE("%s: unsupported format %d", __func__, format); break;intel/ipu6-camera-hal / src/image_process/ImageConverter.cpp / convertBuftoYUYV / L777-L787
break; default: LOGE("%s: unsupported format %d", __func__, format); break;intel/ipu6-camera-hal / src/core/CameraBuffer.cpp / CameraBuffer::allocateMemory / L191-L213
; default: LOGE("memory type %d is incorrect for allocateMemory.", mV.Memory()); returnintel/ipu6-camera-hal / src/core/CameraDevice.cpp / CameraDevice::dqbuf / L835-L860
Delegate it to RequestThread, make RequestThread manage all buffer related actions.
intel/ipu6-camera-hal / src/core/BufferQueue.cpp / BufferQueue::waitBufferQueue / L154-L170
ufQ>& queue, int64_t timeout) { LOG2("@%s waiting buffers", __func__); forintel/ipu6-camera-hal / src/core/BufferQueue.cpp / BufferQueue::waitFreeBuffersInQueue / L172-L228
uffer, int64_t timeout) { if (!mThreadRunning) { LOG1("@%s: Proceintel/ipu6-camera-hal / src/core/CaptureUnit.cpp / CaptureUnit::queueAllBuffers / L333-L350
RACE(); if (mExitPending) return OK; int64_t predictSequence = -1; for (auto device : mDevices) { int rintel/ipu6-camera-hal / src/core/CaptureUnit.cpp / CaptureUnit::poll / L378-L450
F_CAMERA_ATRACE(); int ret = 0; const int poll_timeout_count = 10; // Normally set the timeout threshold
intel/ipu6-camera-hal / src/core/PSysProcessor.cpp / PSysProcessor::processNewFrame / L522-L650
PSysProcessor ThreadLoop
intel/ipu6-camera-hal / src/core/PSysProcessor.cpp / PSysProcessor::dispatchTask / L1009-L1132
LOGE("Waiting for frame done event timeout"); return; }intel/ipu6-camera-hal / src/core/IspParamAdaptor.cpp / IspParamAdaptor::updatePalDataForVideoPipe / L412-L483
PAL output buffer is a reference data for next output buffer, but currently a ring buffer is used in HAL, which caused logic mismatching issue. So temporarily copy latest PAL data into PAL output buffer.
intel/ipu6-camera-hal / src/core/IspParamAdaptor.cpp / IspParamAdaptor::applyCscMatrix / L768-L779
loat)), VOID_VALUE, "Matrix count mismatching with algo: %zu", matrixCount); const int cscNorm
intel/ipu6-camera-hal / src/core/IspParamAdaptor.cpp / IspParamAdaptor::updateResultFromAlgo / L976-L1031
_size, VOID_VALUE, "memory is mismatch to store tone map from algo"); LOG2("%s, Toneintel/ipu6-camera-hal / src/core/RequestThread.cpp / RequestThread::threadLoop / L333-L397
} LOG2("%s, trigger event %x, SOF %ld, predict %ld, processed %d request id %ld", __intel/ipu6-camera-hal / src/core/RequestThread.cpp / RequestThread::handleRequest / L399-L469
if (!mActive) return; // Check the final prediction value from 3A if (effectSeq <= mLastEffect
intel/ipu6-camera-hal / src/core/PSysProcessor.h / icamera / L29-L152
include "IspSettings.h" include "psysprocessor/PSysDAG.h" include "CameraScheduler.h"
intel/ipu6-camera-hal / src/3a/AiqEngine.cpp / AiqEngine::prepareStatsParams / L176-L241
HDR_FEATURE_E // The statistics timestamp is incorrect. If possible, use SOF timestamp instead. unsig
intel/ipu6-camera-hal / src/3a/SensorManager.cpp / SensorManager::setWdrMode / L131-L158
OF event handler. // So we know which frame is corrupted and we can skip the corrupted frames. LOG2("<sintel/ipu6-camera-hal / src/3a/AiqUtils.h / AiqUtils / L71-L167
b_results* results); // Resize a 2D array with linear interpolation // For some cases, we need to upscale or downscale a 2
intel/ipu6-camera-hal / src/3a/AiqUtils.cpp / AiqUtils::dumpAeResults / L30-L78
cket_mode_ull ? "ULL" : "none-ULL"); if (aeResult.flicker_reduction_mode == ia_aiq_ae_flicker_reduction_50hz) { LOG3("Aintel/ipu6-camera-hal / src/platformdata/CameraParser.cpp / CameraParser::parseControlElement / L910-L979
define V4L2_CID_WATERMARK 0x00982901 define V4L2_CID_WATERMARK2 0x00982902
intel/ipu6-camera-hal / src/platformdata/CameraParser.cpp / CameraParser::handleStaticMetaData / L1871-L2042
This function will handle all the StaticMetadata related elements. It will be called in the function startElement \param profiles: the pointer of the CameraParser. \param name: the element's name. \param atts: the element's attribute.
intel/ipu6-camera-hal / src/platformdata/CameraParser.cpp / CameraParser::getNVMDirectory / L2342-L2419
the path of NVM device is in /sys/bus/i2c/devices/i2c-'adaptorId'/firmware_node/XXXX/path.
intel/ipu6-camera-hal / src/hal/MockCameraHal.cpp / MockCameraHal::streamDqbuf / L205-L222
y()) LOGW("<id%d>@%s, wait buffer %d ready timeout", cameraId, __func__, streamId); } *ubuffer =intel/ipu6-camera-hal / src/v4l2/SysCall.h / icamera / L33-L86
include "iutils/Thread.h"
intel/ipu6-camera-hal / src/v4l2/SysCall.h / SysCall / L35-L84
virtual int poll(struct pollfd* pfd, nfds_t nfds, int timeout); static SysCall* getInstance(); static void
intel/ipu6-camera-hal / src/core/psysprocessor/PGUtils.cpp / getCssFmt / L98-L109
ormatMapping[i].cssFmt; } } LOG1("%s: unsupported v4l2 pixel format: %s", __func__, CameraUtilsintel/ipu6-camera-hal / src/core/psysprocessor/PGUtils.cpp / getCssBpp / L155-L191
} } if (bpp == 0) { LOG2("%s: unsupported v4l2 format: 0x%x, compressed %d", __func__, v4l2Fmt,intel/ipu6-camera-hal / src/core/psysprocessor/PGUtils.cpp / getCssBpe / L193-L229
} } if (bpe == 0) { LOG2("%s: unsupported v4l2 format: 0x%x, compressed %d", __func__, v4l2Fmt,intel/ipu6-camera-hal / src/core/psysprocessor/PGUtils.cpp / getStride / L231-L264
break; default: LOG2("unsupported css format: %d", cssFmt); break; }intel/ipu6-camera-hal / src/core/psysprocessor/PSysDAG.cpp / PSysDAG::addTask / L596-L641
runIspAdapt here, and the ipu parameters // may be incorrect when runPipe. bool runIspAdaptor = true; // HD
intel/ipu6-camera-hal / src/3a/intel3a/Intel3AParameter.cpp / Intel3AParameter::initAeParameter / L108-L126
y_mode = ia_aiq_ae_priority_mode_normal; mAeParams.flicker_reduction_mode = ia_aiq_ae_flicker_reduction_auto; mAeParams.ev_s
intel/ipu6-camera-hal / src/3a/intel3a/Intel3AParameter.cpp / Intel3AParameter::updateAeParameter / L316-L437
case ANTIBANDING_MODE_AUTO: mAeParams.flicker_reduction_mode = ia_aiq_ae_flicker_reduction_auto; break;
intel/ipu6-camera-hal / src/3a/intel3a/Intel3AParameter.cpp / Intel3AParameter::dumpParameter / L749-L794
(" flash_mode %d, metering_mode %d, priority_mode %d, flicker_reduction_mode %d", mAeParams.flash_mode, mAeParams.meteringintel/ipu6-camera-hal / Issue #161
phantom devices results in a black screen and a stream negotiation failure (`reason not-negotiated`). This behavior is s
intel/ipu6-camera-hal / Issue #183
amerasrc:camerasrc0: streaming task paused, reason not-negotiated (-4) Execution ended after 0:00:00.007261636 Setting p
intel/ipu6-camera-hal / Issue #180
ltiple packet header errors detected Transfer FIFO overflow Incomplete long packet detected Frame sync err
intel/ipu6-camera-hal / Issue #177
t. I can also capture an image successfully after the workaround: ```bash gst-launch-1.0 -e \ icamerasrc num-buffe
intel/ipu6-camera-hal / Issue #176
If not, what's the recommended path to contribute one (calibration procedure, required tools/target charts) for the `13P2
intel/ipu6-camera-hal / Issue #159
IPU6 Description: - Camera works with qcam, but with flickering , but with other apps like cheese it showes dark scree
intel/ipu6-camera-hal / Issue #125
:<camerasrc0> error: streaming task paused, reason not-negotiated (-4) ERROR: from element /GstPipeline:pipeline0/Gstca
intel/ipu6-camera-hal / Issue #93
Important memory leak of v4l2-relayd service after each camera start Hi dear
intel/ipu6-camera-hal / Issue #14
9.835] CamHAL[WAR] ipu6_bb_video_bayer: wait executors timeout 四 19 19:11:08 TRBA-DVT2-C3 sh[925]: [04-19 19:10:09
intel/ipu6-camera-hal / CMakeLists.txt / 3dbcf76450
Engineer release on 2022-09-16 Signed-off-by: Hao Yao <hao.yao@intel.com>
intel/ipu6-camera-hal / PR #187
17:45:45.533] CamHAL[ERR] Poll: Device node fd 27 poll timeout. [10-05 17:45:46.534] CamHAL[ERR] Poll: Device node f
raspberrypi/libcamera / README.rst / Using GStreamer plugin / L152
le to ``libcamera*:7``. Presently, to prevent element negotiation failures it is required to specify the colorimetry and
raspberrypi/libcamera / Documentation/camera-sensor-model.rst / The libcamera camera sensor model / L8
abstract sensor model maps libcamera components to the characteristics and operations of an image sensor, and serves as a ref
raspberrypi/libcamera / Documentation/libcamera_architecture.rst / libcamera Architecture / L4
the Image Processing Algorithms. This includes without limitation handling of the MC and V4L2 APIs, buffer management
raspberrypi/libcamera / Documentation/runtime_configuration.rst / List of environment variables and configuration options / L93
s not available the software ISP will automatically fall back to the CPU. Example value: ``gpu`` pipelines.simple.
raspberrypi/libcamera / include/linux/bcm2835-isp.h / bcm2835_isp_lens_shading / L118-L128
ctrl. @enabled: Enable lens shading. @grid_cell_size: Size of grid cells in samples (16, 32, 64, 128 or 256). @grid_width: Width of lens shading tables in grid cells. @grid_stride: Row to row distance (in grid cells) between grid cells in the same horizontal location. @grid_height: Height of lens shading tables in gri…
raspberrypi/libcamera / include/linux/drm_mode.h / drm_mode_modeinfo / L232-L250
@hskew: horizontal skew @vdisplay: vertical display size @vsync_start: vertical sync start @vsync_end: vertical sync end @vtotal: vertical total size @vscan: vertical scan @vrefresh: approximate vertical refresh rate in Hz @flags: bitmask of misc. flags, see DRM_MODE_FLAG_* defines @type: bitmask of type flags, see DR…
raspberrypi/libcamera / include/linux/drm_mode.h / drm_mode_crtc_page_flip / L1153-L1159
flip is already pending as the ioctl is called, EBUSY will be returned. Flag DRM_MODE_PAGE_FLIP_EVENT requests that drm sends back a vblank event (see drm.h: struct drm_event_vblank) when the page flip is done. The user_data field passed in with this ioctl will be returned as the user_data field in the vblank event st…
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_colorfx / L76-L94
define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25) define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26) define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27) define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28) define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29) define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE+30) define V4L2_CID_C…
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_mpeg_video_h264_profile / L539-L558
define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_CODEC_BASE+363)
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_vp8_num_partitions / L669-L674
Control IDs for VP8 streams Although VP8 is not part of MPEG we add these controls to the MPEG class as that class is already handling other video compression standards define V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (V4L2_CID_CODEC_BASE+500)
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_cid_mpeg_video_hevc_loop_filter_mode / L780-L784
define V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (V4L2_CID_CODEC_BASE + 619) define V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE (V4L2_CID_CODEC_BASE + 620)
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_cid_mpeg_video_hevc_size_of_length_field / L805-L810
define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 624) define V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (V4L2_CID_CODEC_BASE + 625) define V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (V4L2_CID_CODEC_BASE + 626) define V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (V4L2_CID_CODEC_BASE + 627) define V4L2_CID_MPEG_VIDE…
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_ctrl_h264_pred_weights / L1542-L1546
define V4L2_CID_STATELESS_H264_PRED_WEIGHTS (V4L2_CID_CODEC_STATELESS_BASE + 5) struct v4l2_ctrl_h264_pred_weights - Prediction weight table Prediction weight table, which matches the syntax specified by the H264 specification. @luma_log2_weight_denom: see H264 specification. @chroma_log2_weight_denom: see H264 specif…
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_vp8_loop_filter / L1836-L1843
struct v4l2_vp8_loop_filter - VP8 loop filter parameters @ref_frm_delta: Reference frame signed delta values. @mb_mode_delta: MB prediction mode signed delta values. @sharpness_level: matches sharpness_level syntax element. @level: matches loop_filter_level syntax element. @padding: padding field. Should be zeroed by …
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_vp8_entropy / L1888-L1894
struct v4l2_vp8_entropy - VP8 update probabilities @coeff_probs: coefficient probability update values. @y_mode_probs: luma intra-prediction probabilities. @uv_mode_probs: chroma intra-prediction probabilities. @mv_probs: mv decoding probability. @padding: padding field. Should be zeroed by applications. This structur…
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_ctrl_vp8_frame / L1953-L1982
@prob_intra: frame header syntax element. @prob_last: frame header syntax element. @prob_gf: frame header syntax element. @num_dct_parts: number of DCT coefficients partitions. @first_part_size: size of the first partition, i.e. the control partition. @first_part_header_bits: size in bits of the first partition header…
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_ctrl_mpeg2_picture / L2056-L2065
@backward_ref_ts: timestamp of the V4L2 capture buffer to use as reference for backward prediction. @forward_ref_ts: timestamp of the V4L2 capture buffer to use as reference for forward prediction. These timestamp refers to the timestamp field in struct v4l2_buffer. Use v4l2_timeval_to_ns() to convert the struct timev…
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_hevc_pred_weight_table / L2477
ISO/IEC 23008-2, ITU-T Rec. H.265: Weighted prediction parameter
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_ctrl_hevc_slice_params / L2439-L2481
@reserved0: padding field. Should be zeroed by applications. @slice_segment_addr: specifies the address of the first coding tree block in the slice segment @ref_idx_l0: the list of L0 reference elements as indices in the DPB @ref_idx_l1: the list of L1 reference elements as indices in the DPB @short_term_ref_pic_set_s…
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_vp9_segmentation / L2707-L2714
The value for each segment is a combination of V4L2_VP9_SEGMENT_FEATURE_ENABLED(id) values where id is one of V4L2_VP9_SEG_LVL_{}. @tree_probs: specifies the probability values to be used when decoding a Segment-ID. See '5.15. Segmentation map' section of the VP9 specification for more details. @pred_probs: specifies …raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_ctrl_vp9_frame / L2792-L2816
@frame_context_idx: frame context that should be used/updated. @profile: VP9 profile. Can be 0, 1, 2 or 3. @bit_depth: bits per components. Can be 8, 10 or 12. Note that not all profiles support 10 and/or 12 bits depths. @interpolation_filter: specifies the filter selection used for performing inter prediction. Set to…
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_ctrl_vp9_compressed_hdr / L2884-L2902
@y_mode: Y prediction mode probability updates. @uv_mode: UV prediction mode probability updates. @partition: partition probability updates. @mv: motion vector probability updates. This structure holds the probabilities update as parsed in the compressed header (Spec 6.3). These values represent the value of probabili…
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_av1_reference_frame / L3027-L3036
enum v4l2_av1_reference_frame - AV1 reference frames @V4L2_AV1_REF_INTRA_FRAME: Intra Frame Reference @V4L2_AV1_REF_LAST_FRAME: Last Reference Frame @V4L2_AV1_REF_LAST2_FRAME: Last2 Reference Frame @V4L2_AV1_REF_LAST3_FRAME: Last3 Reference Frame @V4L2_AV1_REF_GOLDEN_FRAME: Golden Reference Frame @V4L2_AV1_REF_BWDREF_…
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_av1_interpolation_filter / L3426
v4l2 av1 interpolation filter enum v4l2_av1_interpolation_filter
raspberrypi/libcamera / include/linux/v4l2-controls.h / v4l2_ctrl_av1_frame / L3411-L3440
@reserved: padding field. Should be zeroed by applications. @order_hints: specifies the expected output order hint for each reference frame. This field corresponds to the OrderHints variable from the specification (section 5.9.2 "Uncompressed header syntax"). As such, this is only used for non-intra frames and ignored…
raspberrypi/libcamera / include/linux/intel-ipu3.h / ipu3_uapi_bubble_info / L520-L529
struct ipu3_uapi_bubble_info - Bubble info for host side debugging @num_of_stripes: A single frame is divided into several parts called stripes due to limitation on line buffer memory. The separation between the stripes is vertical. Each such stripe is processed as a single frame by the ISP pipe. @padding: padding byt…
raspberrypi/libcamera / include/linux/intel-ipu3.h / ipu3_uapi_bnr_static_config / L851-L862
&ipu3_uapi_bnr_static_config_thr_ctrl_shd_config @opt_center: optical center &ipu3_uapi_bnr_static_config_opt_center_config Above parameters and opt_center_sqr are used for white balance and shading. @lut: lookup table &ipu3_uapi_bnr_static_config_lut_config @bp_ctrl: detect and remove bad pixels as defined in struct …
raspberrypi/libcamera / include/linux/intel-ipu3.h / ipu3_uapi_dm_config / L941-L959
feature gain. Precision u5, range [0, 31], default 8. @reserved3: reserved @cr_param2: Second parameter that defines Checker artifact removal feature gain. Precision u5, range [0, 31], default 8. @reserved4: reserved @coring_param: Defines power of false color correction operation. low for preserving edge colors, high…
raspberrypi/libcamera / include/linux/intel-ipu3.h / ipu3_uapi_shd_general_config / L1163-L1168
struct ipu3_uapi_shd_general_config - Shading general config @init_set_vrt_offst_ul: set vertical offset, y_start >> block_height_log2 % grid_height_per_slice. @shd_enable: shading enable. @gain_factor: Gain factor. Shift calculated anti shading value. Precision u2. 0x0 - gain factor [1, 5], means no shift interpolate…
raspberrypi/libcamera / include/linux/intel-ipu3.h / ipu3_uapi_isp_lin_vmem_params / L2537-L2546
struct ipu3_uapi_isp_lin_vmem_params - Linearization parameters @lin_lutlow_gr: linearization look-up table for GR channel interpolation. @lin_lutlow_r: linearization look-up table for R channel interpolation. @lin_lutlow_b: linearization look-up table for B channel interpolation. @lin_lutlow_gb: linearization look-up…
raspberrypi/libcamera / include/linux/intel-ipu3.h / ipu3_uapi_isp_tnr3_vmem_params / L2560-L2567
struct ipu3_uapi_isp_tnr3_vmem_params - Temporal noise reduction vector memory parameters @slope: slope setting in interpolation curve for temporal noise reduction. @reserved1: reserved @sigma: knee point setting in interpolation curve for temporal noise reduction. @reserved2: reserved
raspberrypi/libcamera / include/linux/intel-ipu3.h / ipu3_uapi_obgrid_param / L2817
Optical black level compensation
raspberrypi/libcamera / include/linux/intel-ipu3.h / ipu3_uapi_params / L2800-L2818
&ipu3_uapi_isp_tnr3_vmem_params @xnr3_vmem_params: xnr3 VMEM as specified by &ipu3_uapi_isp_xnr3_vmem_params @tnr3_dmem_params: tnr3 DMEM as specified by &ipu3_uapi_isp_tnr3_params @xnr3_dmem_params: xnr3 DMEM as specified by &ipu3_uapi_isp_xnr3_params @obgrid_param: obgrid parameters as specified by &ipu3_uapi_obgrid…
raspberrypi/libcamera / include/linux/drm.h / drm_vblank_seq_type / L453-L463
M_VBLANK_ABSOLUTE = 0x0, /**< Wait for specific vblank sequence number */ _DRM_VBLANK_RELATIVE = 0x1, /**< Wait for given nu
raspberrypi/libcamera / include/linux/drm.h / drm_syncobj_wait / L956-L972
define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0) define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1) define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2) /* wait for time point to become available define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE (1 << 3) /* set fence deadline to deadline_nsec
raspberrypi/libcamera / include/linux/drm.h / drm_syncobj_timeline_wait / L974-L992
point for every handles*/ __u64 points; /* absolute timeout */ __s64 timeout_nsec; __u32 count_handles; __u32 f
raspberrypi/libcamera / include/linux/drm.h / drm_crtc_get_sequence / L1032-L1037
Query current scanout sequence number
raspberrypi/libcamera / include/linux/v4l2-subdev.h / v4l2_subdev_format_whence / L25-L28
enum v4l2_subdev_format_whence - Media bus format type @V4L2_SUBDEV_FORMAT_TRY: try format, for negotiation only @V4L2_SUBDEV_FORMAT_ACTIVE: active format, applied to the device
raspberrypi/libcamera / include/linux/videodev2.h / v4l2_framebuffer / L1243-L1259
O V E R L A Y P R E V I E W
raspberrypi/libcamera / include/linux/videodev2.h / v4l2_event_motion_det / L2548-L2552
struct v4l2_event_motion_det - motion detection event @flags: if V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ is set, then the frame_sequence field is valid. @frame_sequence: the frame sequence number associated with this event. @region_mask: which regions detected motion.
raspberrypi/libcamera / include/linux/rkisp1-config.h / rkisp1_cif_isp_dpcc_config / L348-L355
struct rkisp1_cif_isp_dpcc_config - Configuration used by DPCC Configuration used by Defect Pixel Cluster Correction. Three sets of methods can be configured and selected through the @set_use field. The result is the logical OR of all enabled sets. @mode: DPCC mode (RKISP1_CIF_ISP_DPCC_MODE_*) @output_mode: Interpolat…
raspberrypi/libcamera / include/libcamera/base/timer.h / libcamera / L17-L47
include <libcamera/base/object.h> include <libcamera/base/signal.h>
raspberrypi/libcamera / include/libcamera/base/timer.h / Object / L21-L45
oint deadline() const { return deadline_; } Signal<> timeout; protected: void message(Message *msg) override; prraspberrypi/libcamera / include/libcamera/internal/meson.build
mera_sensor.h', 'camera_sensor_properties.h', 'clock_recovery.h', 'control_serializer.h', 'control_validator
raspberrypi/libcamera / include/libcamera/internal/v4l2_videodevice.h / V4L2VideoDevice / L187-L314
streamOff(); void setDequeueTimeout(utils::Duration timeout); Signal<> dequeueTimeout; static std::unique_ptr<V
raspberrypi/libcamera / include/libcamera/internal/v4l2_videodevice.h / State / L241-L293
te_; std::optional<unsigned int> firstFrame_; Timer watchdog_; utils::Duration watchdogDuration_; }
raspberrypi/libcamera / include/libcamera/internal/clock_recovery.h / libcamera / L11-L68
include <stdint.h>
raspberrypi/libcamera / include/libcamera/internal/clock_recovery.h / ClockRecovery / L13-L66
clock recovery class ClockRecovery { public: ClockRecovery(); voidraspberrypi/libcamera / include/libcamera/internal/software_isp/swisp_stats.h / libcamera / L15-L48
include "libcamera/internal/vector.h"
raspberrypi/libcamera / include/libcamera/internal/software_isp/swisp_stats.h / SwIspStats / L24-L46
\brief Struct that holds the statistics for the Software ISP The struct value types are large enough to not overflow. Should they still overflow for some reason, no check is performed and they wrap around.
raspberrypi/libcamera / src/libcamera/delayed_controls.cpp / DelayedControls::applyControls / L232-L283
\brief Inform DelayedControls of the start of a new frame \param[in] sequence Sequence number of the frame that started Inform the state machine that a new frame has started and of its sequence number. Any user of these helpers is responsible to inform the helper about the start of any frame. This can be connected wit…
raspberrypi/libcamera / src/libcamera/meson.build
'camera_controls.cpp', 'camera_lens.cpp', 'clock_recovery.cpp', 'control_serializer.cpp', 'control_valid
raspberrypi/libcamera / src/libcamera/request.cpp / Request::Private::prepare / L228-L260
the asynchronous event completion. As we currently only handle fences, the function emits the prepared signal immediately if there are no fences to wait on. Otherwise the prepared signal is emitted when all fences have been signalled or the optional timeout has expired. If not all the fences have been correctly signal…
raspberrypi/libcamera / src/libcamera/v4l2_subdevice.cpp / MediaBusFormatInfo / L824-L837
\brief Retrieve information about a media bus format \param[in] code The media bus format code \return The MediaBusFormatInfo describing the \a code if known, or an invalid MediaBusFormatInfo otherwise
raspberrypi/libcamera / src/libcamera/v4l2_subdevice.cpp / std::string / L1703-L1737
\brief Retrieve the model name of the device The model name allows identification of the specific device model. This can be used to infer device characteristics, for instance to determine the analogue gain model of a camera sensor based on the sensor model name. Neither the V4L2 API nor the Media Controller API expose…
raspberrypi/libcamera / src/libcamera/camera_manager.cpp / CameraManager::Private::createPipelineHandlers / L109-L152
) << "'"; /* * Try each pipeline handler until it exhaust * all pipelines it can provide. */ pipelineFac
raspberrypi/libcamera / src/libcamera/v4l2_pixelformat.cpp / V4L2PixelFormat::description / L316-L327
\brief Retrieve the V4L2 description for the format The description matches the value used by the kernel, as would be reported by the VIDIOC_ENUM_FMT ioctl. \return The V4L2 description corresponding to the V4L2 format, or a placeholder description if not found
raspberrypi/libcamera / src/libcamera/v4l2_pixelformat.cpp / V4L2PixelFormat::toPixelFormat / L341-L352
\brief Convert the V4L2 pixel format to the corresponding PixelFormat \param[in] warn When true, log a warning message if the V4L2 pixel format isn't known Users of this function might try to convert a V4L2PixelFormat to a PixelFormat just to check if the format is supported or not. In that case, they can suppress the…
raspberrypi/libcamera / src/libcamera/clock_recovery.cpp / ClockRecovery::configure / L66-L76
\brief Set configuration parameters \param[in] numSamples The approximate duration for which the state of the model is persistent \param[in] maxJitter New output samples are clamped to no more than this amount of jitter, to prevent sudden swings from having a large effect \param[in] minSamples The fitted clock model i…
raspberrypi/libcamera / src/libcamera/dma_buf_allocator.cpp / DmaBufAllocator::allocFromHeap / L163-L187
t < 0) { LOG(DmaBufAllocator, Error) << "dma-heap allocation failure for " << name; return {}; } UniqueFD allocFd(alloraspberrypi/libcamera / src/android/camera_stream.cpp / CameraStream::waitFence / L139-L166
e * fences waiting in the core. * * \todo Better characterize the timeout. Currently equal to the one * used by th
raspberrypi/libcamera / src/android/camera_hal_manager.cpp / CameraHalManager::getCameraInfo / L247-L269
ON_3_3; info->resource_cost = 0; info->static_camera_characteristics = camera->getStaticMetadata(); info->conflicting_devi
raspberrypi/libcamera / src/android/camera_device.cpp / sortCamera3StreamConfigs / L66-L165
Reorder the configurations so that libcamera::Camera can accept them as much as possible. The sort rule is as follows. 1.) The configuration for NV12 request whose resolution is the largest. 2.) The configuration for JPEG request. 3.) Others. Larger resolutions and different formats are put earlier.
raspberrypi/libcamera / src/android/camera_device.cpp / CameraDevice::constructDefaultRequestSettings / L468-L519
Produce a metadata pack to be used as template for a capture request.
raspberrypi/libcamera / src/android/camera_device.cpp / CameraDevice::getResultMetadata / L1423-L1676
Produce a set of fixed result metadata.
raspberrypi/libcamera / src/android/camera_stream.h / CameraStream / L30-L187
d * to the framework as they are. The Android stream characteristics are * directly translated to the libcamera stream co
raspberrypi/libcamera / src/libcamera/base/event_dispatcher.cpp / EventDispatcher::~EventDispatcher / L37-L39
The EventDispatcher class allows the integration of the application event loop with libcamera by abstracting how events and timers are managed and processed. To listen to events, libcamera creates EventNotifier instances and registers them with the dispatcher with registerEventNotifier(). The event notifier \ref Event…
raspberrypi/libcamera / src/libcamera/base/event_dispatcher_poll.cpp / EventDispatcherPoll::poll / L201-L224
std::vector<struct pollfd> *pollfds) { /* Compute the timeout. */ Timer *nextTimer = !timers_.empty() ? timers_.froraspberrypi/libcamera / src/libcamera/base/event_dispatcher_poll.cpp / EventDispatcherPoll::processTimers / L291-L304
eak; timers_.pop_front(); timer->stop(); timer->timeout.emit(); } }
raspberrypi/libcamera / src/libcamera/software_isp/debayer_cpu.h / libcamera / L29-L169
include "debayer.h"
raspberrypi/libcamera / src/libcamera/software_isp/debayer_cpu.h / DebayerCpu / L32-L167
ires access * to the previous and next src lines for interpolating the missing * colors. To allow copying the src lines
raspberrypi/libcamera / src/libcamera/software_isp/TODO.md / Remove statsReady signal / L40
ass applies colour gains in addition to performing the interpolation, it may be more of a naming issue. Removing the signa
raspberrypi/libcamera / src/libcamera/software_isp/debayer_egl.h / DebayerEGL / L40-L122
ts 3 x 3 */ GLint ccmUniformDataIn_; /* Black Level compensation */ GLint blackLevelUniformDataIn_; /* Gamma */ GLi
raspberrypi/libcamera / src/libcamera/pipeline/rpi/common/delayed_controls.cpp / DelayedControls::applyControls / L248-L299
\brief Inform DelayedControls of the start of a new frame \param[in] sequence Sequence number of the frame that started Inform the state machine that a new frame has started and of its sequence number. Any user of these helpers is responsible to inform the helper about the start of any frame. This can be connected wit…
raspberrypi/libcamera / src/py/cam/helpers.py / demosaic / L12-L73
# bayer arrays, adding blank pixels at their edges to compensate for the # size of the window when calculating aver
raspberrypi/libcamera / src/apps/qcam/main_window.cpp / MainWindow::startCapture / L356-L537
\brief Start capture with the current camera This function shall not be called directly, use toggleCapture() instead.
raspberrypi/libcamera / src/android/metadata/camera_metadata.c / validate_and_calculate_camera_metadata_entry_data_size / L374-L392
This method should be used when the camera metadata cannot be trusted. For example, when it's read from Parcel.
raspberrypi/libcamera / src/android/metadata/camera_metadata.c / append_camera_metadata / L581-L632
NULL || src == NULL ) return ERROR; // Check for overflow if (src->entry_count + dst->entry_count < src->ent
raspberrypi/libcamera / src/ipa/libipa/lsc.h / libcamera / L21-L137
include "interpolator.h" include "lsc_base.h"
raspberrypi/libcamera / src/ipa/libipa/lsc.h / ipa / L23-L137
namespace lsc */ #ifndef __DOXYGEN__ template<> void Interpolator<lsc::Components<uint16_t>>:: interpolate(const lsc::C
raspberrypi/libcamera / src/ipa/libipa/lsc.h / configure / L87-L133
ate.enabled = true; return 0; } const Components interpolateComponents(unsigned int ct) { return sets_.getInterpolated(ct)raspberrypi/libcamera / src/ipa/libipa/ccm.h / libcamera / L18-L75
include "fixedpoint.h" include "interpolator.h"
raspberrypi/libcamera / src/ipa/libipa/ccm.h / CcmAlgorithmBase / L38-L54
ControlList &metadata); private: unsigned int ct_; Interpolator<Matrix<float, 3, 3>> ccm_; Interpolator<Matrix<int16_
raspberrypi/libcamera / src/ipa/libipa/fc_queue.h / libcamera / L15-L135
include <libcamera/base/log.h>
raspberrypi/libcamera / src/ipa/libipa/fc_queue.h / namespace / L17-L133
ext to preseve the context. * * \todo If the the sequence number of the context to initialise * is smaller than the
raspberrypi/libcamera / src/ipa/libipa/fc_queue.h / clear / L40-L122
ext to preseve the context. * * \todo If the the sequence number of the context to initialise * is smaller than the
raspberrypi/libcamera / src/ipa/libipa/ccm.cpp / CcmAlgorithmBase::configure / L103-L111
\brief Configure the CCM algorithm \param[in] state The CCM active state \param[in] temperatureK The colour temperature in Kelvin Configure the CCM algorithm by initializing the manual and automatic states in \a state by interpolating the default colour correction matrix with the given colour temperature \a temperatur…
raspberrypi/libcamera / src/ipa/libipa/ccm.cpp / CcmAlgorithmBase::queueRequest / L137-L154
- controls::ColourTemperature - controls::ColourCorrectionMatrix When controls::ColourCorrectionMatrix is passed in the supplied matrix is stored in \a state and \a context. When controls::ColourTemperature is passed in, the matrices loaded from configuration file are interpolated with the given temperature and the re…
raspberrypi/libcamera / src/ipa/libipa/ccm.cpp / CcmAlgorithmBase::prepare / L170-L184
\brief Calculate the matrix coefficients for a colour temperature \param[in] state The CCM active state \param[in] context The CCM frame context \param[in] frame The frame number \param[in] temperatureK The colour temperature in Kelvin Interpolate the colour correction matrices as loaded from configuration file for co…
raspberrypi/libcamera / src/ipa/libipa/awb_grey.h / libcamera / L17-L38
include "awb.h" include "interpolator.h"
raspberrypi/libcamera / src/ipa/libipa/awb_grey.h / ipa / L19-L36
colourTemperature) override; private: std::optional<Interpolator<Vector<double, 2>>> colourGainCurve_; }; }
raspberrypi/libcamera / src/ipa/libipa/awb_grey.h / AwbImplementation / L21-L34
colourTemperature) override; private: std::optional<Interpolator<Vector<double, 2>>> colourGainCurve_; }
raspberrypi/libcamera / src/ipa/libipa/interpolator.h / libcamera / L20-L127
include "libcamera/internal/value_node.h"
raspberrypi/libcamera / src/ipa/libipa/interpolator.h / namespace / L22-L125
namespace LOG_DECLARE_CATEGORY(Interpolator) namespace ipa { template<typename T> class Interpolraspberrypi/libcamera / src/ipa/libipa/lsc.cpp / Interpolator<lsc::Components<uint16_t>>:: interpolate / L96-L104
interpolator<lsc components<uint16 t>> interpolate void Interpola
raspberrypi/libcamera / src/ipa/libipa/lsc.cpp / Interpolator<lsc::Components<uint8_t>>:: interpolate / L107-L115
interpolator<lsc components<uint8 t>> interpolate void Interpolat
raspberrypi/libcamera / src/ipa/libipa/lsc.cpp / LscAlgorithmBase::init / L135-L168
\param[in] tuningData The tuning data \param[in] controls The IPA list of supported controls \param[in] descriptor The LSC engine descriptor Parse \a tuningData according to the settings specified in \a descriptor to populate the LSC data and registers LSC controls in \a controls. \return 0 on success, a negative erro…
raspberrypi/libcamera / src/ipa/ipu3/algorithms/blc.cpp / BlackLevelCorrection::prepare / L47-L65
\brief Fill in the parameter structure, and enable black level correction \param[in] context The shared IPA context \param[in] frame The frame context sequence number \param[in] frameContext The FrameContext for this frame \param[out] params The IPU3 parameters Populate the IPU3 parameter structure with the correction…
raspberrypi/libcamera / src/ipa/rpi/controller/statistics.h / RPiController / L16-L78
include "histogram.h" include "region_stats.h"
raspberrypi/libcamera / src/ipa/rpi/controller/statistics.h / ColourStatsPos / L51-L74
Positioning of the AWB/ALSC statistics gathering in the pipeline: Pre-LSC or post-LSC.
raspberrypi/libcamera / src/ipa/rpi/controller/agc_status.h / AgcStatus / L28-L44
Note: total_exposure_value will be reported as zero until the algorithm has seen statistics and calculated meaningful values. The contents should be ignored until then.
raspberrypi/libcamera / src/ipa/rpi/controller/agc_algorithm.h / RPiController / L15-L42
include "algorithm.h"
raspberrypi/libcamera / src/ipa/rpi/controller/agc_algorithm.h / AgcAlgorithm / L17-L40
rtual void setFlickerPeriod(libcamera::utils::Duration flickerPeriod) = 0; virtual void setFixedExposureTime(unsigned int
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/agc.cpp / std::vector<double> / L141-L150
th different channels. * Therefore we shall impose a limitation, at least for now, that all * channels will use the
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/agc.cpp / Agc::setFlickerPeriod / L161-L168
agc set flicker period void Agc::setFlickerPeriod(Duration flickerPeri
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/hdr.h / RPiController / L22-L85
This is our implementation of an HDR algorithm.
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/hdr.h / HdrConfig / L24-L56
gth; libcamera::ipa::Pwl tonemap; /* These relate to adaptive tonemap calculation. */ double speed; std::vector<do
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/contrast.cpp / Contrast::read / L41-L59
:read(const libcamera::ValueNode ¶ms) { // enable adaptive enhancement by default config_.ceEnable = params["ce_raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb.h / RPiController / L17-L180
include "../awb_algorithm.h" include "../awb_status.h" include "libipa/pwl.h"
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb.h / AwbAlgorithm / L66-L170
ts, Metadata *imageMetadata) override; static double interpolateQuadatric(libcamera::ipa::Pwl::Point const &a, libcamera
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb.h / initialise / L71-L166
ts, Metadata *imageMetadata) override; static double interpolateQuadatric(libcamera::ipa::Pwl::Point const &a, libcamera
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/agc_channel.h / RPiController / L23-L160
This is our implementation of AGC.
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/agc_channel.h / AgcChannel / L84-L158
ev); void setFlickerPeriod(libcamera::utils::Duration flickerPeriod); void setMaxExposureTime(libcamera::utils::Duration
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/agc.h / RPiController / L17-L62
include "agc_channel.h"
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/agc.h / AgcAlgorithm / L25-L60
ide; void setFlickerPeriod(libcamera::utils::Duration flickerPeriod) override; void setMaxExposureTime(libcamera::utils::
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/alsc.h / RPiController / L21-L174
include "../algorithm.h" include "../alsc_status.h" include "../statistics.h"
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb_bayes.cpp / AwbBayes / L78-L97
g bayesConfig_; void awbBayes(); libcamera::ipa::Pwl interpolatePrior(); double coarseSearch(libcamera::ipa::Pwl const &pri
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb_bayes.cpp / AwbBayes::prepareStats / L193-L213
ied to the stats in this pipeline, so stop * any LSC compensation. We also ignore config_.fast in this version. */ c
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb_bayes.cpp / AwbBayes::interpolatePrior / L215-L239
awb bayes interpolate prior ipa::Pwl AwbBayes::interpolatePrior() { /* *raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb_bayes.cpp / AwbBayes::coarseSearch / L241-L285
oint of the search, but refine it with a quadratic * interpolation around its neighbours. */ if (points_.size() > 2) {raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb_bayes.cpp / AwbBayes::fineSearch / L287-L367
ely across the CT curve, * now let's do a quadratic interpolation for the best result. */ bestPoint = std::max(1, s
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb_bayes.cpp / AwbBayes::awbBayes / L369-L413
. not entirely sure about this. */ ipa::Pwl prior = interpolatePrior(); prior *= zones_.size() / (double)(statistics_->awb
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb.cpp / Awb::interpolateQuadatric / L427-L445
awb interpolate quadatric double Awb::interpolateQuadatric(libcamera::
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/agc_channel.cpp / AgcChannel::AgcChannel / L272-L289
, lockCount_(0), lastTargetExposure_(0s), ev_(1.0), flickerPeriod_(0s), maxExposureTime_(0s), fixedExposureTime_(0s),
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/agc_channel.cpp / AgcChannel::read / L291-L321
e.height) { LOG(RPiAgc, Error) << "AgcMeteringMode: Incorrect number of weights"; return -EINVAL; } } /* *raspberrypi/libcamera / src/ipa/rpi/controller/rpi/agc_channel.cpp / AgcChannel::setFlickerPeriod / L382-L385
agc channel set flicker period void AgcChannel::setFlickerPeriod(Duration flic
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/agc_channel.cpp / AgcChannel::housekeepConfig / L566-L614
; status_.fixedGain = limitGain(fixedGain_); status_.flickerPeriod = flickerPeriod_; LOG(RPiAgc, Debug) << "ev " << stat
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/agc_channel.cpp / AgcChannel::divideUpExposure / L881-L954
} } } /* * Finally adjust exposure time for flicker avoidance (require both * exposure time and gain not
raspberrypi/libcamera / src/ipa/mali-c55/algorithms/ccm.cpp / Ccm::prepare / L130-L155
\copydoc libcamera::ipa::Algorithm::prepare
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/dpf.cpp / Dpf::init / L48-L173
\copydoc libcamera::ipa::Algorithm::init
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/dpf.cpp / Dpf::queueRequest / L178-L215
\copydoc libcamera::ipa::Algorithm::queueRequest
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/blc.cpp / BlackLevelCorrection::BlackLevelCorrection / L42-L51
n::BlackLevelCorrection() { /* * This is a bit of a hack. In raw mode no black level correction * happens. Thraspberrypi/libcamera / src/ipa/rkisp1/algorithms/blc.cpp / BlackLevelCorrection::init / L56-L107
\copydoc libcamera::ipa::Algorithm::init
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/wdr.cpp / WideDynamicRange::prepare / L394-L445
\copydoc libcamera::ipa::Algorithm::prepare
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/filter.cpp / Filter::queueRequest / L56-L111
\copydoc libcamera::ipa::Algorithm::queueRequest
raspberrypi/libcamera / Documentation/design/ae.rst / Flickering when going from auto to manual / L36
Flickering when going from auto to manual When a manual exposure
raspberrypi/libcamera / Documentation/design/ae.rst / Raspberry Pi / L96
e from being used as a valid value. To get around the flickering issue, when AeEnable is false, the Raspberry Pi AEGC s
raspberrypi/libcamera / Documentation/design/ae.rst / Summary of goals / L134
s transitions from auto to manual, and do so without flickering - We need custom minimum values for the manual contro
raspberrypi/libcamera / Documentation/design/ae.rst / Our solution / L151
imulates an auto -> locked -> manual or auto -> manual state transition, and makes it impossible to do the nonsensical manual
raspberrypi/libcamera / Documentation/design/ae.rst / Description of the controls / L273
algorithm will keep be used. This can be used to do a flickerless transition from auto to manual as described earlier. I
raspberrypi/libcamera / Documentation/guides/application-developer.rst / Handle request completion events / L384
de the ``for`` loop from above, we can print the Frame sequence number and details of the planes. .. code:: cpp std::cou
raspberrypi/libcamera / src/ipa/rpi/cam_helper/cam_helper_imx296.cpp / 6c1dd9d555
Revert "ipa: rpi: imx296: Enable embedded data" This reverts commit b7fa47fc0fdf8d0946931bc4a3c02296c07c5cf5. Right now embedded data with the imx296 cannot be negotiated with the CFE. Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
raspberrypi/libcamera / src/ipa/libipa/lsc.cpp / 62d4bfc450
ipa: libipa: lsc: Specialize Interpolator for uint8_t Specialize Interpolator<>::interpolate() for uint8_t register size. Some platforms (Mali, Simple) use an 8 bit register size. Provide a specialization for the that type of Interpolator<>::interpolate(). Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Re…
raspberrypi/libcamera / src/ipa/libipa/lsc_base.cpp / c261d07321
ipa: libipa: lsc: Move Interpolator<lsc::Components> to lsc_base Move the Interpolator<lsc::Components>: specialization from the RkISP1 IPA to the lsc_base header. Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Stefan Klug <stefan.…
raspberrypi/libcamera / src/ipa/libipa/lsc_base.cpp / 5d660ce81d
ipa: libipa: Introduce lsc_base.h Provide a header and implementation for the base definitions of common lens shading calibration data types, and move re-usable code out from the RkISP1 lsc algorithm. Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.c…
raspberrypi/libcamera / src/ipa/mali-c55/algorithms/ccm.cpp / 1bf7e9485e
ipa: mali-c55: Implement Ccm algorithm Implement Ccm algorithm for Mali-C55 base on the libipa CcmAlgorithm class. Mali has configurable colour gains as part of the CCM hardware block. Fix them to 1.0 for the time being as white balance is performed by the dedicated Awb algorithm in the Bayer colour space. The existin…
raspberrypi/libcamera / src/ipa/libipa/ccm.cpp / 9062131522
ipa: libipa: Add CcmAlgorithm to libipa Add a CcmAlgorithm to libipa. The CcmAlgorithm performs interpolation of the colour correction matrices as loaded from tuning file on a colour temperature. The implementation is based on the existing RkISP1 CCM algorihtm. Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.co…
raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.cpp / 93bed4da91
ipa: rpi: Gate CamHelper::prepare() by the mistrust count The current logic in the IPA gates the controller/algorithms from running on a the frame if mistrustCount_ > 0. This logic is somewhat incorrect, as the image data is indeed valid, just the embedded data and other bits of metadata are possibly invalid. This com…
raspberrypi/libcamera / meson.build / 191e202178
libcamera v0.7.2 This release brings 113 commits, and interestingly fixes two separate saturation handling bugs in both the SoftISP and the Raspberry Pi IPA independently. In particular the fixes to the SoftISP mean we can look forward to tuning cameras on laptops and mobile phones with real CCMs now. Also on the Soft…
raspberrypi/libcamera / include/libcamera/internal/converter/converter_dw100_vertexmap.h / b1e9007e47
libcamera: converter: converter_dw100: Allow to transform between different camera matrices To configure the lens dewarping, the calibrated camera matrix and the distortion coefficients are required. For some use cases (like removing a skew introduced by the camera geometry) it is necessary to define an additional out…
raspberrypi/libcamera / src/ipa/libipa/interpolator.h / 9561bd2ed8
ipa: libipa: Handle missing YAML nodes in Interpolator Interpolator::readYaml() currently logs an error when passed an empty YAML object because it expects the node to always be a list. Optional tuning parameters such as colourGains in the AWB Grey algorithm may be absent from the tuning files. rkisp1 uses tuning file…
raspberrypi/libcamera / src/libcamera/software_isp/debayer_egl.cpp / 2985ca6ac0
libcamera: software_isp: debayer_egl: Demote unsupported format log to Info DebayerEGL::getInputConfig() logs at Error level when it encounters an unsupported input format. This function is called during format enumeration from the simple pipeline handler's tryPipeline(), which iterates over all pixel formats reported…
raspberrypi/libcamera / src/libcamera/software_isp/debayer_egl.cpp / 93f0db167a
debayer_egl: Implement dmabuf import for input buffers In many cases we can import the GPU-ISP input buffers, dmabufs from v4l2, directly into EGL instead of mapping and uploading - i.e. copying - them. Doing so can have positive effects in multiple areas, including reducing memory bandwidth and CPU usage, as well as …
raspberrypi/libcamera / src/libcamera/pipeline/rpi/common/pipeline_base.cpp / ad5506544b
pipeline: rpi: Fix crash when configuring timeout When loading a config containing a nonzero "camera_timeout_value_ms" (as is required for externally-triggered cameras) it would crash as the pipeline handler tried to access both the IPA and frontEndDevice before either had been created. Re-order to avoid the crash. Fi…
raspberrypi/libcamera / include/libcamera/base/regex.h / 35c02dae9e
libcamera: base: regex: Fix preprocessor check clang has no `maybe-uninitialized` warning, therefore the suppression will generate a compiler error. This was probably hidden by the fact that `__SANITIZE_*__` macros have only been added to clang since llvm 22. Link: https://github.com/llvm/llvm-project/commit/568c23bbd…
raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.cpp / b0dbd5100b
pipeline: rpi: Make control lists in requests properly atomic When a request is about to be processed, this commit separates "delayed controls" (camera-related ones that take "a few frames" to apply) from "immediate controls" (ISP-related controls) that will happen instantly. The immediate controls are held back until…
raspberrypi/libcamera / src/android/meson.build / 2ca75f012f
android: Disable build on platforms without mbrtoc16() The Android camera HAL uses mbrtoc16(), which is not provided by uClibc. We could work around the issue by adding an implementation of the function to libcamera::utils (probably based on mbrtowc()). Usage of the Android camera HAL with uClibc however is such a nic…
raspberrypi/libcamera / src/ipa/libipa/camera_sensor_helper.cpp / 12b0844b06
ipa: libipa: camera_sensor_helper: Add OV2740 black level Set blackLevel_ = 4096 (0x40 at 10-bit) in CameraSensorHelperOv2740. The OV2740 kernel driver programs BLC target register 0x4003 with 0x40 for the 180 MHz link frequency mode. This matches the same pattern used by OV5675 and other OmniVision sensors with a 10-…
raspberrypi/libcamera / include/libcamera/internal/software_isp/swstats_cpu.h / d3e76fe1d1
libcamera: software_isp: Normalize statistics sums to 8-bit The SWSTATS_ACCUMULATE_LINE_STATS() macro divides the luminance value for the histogram to normalize it to 8-bit range, but does not apply the same normalization to the RGB sums. For 10-bit and 12-bit unpacked Bayer formats this means the sums are accumulated…
raspberrypi/libcamera / src/ipa/simple/algorithms/agc.cpp / 6b5c42a9a9
ipa: simple: agc: Replace bang-bang controller with proportional The AGC's updateExposure() uses a fixed ~10% step per frame regardless of how far the current exposure is from optimal. With a hysteresis dead band of only +/-4%, the controller overshoots when the correct value falls within one step, causing visible bri…
raspberrypi/libcamera / meson.build / 183e37362f
libcamera v0.7.1 This release brings 142 commits with the largest developments in the core of libcamera components. Perhaps the most obvious is that we now use C++20 for the project. The Configuration file handling has had a substantial rework with updates to the yaml_parser. The RKISP1 IPA has now added a new Hue con…
raspberrypi/libcamera / include/libcamera/ipa/vimc.mojom / bcaed97380
test: ipa: ipa_interface: Replace FIFO with pipe The ipa_interface unit test uses a FIFO to communicate with the vimc IPA module. FIFOs are named pipes, created in the file system. The path to the FIFO is hardcoded so that both the unit test and IPA module know where to locate the file. If the ipa_interface crashes fo…
raspberrypi/libcamera / src/ipa/rpi/pisp/pisp.cpp / 033bb2cce3
ipa: rpi: Fix gamma lookup table generation for PiSP platform generateLut was failing to fill in the final slope value, meaning that fully saturated pixels would full slightly short (the slope of the final piecewise linear segment would default to zero). The loop is slightly reorganised to fix the problem. Signed-off-…
raspberrypi/libcamera / include/libcamera/internal/software_isp/debayer_params.h / 0d3e543b4d
libcamera: software_isp: Set initial values of DebayerParams Debayer parameters and processing are currently run asynchronously. This can lead to assertion errors in case the processing tries to use not yet computed debayer parameters. To prevent this situation, specify some default values for DebayerParams members. T…
raspberrypi/libcamera / src/ipa/simple/algorithms/awb.cpp / a1d272d7f1
ipa: simple: Remove duplicate header inclusion The Awb component already references libcamera/control_ids.h. Remove the incorrect duplicate inclusion of "control_ids.h". Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> Reviewed-by: Milan Zamazal <mzamazal@redhat.com> Signed-off-by: Kieran Bingham <kieran.…
raspberrypi/libcamera / src/libcamera/software_isp/debayer.h / 78b9890a0f
libcamera: software_isp: debayer: Take `DebayerParams` by ref When calling `Debayer::process()` from `SoftwareIsp::process()`, the `DebayerParams` object is copied multiple times: (1) call of `BoundMethodMember<...>::activate()` inside `Object::invokeMethod()` (2) constructor of `BoundMethodArgs<...>` inside `BoundMet…
raspberrypi/libcamera / src/ipa/simple/algorithms/awb.cpp / bb2e6d0833
libcamera: ipa: simple: Fix multiplication order in Awb The matrix multiplication in Awb is swapped: the gains should be applied after combinedMatrix, i.e. on the left side. The mistake happened when `ccm' was replaced with combinedMatrix and gainMatrix multiplication was moved to Awb. While CCM must be applied after …
raspberrypi/libcamera / meson.build / b7854fd07d
libcamera v0.7.0 This release brings 158 commits with substantial development on the SoftISP components. This brings in GPU acceleration, allowing us to get higher throughput for cameras using this pipeline. Further development to improve the image quality is ongoing now that we can perform more processing in realtime…
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/lsc.cpp / e8054c758c
ipa: rkisp1: lsc: Resample polynomial lens shading tables at configure time The lens shading correction is always applied based on the sensor crop bounds. This leads to incorrect lens shading correction for analog crops that do not cover the whole sensor. To fix that, we need to adapt the lens shading table for the se…
raspberrypi/libcamera / src/ipa/libipa/interpolator.cpp / ee1d93d8aa
ipa: libipa: interpolator: Drop key quantization The quantization of the interpolation key was only used by the LSC algorithm. There it lead to difficult to read code was removed. As there is no remaining user of it, drop it from the Interpolator class. While at it, cleanup the includes. Signed-off-by: Stefan Klug <st…
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/lsc.cpp / 3bfc71345f
ipa: rkisp1: lsc: Handle quantization locally The quantization functionality in the Interpolator type hinders in writing nice code. Don't use it and implement the functionality directly in the algorithm. While at it, reduce the threshold to half of the quantization step size, otherwise it might happen that we skip a f…
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/lsc.h / 71c2e858d8
ipa: rkisp1: lsc: Drop unused function declaration The interpolateTable() function is not implemented anywhere. Drop the declaration. Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
raspberrypi/libcamera / include/libcamera/internal/software_isp/debayer_params.h / 3ffaa4c0e2
libcamera: ipa: simple: Remove Lut algorithm The Lut algorithm is not really an algorithm. Moreover, algorithms may be enabled or disabled but with Lut disabled, nothing will work. Let's move the construction of lookup tables to CPU debayering, where it is used. The implied and related changes are: - DebayerParams is …
raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.cpp / b9b53845fe
v4l2: v4l2_camera_proxy: Fix for getting default FrameDurationLimits The default values for controls::FrameDurationLimits is now an array but the v4l2 proxy is fetching it as a scalar value, causing a runtime error. Fix this by templating the getter with the correct Span<const int64_t, 2> type. This fix also requires …
raspberrypi/libcamera / src/libcamera/base/event_dispatcher_poll.cpp / fa22b4ffef
libcamera: base: event_dispatcher_poll: Dispatch `POLLPRI` first When `poll()` returns multiple events for a given file descriptor, while there is no general rule that requires it, for the use cases of libcamera, it is better to service priority events first. So dispatch those first, and not last. For example, a V4L2 …
raspberrypi/libcamera / src/libcamera/shaders/bayer_1x_packed.frag / 46aac79a44
libcamera: shaders: Add support for Gamma Add gamma compensation to the debayer shaders after colour correction is applied. Similarly only apply the calculated Gamma curve when using the CCM as the lookup tables already contain the data. Suggested-by: Milan Zamazal <mzamazal@redhat.com> Reviewed-by: Milan Zamazal <mza…
raspberrypi/libcamera / src/libcamera/shaders/bayer_1x_packed.frag / 6029dcf9a6
libcamera: shaders: Add support for black level compensation Add the ability to apply a int blacklevel subtraction against the demosaiced data prior to application of colour correction data. Reviewed-by: Milan Zamazal <mzamazal@redhat.com> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Reviewed-by: Kiera…
raspberrypi/libcamera / PR #284
panded pixel values. By enabling this in the PiSP, we offload the processing to dedicated hardware, improve performa
raspberrypi/libcamera / PR #270
user-specified manual setting. without significant regression or making the code too messy.
raspberrypi/libcamera / PR #218
Check for unsupported pixel format If an unsupported pixel format is handed
raspberrypi/libcamera / PR #257
in the ctt. The first is a bug in the lens shading calibration measurement, which is now fixed. The second occurs
raspberrypi/libcamera / PR #142
d to the config file which we pass to the lens shading calibration. This clamps the maximum luminance gain that gets writ
raspberrypi/libcamera / PR #73
libcamera: controls: Add controls for AEC/AGC flicker avoidance Flicker is the term used to describe brightn
raspberrypi/libcamera / PR #74
libcamera: controls: Add controls for AEC/AGC flicker avoidance Flicker is the term used to describe brightn
raspberrypi/libcamera / PR #72
libcamera: controls: Add controls for AEC/AGC flicker avoidance Flicker is the term used to describe brightn
raspberrypi/libcamera / Issue #359
ntrol was introduced for: dark frame and bad pixel map calibration needs the sensor temperature recorded per captured fra
raspberrypi/libcamera / Issue #355
IMX500 sensor state machine fails ("failed to load loader firmware") during sustairaspberrypi/libcamera / Issue #352
ash in the first way (it just hangs forever, even with timeout set), so attached is a output from a run with the seco
raspberrypi/libcamera / Issue #350
f the box. I'd be awesome if it was documented how to work around these issues. ``` v4l2: Current input: "unicam-image"
raspberrypi/libcamera / Issue #341
Overexposed pixels turning purple/magenta Issue: Overexposed pixe
raspberrypi/libcamera / Issue #344
out of order frames when recording with libcamera-raw For a scienti
raspberrypi/libcamera / Issue #339
Segfault with non zero camera_timeout_value_ms I have a pi5 using the official global shutte
raspberrypi/libcamera / Issue #336
IMX219 - inconsistent frame rate Hi, I'm working on IM219, - ran gstreamer p
raspberrypi/libcamera / Issue #337
Incorrect color with Raspberry Pi Global Shutter camera My Raspb
raspberrypi/libcamera / Issue #322
s to begin creating frames ``` rpicam-vid --camera 0 --timeout 0 --codec mjpeg --segment 1 --mode 1280:800:10 --frame
raspberrypi/libcamera / Issue #331
idence Exposure received in 141.0479s (+125.5345s) ## Workaround Disabling AWB completely (both day and night) resolves
raspberrypi/libcamera / Issue #317
this silently ignores the auto exposure mode. The only work around I have is to (1) start the camera with shutter and gai
raspberrypi/libcamera / Issue #308
Libcamera FPS regression I have a raspberry pi 5 with a camera v2 module (imx21
raspberrypi/libcamera / Issue #234
ing or metadata. (might be somewhere gst_libcamera_src_negotiate and GstVideoFormat ???) Here's what the camera list l
raspberrypi/libcamera / Issue #267
] [265] ERROR IPCPipe ipc_pipe_unixsocket.cpp:134 Call timeout! [0:05:59.429475071] [265] ERROR IPCPipe ipc_pipe_unix
raspberrypi/libcamera / Issue #271
R10_1X10 - Selected CFE format: 2304x1296-PC1B dmaHeap allocation failure for rpicam-apps0 ERROR: *** failed to allocate capture
raspberrypi/libcamera / Issue #258
e "pispbe" [9:49:27.593620622] [181259] DEBUG ClockRec clock_recovery.cpp:69 configure 100 2000 10 50000 [9:49:27.593640289]
raspberrypi/libcamera / Issue #255
noise [0:22:48.865463230] [5151] WARN RPI vc4.cpp:393 Mismatch between Unicam and CamHelper for embedded data usage!
raspberrypi/libcamera / Issue #254
4-2b2cb15547c0) I am facing some error during the AWB calibration: SVD did not converge in Linear Least Squares. (cf att
raspberrypi/libcamera / Issue #243
ver there are new issues to contend with. I have image artifacts for nearly all the sensor modes. ``` SRGGB10_CSI2P
raspberrypi/libcamera / Issue #203
up=1 # Run in 64-bit mode arm_64bit=1 # Disable compensation for displays with overscan disable_overscan=1 # Ru
raspberrypi/libcamera / Issue #236
er would limit the amount of light captured to prevent overexposure. However, after searching online, I haven’t found any
raspberrypi/libcamera / Issue #230
04:17.851426528] [873] DEBUG RPiAlsc alsc.cpp:140 Read calibrations_Cr calibration for ct 3000 [0:04:17.851662615] [873] DEBU
raspberrypi/libcamera / Issue #228
an someone point to the reason for this assertion? Any race condition could cause this? I suspect requestCompleted gets c
raspberrypi/libcamera / Issue #221
code is available here: https://github.com/RobMeades/watchdog/blob/2630be18cc6108a74ec3b37eb8241953a899d822/software
raspberrypi/libcamera / Issue #172
se.cpp:228 Invalid sensor configuration: bitDepth/size mismatch [2:51:25.496768637] [2915] ERROR RPI pipeline_base.cp
raspberrypi/libcamera / Issue #213
[10191] ERROR IPCPipe ipc_pipe_unixsocket.cpp:134 Call timeout! [5:20:34.449811560] [10191] ERROR IPCPipe ipc_pipe_u
raspberrypi/libcamera / src/ipa/libipa/lsc.cpp / 8af719b995
ipa: libipa: lsc: Re-sort lsc.cpp The LscAlgorithm and LscAlgorithmBase classes implementations had not been resorted in the previous patch to keep the diff short. Re-sort the documentation of the LscAlgorithmBase and LscAlgorithm classes to match the declaration order. Signed-off-by: Jacopo Mondi <jacopo.mondi@ideaso…
raspberrypi/libcamera / src/ipa/libipa/lsc.cpp / adf284506a
ipa: libipa: lsc: Quantize gains in LscAlgorithm Template the LscAlgorithm class with the LSC engine register format and make lsc::Components<> parameteric on the type used to store the quantized LSC gains. This allows to quantize gains in the LscAlgorithm class and not in the IPA modules. Move the Components<> and Co…
raspberrypi/libcamera / src/ipa/libipa/lsc.cpp / 676140a4c7
ipa: libipa: lsc: Make Components a map<> The current definition of lsc::Components assumes 4 gain vectors named after the colour components supported by the RkISP1 ISP (r, gr, gb and b). As different ISP support different colour channels for their Lsc tables make lsc::Components a map that associates the name of the …
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/lsc.cpp / 88b979dc37
ipa: rkisp1: lsc: Port to use LscAlgorithm Port the RkISP1 LSC algorithm to use the LscAlgorithm class by composition. Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
raspberrypi/libcamera / src/ipa/libipa/lsc.cpp / afccf69edc
ipa: libipa: lsc: Introduce LscAlgorithm Introduce the lsc.h and lsc.cpp files with the definition of the Lsc algorithm active state, frame context and the LscAlgorithm class. The LscAlgorithm class uses two backends (LscPolynomial and LscTable) to perform tuning file parsing and re-scaling of the LSC gains. Signed-of…
raspberrypi/libcamera / src/ipa/libipa/lsc_polynomial.cpp / b4505e47d8
ipa: libipa: lsc_polynomial: Move LscPolynomial from RkISP1 Move the LscPolynomial class to libipa from RkISP1. Rename the class from LscPolynomialImpl to a simpler LscPolynomial. The class is copied verbatim, only documentation has been added. Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: K…
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/lsc.cpp / e27f354289
ipa: rkisp1: lsc: Re-architecture Lsc support The RkISP1 LSC implementation is realized by the following components: - 2 "tuning file" parser classes: - LscPolynomialLoader - LscTableLoader which implement the "parseLscData" function that loads from tuning file a polynomial representation of the lsc gains or a table of gains respectively. - A hierachy of "ShadingDescriptors" - LscPolynomialShadin…
raspberrypi/libcamera / include/linux/media/arm/mali-c55-config.h / 9e3a6ca3c2
include: linux: mali-c55: Update to support CCM and Gamma Update the Mali-C55 uAPI header to add support for CCM and the RGB Gamma. Support for CCM and RGB Gamma have been added to the Mali-C55 driver in Linux v7.3 by commits: - bb401df68c06 ("media: mali-c55: Add support for CCM") - 6962703102c4 ("media: mali-c55: Ad…raspberrypi/libcamera / src/ipa/simple/algorithms/ccm.cpp / c875f02456
ipa: simple: Port to use libipa CcmAlgorithm Now that libipa provides a common CCM algorithm implementation, replace the custom handling with the common Ccm. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Tested-by: Robert Mader <robert.mader@collabora.com> Reviewed-by: Milan Zamazal <mzamazal@redhat.com> Tested-by: Mila…
raspberrypi/libcamera / src/ipa/libipa/meson.build / 5e18619390
ipa: libipa: Introduce V4L2Stats Add a V4L2Stats class similar in spirit to the existing V4L2Params class to allow IPA modules to easily sub-class it to access ISP statistics blocks serialized into a v4l2_isp_buffer. Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingha…
raspberrypi/libcamera / src/libcamera/software_isp/debayer.cpp / 244572db3e
libcamera: debayer: Use helpers for strides and frame sizes Clean up some open-coded logic, making the code shorter, more generic and easier to follow. Signed-off-by: Robert Mader <robert.mader@collabora.com> Reviewed-by: Milan Zamazal <mzamazal@redhat.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.co…
raspberrypi/libcamera / src/libcamera/software_isp/debayer_egl.cpp / 13f7b921ac
libcamera: software_isp: debayer_egl: Implement input/output frame caching mechanism Implement a texture caching mechanism for both input and output frames and for both types of input frame. The before/after on a Qualcomm x1e is: 9.737ms per frame 5.691ms per frame The before/after on a Qualcomm sm8250 is: 21.710ms pe…
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/cproc.cpp / ab3fb363d8
ipa: rkisp1: cproc: Fix brightness and contrast value handling By reverse engineering it was discovered that the transfer curve applied by the CPROC module is Yout = Yin * contrast + brightness/2. However the most common expectation on contrast is to not change the middle gray of an image. So the expected curve is: Yo…
raspberrypi/libcamera / src/ipa/libipa/lux.cpp / 1e1eecc3f3
libcamera: Replace last mentions of YAML A few comments and log messages still mention YAML while they now relate to code operating on ValueNode. Replace them with value node or tuning data as appropriate for the context. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Barnabás Pőcze <…
raspberrypi/libcamera / src/libcamera/pipeline/rpi/common/delayed_controls.cpp / 2c0c52be1a
pipeline: rpi: Simplify delayed controls The queueCount_ value is redundant and can be removed. The pipeline handler calls the push and applyControls functions in a an interleaved manner, so queueCount_ was merely tracking writeCount_, and is therefore unnecessary. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Jacopo …
raspberrypi/libcamera / Documentation/guides/pipeline-handler.rst / Prerequisite knowledge: system architecture / L12
rough a data and control bus. The presence, number and characteristics of them vary depending on the system design and the pr
raspberrypi/libcamera / Documentation/guides/pipeline-handler.rst / Prerequisite knowledge: libcamera architecture / L75
tured images, and to advertise the immutable camera characteristics enumerated at system initialization time. Creating a
raspberrypi/libcamera / Documentation/guides/pipeline-handler.rst / Registering controls and properties / L561
sociated with immutable values, which represent static characteristics that can be used by applications to identify camera de
raspberrypi/libcamera / Documentation/guides/pipeline-handler.rst / Queuing requests between applications and hardware / L1203
cations and hardware libcamera implements a streaming model based on capture requests queued by an application to the ``
raspberrypi/libcamera / Documentation/guides/pipeline-handler.rst / Testing a pipeline handler / L1410
18462130] [186470] WARN V4L2 v4l2_pixelformat.cpp:176 Unsupported V4L2 pixel format Y10 ... <remaining Unsupported V4
raspberrypi/libcamera / Documentation/sensor_driver_requirements.rst / Mandatory Requirements / L21
is requirement will need to be adapted or will produce incorrect results. The ``HBLANK``, ``PIXEL_RATE`` and ``VBLANK`
raspberrypi/libcamera / src/android/camera_capabilities.cpp / CameraCapabilities::initializeStaticMetadata / L762-L1483
L_AE_AVAILABLE_TARGET_FPS_RANGES, ANDROID_CONTROL_AE_COMPENSATION_RANGE, ANDROID_CONTROL_AE_COMPENSATION_STEP, ANDROID_CON
raspberrypi/libcamera / src/android/camera_capabilities.cpp / CameraCapabilities::requestTemplatePreview / L1512-L1613
requestTemplate->addEntry(ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION, aeExposureCompensation); uint8_t aePrecapture
raspberrypi/libcamera / src/android/jpeg/post_processor_jpeg.cpp / PostProcessorJpeg::configure / L36-L60
f (inCfg.size != outCfg.size) { LOG(JPEG, Error) << "Mismatch of input and output stream sizes"; return -EINVAL;raspberrypi/libcamera / src/apps/cam/sdl_sink.cpp / SDLSink::configure / L87-L122
RMAT_NV21, cfg.stride); #endif else { std::cerr << "Unsupported pixel format " << cfg.pixelFormat << std::endl; returaspberrypi/libcamera / src/apps/common/dng_writer.cpp / DNGWriter::write / L522-L809
rmat); if (it == formatInfo.cend()) { std::cerr << "Unsupported pixel format" << std::endl; return -EINVAL; } consraspberrypi/libcamera / src/apps/lc-compliance/helpers/capture.cpp / Capture::start / L115-L156
(stream); ASSERT_EQ(buffers.size(), bufferCount) << "Mismatching buffer count"; for (std::size_t i = 0; i < bufferCo
raspberrypi/libcamera / src/gstreamer/gstlibcamerasrc.cpp / GstLibcameraSrcState / L105-L136
Used for C++ object with destructors.
raspberrypi/libcamera / src/gstreamer/gstlibcamerasrc.cpp / GstLibcameraSrcState::processRequest / L334-L451
Must be called with stream_lock held.
raspberrypi/libcamera / src/gstreamer/gstlibcamerasrc.cpp / gst_libcamera_create_video_pool / L537-L584
\brief Create a video pool for a pad \param[in] self The libcamerasrc instance \param[in] srcpad The pad \param[in] caps The pad caps \param[in] info The video info for the pad This function creates and returns a video buffer pool for the given pad if needed to accommodate stride mismatch. If the peer element supports…
raspberrypi/libcamera / src/gstreamer/gstlibcamerasrc.cpp / gst_libcamera_src_negotiate / L587-L706
Must be called with stream_lock held.
raspberrypi/libcamera / src/gstreamer/gstlibcamerasrc.cpp / gst_libcamera_src_task_run / L708-L826
/* * Caps may gain extra fields after the initial negotiation (e.g. * colorimetry added by a downstream element)
raspberrypi/libcamera / src/gstreamer/gstlibcamerasrc.cpp / gst_libcamera_src_class_init / L1203-L1252
,depth=10\"). " "Leave unset to let the pipeline negotiate the sensor mode automatically.", GST_TYPE_STRUCT
raspberrypi/libcamera / src/ipa/ipu3/algorithms/agc.cpp / Agc::parseStatistics / L117-L148
green value to estimate the * brightness. Even the overexposed pixels are * taken into account. */ hist[(c
raspberrypi/libcamera / src/ipa/ipu3/algorithms/agc.cpp / Agc::process / L215-L234
\brief Process IPU3 statistics, and run AGC operations \param[in] context The shared IPA context \param[in] frame The current frame sequence number \param[in] frameContext The current frame context \param[in] stats The IPU3 statistics and ISP results \param[out] metadata Metadata for the frame, to be filled by the alg…
raspberrypi/libcamera / src/ipa/ipu3/algorithms/tone_mapping.cpp / ToneMapping::prepare / L77-L98
\brief Fill in the parameter structure, and enable gamma control \param[in] context The shared IPA context \param[in] frame The frame context sequence number \param[in] frameContext The FrameContext for this frame \param[out] params The IPU3 parameters Populate the IPU3 parameter structure with our tone mapping look u…
raspberrypi/libcamera / src/ipa/ipu3/algorithms/tone_mapping.cpp / ToneMapping::process / L111-L118
\brief Calculate the tone mapping look up table \param[in] context The shared IPA context \param[in] frame The current frame sequence number \param[in] frameContext The current frame context \param[in] stats The IPU3 statistics and ISP results \param[out] metadata Metadata for the frame, to be filled by the algorithm …
raspberrypi/libcamera / src/ipa/ipu3/ipu3.cpp / IPAIPU3 / L139-L179
The IPU3 ImgU has further processing blocks to support image quality improvements through bayer and temporal noise reductions, however those are not supported in the current implementation, and will use default settings as provided by the kernel driver. Demosaicing is operating with the default parameters and could be…
raspberrypi/libcamera / src/ipa/ipu3/ipu3.cpp / IPAIPU3::computeParams / L447-L476
\brief Fill and return a buffer with ISP processing parameters for a frame \param[in] frame The frame number \param[in] bufferId ID of the parameter buffer to fill Algorithms are expected to fill the IPU3 parameter buffer for the next frame given their most recent processing of the ImgU statistics.
raspberrypi/libcamera / src/ipa/libipa/agc_mean_luminance.cpp / AgcMeanLuminance::effectiveYTarget / L548-L576
\brief Get the currently effective y target \param[in] lux The effective lux value \param[in] exposureCompensation The exposure compensation value This function returns the current y target including exposure compensation. \return The y target value
raspberrypi/libcamera / src/ipa/libipa/agc_mean_luminance.cpp / AgcMeanLuminance::filterExposure / L588-L609
\brief Apply a filter on the exposure value to limit the speed of changes \param[in] exposureValue The target exposure from the AGC algorithm The speed of the filter is adaptive, and will produce the target quicker during startup, or when the target exposure is within 20% of the most recent filter output. \return The …
raspberrypi/libcamera / src/ipa/libipa/agc_mean_luminance.cpp / AgcMeanLuminance::calculateNewEv / L659-L702
\brief Calculate the new exposure value and split it between exposure time and gain \param[in] params The set of parameters for the exppsure value calculation Calculate a new exposure value to try to obtain the target. The calculated exposure value is filtered to prevent rapid changes from frame to frame, and divided …
raspberrypi/libcamera / src/ipa/libipa/agc_mean_luminance.h / libcamera / L22-L99
include "exposure_mode_helper.h" include "histogram.h" include "pwl.h"
raspberrypi/libcamera / src/ipa/libipa/awb.cpp / AwbAlgorithmBase::queueRequest / L277-L334
\param[in] state The AWB active state \param[in] frame The frame number \param[in] frameContext The AWB frame context \param[in] controls The list of controls part of the Request Queue a new Request to the AWB algorithm and modify its behaviour according to the provided controls. The currently handled controls are: - …
raspberrypi/libcamera / src/ipa/libipa/awb_bayes.cpp / AwbBayes::gainsFromColourTemperature / L260-L269
\brief Compute white balance gains from a colour temperature \param[in] colourTemperature The colour temperature in Kelvin Compute the white balance gains from a \a colourTemperature. This function does not take any statistics into account. It simply interpolates the colour gains curve on a new colour temperature. \re…
raspberrypi/libcamera / src/ipa/libipa/awb_bayes.cpp / AwbBayes::calculateAwb / L271-L307
prior = priors_.getInterpolated(lux);
raspberrypi/libcamera / src/ipa/libipa/awb_bayes.cpp / AwbBayes::coarseSearch / L309-L366
oint of the search, but refine it with a quadratic * interpolation around its neighbors. */ if (points.size() > 2) {raspberrypi/libcamera / src/ipa/libipa/awb_bayes.cpp / AwbBayes::fineSearch / L368-L464
ely across the CT curve, * now let's do a quadratic interpolation for the best result. */ bestPoint = std::clamp(be
raspberrypi/libcamera / src/ipa/libipa/awb_bayes.cpp / AwbBayes::interpolateQuadratic / L477-L491
\brief Find extremum of function \param[in] a First point \param[in] b Second point \param[in] c Third point Given 3 points on a curve, find the extremum of the function in that interval by fitting a quadratic. \return The x value of the extremum clamped to the interval [a.x(), c.x()]
raspberrypi/libcamera / src/ipa/libipa/awb_bayes.h / libcamera / L21-L61
include "awb.h" include "interpolator.h" include "pwl.h"
raspberrypi/libcamera / src/ipa/libipa/awb_bayes.h / ipa / L23-L59
&stats, std::span<double> range) const; double interpolateQuadratic(ipa::Pwl::Point const &a, ipa::Pwl::Point cons
raspberrypi/libcamera / src/ipa/libipa/awb_bayes.h / AwbImplementation / L25-L57
&stats, std::span<double> range) const; double interpolateQuadratic(ipa::Pwl::Point const &a, ipa::Pwl::Point cons
raspberrypi/libcamera / src/ipa/libipa/awb_grey.cpp / AwbGrey::init / L44-L57
\brief Initialize the algorithm with the given tuning data \param[in] tuningData The tuning data for the algorithm Load the colour temperature curve from the tuning data. If there is no tuning data available, continue with a warning. Manual colour temperature will not work in that case. \return 0 on success, a negativ…
raspberrypi/libcamera / src/ipa/libipa/awb_grey.cpp / AwbGrey::calculateAwb / L74-L91
\brief Calculate AWB data from the given statistics \param[in] stats The statistics to use for the calculation \param[in] lux The lux value of the scene \param[in] range The colour temperature search limits The colour temperature is estimated based on the colours::estimateCCT() function. The gains are calculated purel…
raspberrypi/libcamera / src/ipa/libipa/awb_grey.cpp / AwbGrey::gainsFromColourTemperature / L104-L114
\brief Compute white balance gains from a colour temperature \param[in] colourTemperature The colour temperature in Kelvin Compute the white balance gains from a \a colourTemperature. This function does not take any statistics into account. It simply interpolates the colour gains curve (if provided in the tuning file)…
raspberrypi/libcamera / src/ipa/libipa/camera_sensor_helper.cpp / CameraSensorHelperAr0144 / L383-L470
{ /* The recommended minimum gain is 1.6842 to avoid artifacts. */ gain = std::clamp(gain, 1.0 / (1.0 - 13.0 / 32.0raspberrypi/libcamera / src/ipa/libipa/camera_sensor_helper.cpp / gainCode / L392-L417
{ /* The recommended minimum gain is 1.6842 to avoid artifacts. */ gain = std::clamp(gain, 1.0 / (1.0 - 13.0 / 32.0raspberrypi/libcamera / src/ipa/libipa/histogram.cpp / Histogram::interQuantileMean / L155-L189
\brief Calculate the mean between two quantiles \param[in] lowQuantile low Quantile \param[in] highQuantile high Quantile Quantiles are not ideal for metering as they suffer several limitations. Instead, a concept is introduced here: inter-quantile mean. It returns the mean of all pixels between lowQuantile and highQu…
raspberrypi/libcamera / src/ipa/libipa/lsc_base.h / libcamera / L21-L50
include "interpolator.h"
raspberrypi/libcamera / src/ipa/libipa/meson.build
'fixedpoint.h', 'gamma.h', 'histogram.h', 'interpolator.h', 'lsc.h', 'lsc_base.h', 'lsc_polynomial
raspberrypi/libcamera / src/ipa/libipa/v4l2_params.cpp / V4L2ParamsBase::block / L170-L212
\brief Populate an ISP configuration block a returns a reference to its memory \param[in] type The ISP block identifier enumerated by the IPA module \param[in] blockType The kernel-defined ISP block identifier, used to populate the block header \param[in] blockSize The ISP block size, used to populate the block header…
raspberrypi/libcamera / src/ipa/libipa/v4l2_stats.cpp / V4L2StatsBase::V4L2StatsBase / L57-L108
\brief Construct an instance of V4L2StatsBase \param[in] data Reference to the v4l2-buffer memory mapped area \param[in] version The ISP parameters version the implementation supports Parse the statistics buffer and construct a cache that maps a block type to the memory location of a statistics block in the buffer. Af…
raspberrypi/libcamera / src/ipa/libipa/v4l2_stats.cpp / V4L2StatsBase::block / L122-L143
\brief Retrieve an ISP statistics block and return a reference to it \param[in] blockType The kernel-defined ISP block identifier, used to identify the block header \param[in] blockSize The ISP statistics block size, for validation Retrieve a span to the statistics block memory location by accessing the cache built at…
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/agc.cpp / Agc::computeHistogramPredivider / L85-L119
looks like dividing into a counter of 65536 would * overflow by 1, this is apparently fine according to the hardwar
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/agc.cpp / Agc::process / L343-L395
\brief Process RkISP1 statistics, and run AGC operations \param[in] context The shared IPA context \param[in] frame The frame context sequence number \param[in] frameContext The current frame context \param[in] stats The RKISP1 statistics and ISP results \param[out] metadata Metadata for the frame, to be filled by the…
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/lsc.cpp / LensShadingCorrection::LensShadingCorrection / L107-L110
\class LensShadingCorrection \brief RkISP1 Lens Shading Correction control Due to the optical characteristics of the lens, the light intensity received by the sensor is not uniform. The Lens Shading Correction algorithm applies multipliers to all pixels to compensate for the lens shading effect. The coefficients are s…
raspberrypi/libcamera / src/ipa/rkisp1/algorithms/lsc.cpp / LensShadingCorrection::prepare / L205-L245
\copydoc libcamera::ipa::Algorithm::prepare
raspberrypi/libcamera / src/ipa/rkisp1/params.h / setEnabled / L146-L156
rmat, blocks are enabled in the * top-level header. Delegate to the RkISP1Params class. */ if (params_->format
raspberrypi/libcamera / src/ipa/rpi/cam_helper/cam_helper_imx708.cpp / CamHelperImx708::parseAEHist / L293-L347
hist[1]) { LOG(IPARPI, Error) << "Lin/Log histogram mismatch"; return false; } aeHistLinear_ = Histogram(hist,raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.cpp / IpaBase::IpaBase / L131-L136
Count_(0), lastRunTimestamp_(0), firstStart_(true), flickerState_({ 0, 0s }), cnnEnableInputTensor_(false), awbEnabled_(raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.cpp / IpaBase::init / L142-L198
ler provider frames at a * rate higher than this, we rate-limit the controller Prepare() and * Process() calls to lo
raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.cpp / IpaBase::start / L299-L394
lastTimeout_ = 0s;
raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.cpp / IpaBase::processStats / L528-L580
setCameraTimeoutValue();
raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.cpp / IpaBase::setMode / L582-L698
it does, try adjusting the minimum line * length to compensate if possible. */ Duration minPixelTime = controller_
raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.cpp / IpaBase::setCameraTimeoutValue / L700-L713
void IpaBase::setCameraTimeoutValue()
raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.cpp / IpaBase::applyAGC / L1821-L1885
no way of knowing if a control is read-only. * As a workaround, assume that if the minimum and maximum values of *
raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.h / libcamera / L28-L154
include "cam_helper/cam_helper.h" include "controller/agc_status.h" include "controller/camera_mode.h" include "controller/controller.h" include "controller/hdr_status.h" include "controller/metadata.h"
raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.h / ipa / L30-L152
utils::Duration lastTimeout_;
raspberrypi/libcamera / src/ipa/rpi/common/ipa_base.h / IPARPiInterface / L32-L150
utils::Duration lastTimeout_;
raspberrypi/libcamera / src/ipa/rpi/controller/controller.cpp / std::map<std::string, Controller::HardwareConfig> / L26-L85
d). * * There is a 64kbit data FIFO before the bottleneck, * which means that in all reasonable cases the
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/af.cpp / Af::Af / L173-L218
* Reserve space for data structures, to reduce memory fragmentation. * It's too early to query the size of the PDAF sens
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/af.cpp / Af::earlyTerminationByPhase / L476-L500
is finite and has the expected sign; * Interpolate/extrapolate the lens position for zero phase. * Check that the
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/af.cpp / Af::findPeak / L502-L533
tion by fitting a parabola. * Adapted from awb.cpp: interpolateQaudaratic() */ if (i == 0) i++; else if (i + 1 >= sca
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/af.cpp / Af::doAF / L588-L690
f (scanState_ == ScanState::Pdaf) { /* * Use PDAF closed-loop control whenever available, in both CAF * mode andraspberrypi/libcamera / src/ipa/rpi/controller/rpi/af.cpp / Af::updateLensPosition / L692-L711
nitted_) { /* from a known lens position: apply slew rate limit */ fsmooth_ = std::clamp(ftarget_, fsmoothraspberrypi/libcamera / src/ipa/rpi/controller/rpi/af.cpp / Af::prepare / L775-L822
PDAF phase data are available in prepare(), but CDAF statistics are not available until process(). We are gambling on the availability of PDAF. To expedite feedback control using PDAF, issue the V4L2 lens control from prepare(). Conversely, during scans, we must allow an extra frame delay between steps, to retrieve CD…
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/af.h / initialise / L51-L186
ggering */ double pdafGain; /* coefficient for PDAF feedback loop */ double pdafSquelch; /* PDAF stability parameter
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/af.h / CfgParams / L110-L123
s[AfSpeedMax]; uint32_t confEpsilon; /* PDAF hysteresis threshold (sensor-specific) */ uint32_t confThresh;
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/alsc.cpp / Alsc::read / L147-L190
f (ret) return ret; ret = readCalibrations(config_.calibrationsCr, params, "calibrations_Cr", config_.tableSiz
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/alsc.cpp / Alsc::switchMode / L272-L318
code then echoes the code in * doAlsc, without the adaptive algorithm. */ std::fill(lambdaR_.begin(), lambdaR
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb_nn.cpp / AwbNN::loadModel / L176-L268
LOG(RPiAwb, Error) << "Model input tensor dimension mismatch. Expected: " << buildDimString(expectedInputDims, 4)
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb_nn.cpp / AwbNN::prepareStats / L284-L300
ied to the stats in this pipeline, so stop * any LSC compensation. We also ignore config_.fast in this version. */ g
raspberrypi/libcamera / src/ipa/rpi/controller/rpi/awb_nn.cpp / AwbNN::transverseSearch / L302-L347
rbBest = ipa::Pwl::Point({ r, b }) + transverse * interpolateQuadatric(points[bestPoint - 1], points[bestPoint],raspberrypi/libcamera / src/ipa/rpi/vc4/vc4.cpp / IpaVc4::applyDG / L367-L385
s being * less than 1, which would cause saturation artifacts. Note that one of the colour * channels is still ge
raspberrypi/libcamera / src/libcamera/control_serializer.cpp / ControlSerializer::serialize / L322-L388
\brief Serialize a ControlList in a buffer \param[in] list The control list to serialize \param[in] buffer The memory buffer where to serialize the ControlList Serialize the \a list into the \a buffer using the serialization format defined by the IPA context interface in ipa_controls.h. \return 0 on success, a negativ…
raspberrypi/libcamera / src/libcamera/control_serializer.cpp / ControlSerializer::deserialize<ControlInfoMap> / L422-L555
r.carveOut(hdr->size - hdr->data_offset); if (buffer.overflow()) { LOG(Serializer, Error) << "Out of data"; returaspberrypi/libcamera / src/libcamera/control_serializer.cpp / ControlSerializer::deserialize<ControlList> / L567-L662
r.carveOut(hdr->size - hdr->data_offset); if (buffer.overflow()) { LOG(Serializer, Error) << "Out of data"; returaspberrypi/libcamera / src/libcamera/converter/converter_dw100_vertexmap.cpp / Dw100VertexMap::getVertexMap / L503-L627
\brief Get the dw100 vertex map Calculates the vertex map as a vector of hardware specific entries. \return The vertex map
raspberrypi/libcamera / src/libcamera/egl.cpp / eGL::createDMABufTexture2D / L174-L239
\brief Create a DMA-BUF backed 2D texture \param[in,out] eglImage EGL image to associate with the DMA-BUF \param[in] fd DMA-BUF file descriptor \param[in] output If true, create framebuffer for render target Internal implementation for creating DMA-BUF textures. Creates an EGL image from the DMA-BUF and binds it to a …
raspberrypi/libcamera / src/libcamera/ipa_data_serializer.cpp / IPADataSerializer<ControlList>::serialize / L311-L356
ize(*data.infoMap(), buffer); if (ret < 0 || buffer.overflow()) { LOG(IPADataSerializer, Error) << "Failed to seraspberrypi/libcamera / src/libcamera/ipa_data_serializer.cpp / IPADataSerializer<ControlList>::deserialize / L359-L398
ffer); /* It's fine if map is empty. */ if (buffer.overflow()) { LOG(IPADataSerializer, Error) << "Failed traspberrypi/libcamera / src/libcamera/ipa_data_serializer.cpp / IPADataSerializer<ControlInfoMap>::serialize / L435-L458
= cs->serialize(map, buffer); if (ret < 0 || buffer.overflow()) { LOG(IPADataSerializer, Error) << "Failed to serraspberrypi/libcamera / src/libcamera/ipa_module.cpp / IPAModule::loadIPAModuleInfo / L268-L331
) { LOG(IPAModule, Error) << "IPA module API version mismatch"; return -EINVAL; } /* * Validate the IPA modulraspberrypi/libcamera / src/libcamera/pipeline/imx8-isi/imx8-isi.cpp / ISICameraConfiguration::validate / L494-L607
* prefer operating the sensor at full resolution to prioritize * image quality in exchange of a usually slower fram
raspberrypi/libcamera / src/libcamera/pipeline/ipu3/ipu3.cpp / PipelineHandlerIPU3::configure / L480-L634
able links * would be 'stop()', but the Camera class state machine allows * start()<->stop() sequences without any conf
raspberrypi/libcamera / src/libcamera/pipeline/ipu3/ipu3.cpp / PipelineHandlerIPU3::allocateBuffers / L660-L701
\todo Clarify if 'viewfinder' and 'stat' nodes have to be set up and started even if not in use. As of now, if not properly configured and enabled, the ImgU processing pipeline stalls. In order to be able to start the 'viewfinder' and 'stat' nodes, we need memory to be reserved.
raspberrypi/libcamera / src/libcamera/pipeline/ipu3/ipu3.cpp / IPU3CameraData::loadIPA / L1151-L1199
m the sensor name. If the tuning file * isn't found, fall back to the 'uncalibrated' file. */ std::string ipaTuningFi
raspberrypi/libcamera / src/libcamera/pipeline/ipu3/ipu3.cpp / IPU3CameraData::frameStart / L1385-L1415
\brief Handle the start of frame exposure signal \param[in] sequence The sequence number of frame Inspect the list of pending requests waiting for a RAW frame to be produced and apply controls for the 'next' one. Some controls need to be applied immediately, such as the TestPatternMode one. Other controls are handled …
raspberrypi/libcamera / src/libcamera/pipeline/mali-c55/mali-c55.cpp / PipelineHandlerMaliC55::prepareFrameInfo / L1513-L1536
ers_.empty()) { LOG(MaliC55, Error) << "Stats buffer underrun"; return nullptr; } if (availableParamsBuffers_.eraspberrypi/libcamera / src/libcamera/pipeline/mali-c55/mali-c55.cpp / PipelineHandlerMaliC55::registerTPGCamera / L1793-L1813
The only camera we support through direct connection to the ISP is the Mali-C55 TPG. Check we have that and warn if not.
raspberrypi/libcamera / src/libcamera/pipeline/mali-c55/mali-c55.cpp / PipelineHandlerMaliC55::registerMemoryInputCamera / L1864-L1925
me != "rzv2h ivc block") { LOG(MaliC55, Warning) << "Unsupported direct connection to " << link->source()->enraspberrypi/libcamera / src/libcamera/pipeline/rkisp1/rkisp1_path.cpp / RkISP1Path::populateFormats / L89-L129
.count(pixelFormat)) { LOG(RkISP1, Warning) << "Unsupported pixel format " << pixelFormat; continue; } strraspberrypi/libcamera / src/libcamera/pipeline/rpi/common/pipeline_base.cpp / RPiCameraConfiguration::validate / L164-L308
Invalid sensor configuration: " << "bitDepth/size mismatch"; return Invalid; } } /* Start with some initi
raspberrypi/libcamera / src/libcamera/pipeline/rpi/common/pipeline_base.cpp / PipelineHandlerBase::start / L656-L725
data->wallClockRecovery_.addSample();
raspberrypi/libcamera / src/libcamera/pipeline/rpi/common/pipeline_base.cpp / CameraData::loadPipelineConfiguration / L1120-L1172
ag"; config_.cameraTimeoutValue = phConfig["camera_timeout_value_ms"].get<unsigned int>(config_.cameraTimeoutValu
raspberrypi/libcamera / src/libcamera/pipeline/rpi/common/pipeline_base.cpp / CameraData::handleControlLists / L1561-L1598
List ¶mControls) { /* * The delayContext is the sequence number after it's gone through the various * pipeline delayraspberrypi/libcamera / src/libcamera/pipeline/rpi/common/pipeline_base.h / libcamera / L39-L310
void cameraTimeout();
raspberrypi/libcamera / src/libcamera/pipeline/rpi/common/pipeline_base.h / RPi / L41-L308
void cameraTimeout();
raspberrypi/libcamera / src/libcamera/pipeline/rpi/common/pipeline_base.h / CameraData / L47-L200
void cameraTimeout();
raspberrypi/libcamera / src/libcamera/pipeline/rpi/common/pipeline_base.h / Config / L166-L177
* Override the camera timeout value calculated by the IPA based
raspberrypi/libcamera / src/libcamera/pipeline/rpi/pisp/pisp.cpp / PiSPCameraData / L717-L850
void setCameraTimeout(uint32_t maxFrameLengthMs);
raspberrypi/libcamera / src/libcamera/pipeline/rpi/pisp/pisp.cpp / PipelineHandlerPiSP::match / L878-L964
) || !variant.NumBackEnds()) { LOG(RPI, Error) << "Unsupported PiSP variant"; break; } std::unique_ptr<RPiraspberrypi/libcamera / src/libcamera/pipeline/rpi/pisp/pisp.cpp / PiSPCameraData::cfeBufferDequeue / L1705-L1781
wallClockRecovery_.addSample();
raspberrypi/libcamera / src/libcamera/pipeline/rpi/pisp/pisp.cpp / PiSPCameraData::setCameraTimeout / L1860-L1872
void PiSPCameraData::setCameraTimeout(uint32_t maxFrameLengthMs)
raspberrypi/libcamera / src/libcamera/pipeline/rpi/vc4/vc4.cpp / Vc4CameraData / L38-L149
void setCameraTimeout(uint32_t maxFrameLengthMs);
raspberrypi/libcamera / src/libcamera/pipeline/rpi/vc4/vc4.cpp / PipelineHandlerVc4::platformRegister / L348-L450
am_[Unicam::Embedded].dev()) { LOG(RPI, Warning) << "Mismatch between Unicam and CamHelper for embedded data usage!"raspberrypi/libcamera / src/libcamera/pipeline/rpi/vc4/vc4.cpp / Vc4CameraData::platformValidate / L452-L538
; /* Default to CSI2 packing if the user request is unsupported. */ if (rawBayer.packing != BayerFormat::Packing::CS
raspberrypi/libcamera / src/libcamera/pipeline/rpi/vc4/vc4.cpp / Vc4CameraData::unicamBufferDequeue / L795-L841
wallClockRecovery_.addSample();
raspberrypi/libcamera / src/libcamera/pipeline/rpi/vc4/vc4.cpp / Vc4CameraData::setCameraTimeout / L951-L963
void Vc4CameraData::setCameraTimeout(uint32_t maxFrameLengthMs)
raspberrypi/libcamera / src/libcamera/pipeline/rpi/vc4/vc4.cpp / Vc4CameraData::tryRunPipeline / L965-L1015
params.delayContext = bayerFrame.delayContext;
raspberrypi/libcamera / src/libcamera/pipeline/simple/simple.cpp / SimpleCameraData::tryPipeline / L693-L759
Generate a list of supported pipeline configurations for a sensor media bus code and size. First propagate the media bus code and size through the pipeline from the camera sensor to the video node. Then, query the video node for all supported pixel formats compatible with the media bus code. For each pixel format, sto…
raspberrypi/libcamera / src/libcamera/pipeline/vimc/vimc.cpp / PipelineHandlerVimc::generateConfiguration / L203-L250
rmats::BGR888) { LOG(VIMC, Info) << "Skipping unsupported pixel format " << pixelformat.first; continueraspberrypi/libcamera / src/libcamera/pipeline_handler.cpp / PipelineHandler::stop / L367-L402
\brief Stop capturing from all running streams and cancel pending requests \param[in] camera The camera to stop This function stops capturing and processing requests immediately. All pending requests are cancelled and complete immediately in an error state. \context This function is called from the CameraManager threa…
raspberrypi/libcamera / src/libcamera/sensor/camera_sensor_legacy.cpp / CameraSensorLegacy::validateSensorDriver / L328-L482
th differing alter bayer order properties" << " are unsupported. Disabling flipping."; } else { supportHFlips_ = hfraspberrypi/libcamera / src/libcamera/sensor/camera_sensor_legacy.cpp / CameraSensorLegacy::initProperties / L572-L668
on) { default: LOG(CameraSensor, Warning) << "Unsupported camera location " << v4l2Orientation << ", settingraspberrypi/libcamera / src/libcamera/sensor/camera_sensor_legacy.cpp / CameraSensorLegacy::applyTestPatternMode / L1031-L1057
tPatternModes_.end()) { LOG(CameraSensor, Error) << "Unsupported test pattern mode " << mode; return -EINVAL;raspberrypi/libcamera / src/libcamera/sensor/camera_sensor_raw.cpp / CameraSensorRaw::initProperties / L579-L677
on) { default: LOG(CameraSensor, Warning) << "Unsupported camera location " << v4l2Orientation << ", settingraspberrypi/libcamera / src/libcamera/sensor/camera_sensor_raw.cpp / CameraSensorRaw::applyTestPatternMode / L1142-L1168
tPatternModes_.end()) { LOG(CameraSensor, Error) << "Unsupported test pattern mode " << mode; return -EINVAL;raspberrypi/libcamera / src/libcamera/software_isp/debayer_cpu.cpp / DebayerCpu::getInputConfig / L432-L476
Setup the Debayer object according to the passed in parameters. Return 0 on success, a negative errno value on failure (unsupported parameters).
raspberrypi/libcamera / src/libcamera/software_isp/debayer_cpu.cpp / DebayerCpu::setDebayerFunctions / L512-L623
o invalidFmt = []() -> int { LOG(Debayer, Error) << "Unsupported input output format combination"; return -EINVAL; }raspberrypi/libcamera / src/libcamera/software_isp/debayer_cpu.cpp / DebayerCpu::configure / L625-L711
tatsPatternSize.height) { LOG(Debayer, Error) << "mismatching stats and debayer pattern sizes for " << inputCfg.praspberrypi/libcamera / src/libcamera/software_isp/debayer_cpu.cpp / DebayerCpu::patternSize / L742-L750
Get width and height at which the bayer-pattern repeats. Return pattern-size or an empty Size for an unsupported inputFormat.
raspberrypi/libcamera / src/libcamera/software_isp/debayer_cpu.cpp / DebayerCpu::sizes / L1124-L1151
.height == 2) borderHeight = 0; /* * For debayer interpolation a border is kept around the entire image * and the m
raspberrypi/libcamera / src/libcamera/software_isp/debayer_egl.cpp / DebayerEGL::getInputConfig / L54-L98
<< "Unsupported input format " << inputFormat;
raspberrypi/libcamera / src/libcamera/software_isp/debayer_egl.cpp / DebayerEGL::initBayerShaders / L133-L272
P_BLUE"); break; default: LOG(Debayer, Error) << "Unsupported output format"; return -EINVAL; } /* Pixel locati
raspberrypi/libcamera / src/libcamera/software_isp/debayer_egl.cpp / DebayerEGL::configure / L274-L342
ts_pattern_size.height) { LOG(Debayer, Error) << "mismatching stats and debayer pattern sizes for " << inputCfg.praspberrypi/libcamera / src/libcamera/software_isp/debayer_egl.cpp / DebayerEGL::getCachedInputFrameBuffer / L496-L546
mode fail create/update an existing texture using the slow path */ inDmaSyncer->emplace(input->planes()[0].fd, DmaSyn
raspberrypi/libcamera / src/libcamera/software_isp/debayer_egl.cpp / DebayerEGL::sizes / L692-L719
.height == 2) borderHeight = 0; /* * For debayer interpolation a border is kept around the entire image * and the m
raspberrypi/libcamera / src/libcamera/software_isp/software_isp.cpp / SoftwareIsp::SoftwareIsp / L81-L181
\brief Constructs SoftwareIsp object \param[in] pipe The pipeline handler in use \param[in] sensor Pointer to the CameraSensor instance owned by the pipeline handler \param[out] ipaControls The IPA controls to update
raspberrypi/libcamera / src/libcamera/v4l2_device.cpp / V4L2Device::getControls / L181-L281
This function reads the value of all controls contained in \a ids, and returns their values as a ControlList. If any control in \a ids is not supported by the device, is disabled (i.e. has the V4L2_CTRL_FLAG_DISABLED flag set), or if any other error occurs during validation of the requested controls, no control is rea…
raspberrypi/libcamera / src/libcamera/v4l2_device.cpp / V4L2Device::listControls / L706-L762
\brief List and store information about all controls supported by the V4L2 device
raspberrypi/libcamera / src/libcamera/v4l2_device.cpp / V4L2Device::updateControlInfo / L779-L799
\brief Update the information for all device controls The V4L2Device class caches information about all controls supported by the device and exposes it through the controls() and controlInfo() functions. Control information may change at runtime, for instance when formats on a subdev are modified. When this occurs, th…
raspberrypi/libcamera / src/libcamera/v4l2_videodevice.cpp / V4L2VideoDevice::V4L2VideoDevice / L536-L546
\brief Construct a V4L2VideoDevice \param[in] deviceNode The file-system path to the video device node
raspberrypi/libcamera / src/libcamera/v4l2_videodevice.cpp / V4L2VideoDevice::open / L660-L730
\param[in] handle The file descriptor to set \param[in] type The device type to operate on This function opens a video device from the existing file descriptor \a handle. Like open(), this function queries the capabilities of the device, but handles it according to the given device \a type instead of determining its t…
raspberrypi/libcamera / src/libcamera/v4l2_videodevice.cpp / V4L2VideoDevice::queueBuffer / L1648-L1803
device. For output video devices the \a buffer shall contain valid data and will be processed by the device. Once the device has finished processing the buffer, it will be available for dequeue. The best available V4L2 buffer is picked for \a buffer using the V4L2 buffer cache. Note that queueBuffer() will fail if the…
raspberrypi/libcamera / src/libcamera/v4l2_videodevice.cpp / V4L2VideoDevice::dequeueBuffer / L1832-L1979
\brief Dequeue the next available buffer from the video device This function dequeues the next available buffer from the device. If no buffer is available to be dequeued it will return nullptr immediately. \return A pointer to the dequeued buffer on success, or nullptr otherwise
raspberrypi/libcamera / src/libcamera/v4l2_videodevice.cpp / V4L2VideoDevice::streamOn / L1990-L2008
\brief Start the video stream \return 0 on success or a negative error code otherwise
raspberrypi/libcamera / src/libcamera/v4l2_videodevice.cpp / V4L2VideoDevice::streamOff / L2023-L2056
\brief Stop the video stream Buffers that are still queued when the video stream is stopped are immediately dequeued with their status set to FrameMetadata::FrameCancelled, and the bufferReady signal is emitted for them. The order in which those buffers are dequeued is not specified. This will be a no-op if the stream…
raspberrypi/libcamera / src/libcamera/v4l2_videodevice.cpp / V4L2VideoDevice::watchdogExpired / L2094-L2100
\brief Slot to handle an expired dequeue timer When this slot is called, the time between successive dequeue events is over the required timeout. Emit the \ref V4L2VideoDevice::dequeueTimeout signal.
raspberrypi/libcamera / src/v4l2/v4l2_camera_proxy.cpp / V4L2CameraProxy::tryFormat / L344-L372
(ret < 0) { LOG(V4L2Compat, Error) << "Failed to negotiate a valid format: " << format; return -EINVAL; }raspberrypi/libcamera / src/v4l2/v4l2_camera_proxy.cpp / V4L2CameraProxy::ioctl / L857-L959
r the ioctl request, which would sign-extend to * an incorrect value for unsigned longs on 64 bit architectures by
raspberrypi/libcamera / include/libcamera/ipa/core.mojom / 6ebe4fdbe8
libcamera: ipa: core: Use native coordinates for IPACameraSensorInfo::analogCrop Now that the camera properties use the physical pixel array as reference coordinate system, do the same with IPACameraSensorInfo::analogCrop. Replace IPACameraSensorInfo::activeAreaSize with IPACameraSensorInfo::activeArea to be able to k…
raspberrypi/libcamera / src/android/camera_capabilities.cpp / fd88c9fa80
libcamera: Clarify meaning of PixelArraySize and other rectangles Current documented behavior for PixelArraySize is to report the readable array size of the sensor data. If the readable array is offset relative to the physical sensor array, all related rectangles (ScalerCrop, PixelArrayActiveAreas) shall be reported r…
raspberrypi/libcamera / src/libcamera/property_ids_core.yaml / 61b60d215b
libcamera: property_ids_core: Drop PixelArrayOpticalBlackRectangles The PixelArrayOpticalBlackRectangles is neither used nor populated anywhere in libcamera. The definition of it is difficult (due to the handing of invalid pixels and sensors specifying different OB areas for different binning modes) and will therefore break on the first real world use-case. Drop it for now. This can be revisited …
raspberrypi/libcamera / src/libcamera/software_isp/debayer_cpu.cpp / 4f21700fb0
debayer: Further demote 'Unsupported input format' log On some platforms such as the PinePhone these logs clutter the output of tools and the journal a lot. Let's silence them for normal usage. Also add error logs for the cases where hitting the path would actually be errors. Signed-off-by: Robert Mader <robert.mader@…
raspberrypi/libcamera / src/ipa/ipu3/data/uncalibrated.yaml / 466a55f99b
ipa: ipu3: Add Ccm to uncalibrated.yaml Add the Ccm algorithm to uncalibrated.yaml. Even without calibrated values we should still expose the controls to the application. Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Daniel Scally <d…
raspberrypi/libcamera / src/ipa/libipa/gamma.cpp / f7edcd93db
ipa: libipa: Add GammaAlgorithm class Add a base GammaAlgorithm class that can be used by IPA specific gamma algorithms to reduce the amount of work that they need to implement. Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Daniel…
raspberrypi/libcamera / src/libcamera/sensor/camera_sensor_properties.cpp / a6ef49cd8c
libcamera: sensor: Add Mira220 sensor properties Add sensor properties for the AMS-OSRAM Mira220 camera sensor. The sensor has a 1 frame delay for exposure. The vblank delay is not characterized in the datasheet. Hblank and analogue gain are fixed and not programmable, so fix their delays to 1. Signed-off-by: Jacopo M…
raspberrypi/libcamera / include/libcamera/internal/camera_sensor.h / 0f20beafac
libcamera: camera_sensor: Fix imageStream() for CameraSensorLegacy class The CameraSensor::imageStream() function has a default implementation in the base class that returns {0, 0} as {pad, stream}, assuming that the image pad is located on the pad index 0. This assumption is correct most of the time, but not in some …raspberrypi/libcamera / src/ipa/libipa/agc_mean_luminance.cpp / a7bfb81608
ipa: libipa: agc_mean_luminance: Remove persistent params Remove `set{Lux,ExposureCompensation}()` and pass them via `Params`. Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>raspberrypi/libcamera / src/ipa/libipa/agc_mean_luminance.cpp / 09b596a8b6
ipa: libipa: agc_mean_luminance: calculateNewEv(): Return y target The rkisp1 agc algorithms needs to save the current y target for the wdr algorithm. Instead of having to recalculate it, just return it as part of the result set. Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> Reviewed-by: Jacopo Mondi…
raspberrypi/libcamera / src/libcamera/pipeline/simple/simple.cpp / 35c137c2f3
libcamera: pipeline: simple: Delay stream count for software ISP When using the software ISP, the simple pipeline handler exposes 2 streams. However, the configuration file can disable the software ISP, and the current code sets the stream count before reading the configuration file, resulting in an incorrect number o…
raspberrypi/libcamera / Documentation/sensor_driver_requirements.rst / f99576198b
sensor: camera_sensor_legacy/raw: Support separate H/V flips CameraSensorLegacy and CameraSensorRaw support flipping on the sensor side only if the driver supports both, V4L2_CID_HFLIP and V4L2_CID_VFLIP. In cases where a driver only supports a single flip mode, flipping support gets disabled completely. This is unexp…
raspberrypi/libpisp / src/gst/usage.md / Colorimetry / L31
ching the input. Some webcams and V4L2 sources report incorrect colorimetry (e.g. limited-range when the sensor actual
raspberrypi/libpisp / src/gst/gstpispconvert.cpp / parse_input_caps / L521-L581
Parse input caps from the sink pad.
raspberrypi/libpisp / src/helpers/v4l2_device.hpp / V4l2Device / L31-L114
const Buffer &buffer); int DequeueBuffer(unsigned int timeout_ms = 500); void SetFormat(const pisp_image_format_co
raspberrypi/libpisp / src/helpers/v4l2_device.cpp / V4l2Device::DequeueBuffer / L241-L275
ueue buffer int V4l2Device::DequeueBuffer(unsigned int timeout_ms) { short int poll_event = isOutput() ? POLLOUT : Praspberrypi/libpisp / src/helpers/v4l2_device.cpp / V4l2Device::SetFormat / L277-L337
specified by V4L2, we use an opaque buffer buffer as a workaround. // Size the dimensions down so the kernel drive doe
raspberrypi/libpisp / src/helpers/dma_heap.hpp / DmaHeap / L22-L92
loc); if (ret < 0) { PISP_LOG(warning, "dmaHeap allocation failure for " << name); return -1; } ret = ::ioctl(allraspberrypi/libpisp / src/helpers/dma_heap.hpp / alloc / L61-L88
loc); if (ret < 0) { PISP_LOG(warning, "dmaHeap allocation failure for " << name); return -1; } ret = ::ioctl(allraspberrypi/libpisp / src/libpisp/backend/backend_default_config.cpp / initialise_debin / L70-L80
m_coefs) throw std::runtime_error("Debin filter size mismatch"); memcpy(debin.coeffs, coefs.data(), sizeof(debin.craspberrypi/libpisp / src/libpisp/backend/backend_default_config.cpp / read_resample / L136-L174
num_coefs) throw std::runtime_error("read_resample: Incorrect number of filter coefficients"); memcpy(r.coef, coeraspberrypi/libpisp / src/libpisp/backend/backend_default_config.cpp / read_ycbcr / L232-L265
size() != 9) throw std::runtime_error("read_ycbcr: Incorrect number of matrix coefficients"); memcpy(ccm.coeffs,raspberrypi/libpisp / src/libpisp/backend/tiling/context_stage.cpp / ContextStage::PushCropDown / L76-L99
s should pop out. PISP_LOG(warning, "Stage receiving misaligned input - cropping will be required"); output_interval
raspberrypi/libpisp / src/helpers/media_device.cpp / ea5470ce06
helpers: Fix incorrect header in media_device.cpp Swap ostream header to sstream header to fix compilation error. Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
raspberrypi/libpisp / src/libpisp/backend/backend_prepare.cpp / d23a3c38e8
backend: Don't assert on odd-width output for interleaved 422 (UYVY) This is largely a hack to support scaling by a factor of exactly 2; but nothing bad seems to happen when it is allowed (given we have a 2-pix-per-cycle ISP it's no more objectionable than odd-width 444). Signed-off-by: Nick Hollinghurst <nick.holling…
raspberrypi/libpisp / PR #60
helpers: Fix incorrect header in media_device.cpp Swap ostream header to sstr
raspberrypi/libpisp / PR #6
llow LSC and CAC grid scales to be specified, but this hack goes further by excluding them from tiling calculation
raspberrypi/libpisp / v1.4.0
github.com/raspberrypi/libpisp/pull/58 * helpers: Fix incorrect header in media_device.cpp by @naushir in https://gith
raspberrypi/libpisp / src/helpers/backend_device.cpp / 51013c37b7
helpers: Use opaque buffers where possible In some situations, there is no direct mapping of a pisp image format to a V4L2 pixelformat. In such cases, use a generic/opaque buffer format (which happens to be a YUV444 multiplanar format), appropriately sized to fit the image contents. Signed-off-by: Naushir Patuck <naus…
raspberrypi/libpisp / src/examples/convert.cpp / 69d2084baa
examples: convert: Add support for RGBX output from 2712C1 By doubling the width, changing the output format to "UYVY" and applying a matrix to swap the first two colour components, we can output RGBX. The gotcha is that when downscaling, this can result in an oversharp/aliasy image. No support for RGBX input (though …
raspberrypi/libpisp / src/libpisp/backend/backend.hpp / 9b5349c61a
backend: Remove use of std::vector from the default config Switch to using std::array types for the default config parameters read from the JSON config file. This allows the BackEnd class to be standard layout compliant. Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
이 사이트의 모든 후보는 공개 Repository에서 자동으로 수집한 증거에 근거합니다. Novelty Confidence는 추가 조사의 우선순위를 나타내는 값이며, 특허 신규성 판단이 아닙니다. UNKNOWN, LOW_CONFIDENCE, NEEDS_VERIFICATION 표시는 해당 항목을 뒷받침하는 증거가 부족하다는 뜻입니다.