当前位置: 首页 > news >正文

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】

上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。

        通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异,日积月累这样将能快速提升分析日志的能力。

        这一篇我们开始讲 相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

目录

一、背景

二、:Google Camera 高通Camx HAL3日志关键字

三、:openCamera打开相机日志关键字

四、:ConfigureStreams配流日志关键字

五、:Flush切换日志关键字

六、:feature2流程日志关键字

七、:request日志关键字

八、:result日志关键字

九、:拍照日志关键字

十、:Zoom日志关键字

十一、:录像日志关键字


一、背景

1:【效率决定成长空间】无论什么开发,分析日志是解决问题的法宝。且是最有效最常用的调试工具,特别是在Android或Linux领域下,log分析是开发必备技能,然而log分析效率参差不齐,你分析一份日志要一天,别人分析只需要一个小时,作何感想?别人一年的学习成果可能是你几年才能学会。

2:【巨量日志降低了开发效率】接触过Android日志,就清楚日志量非常大。几十个进程几百个线程同时并行打印日志。而Camera领域日志量极大,因为预览一般是每秒30帧的日志量,录屏一般是每秒60帧的日志量,少则几万行日志,多则几十万行日志,更多则多个日志总量几百万行日志。

3:【日志梯度分级来提效】开发追求效率,如何快速有效挖掘出问题,并如何解决问题变得尤为重要。此专题将以梯度分级日志来分析日志,让日志流程变得简单化,提高解决问题的效率。

4:【举一反三】当前以高通CamX架构为例讲解Camera日志,方式通用,其他领域模块均可效仿借鉴。

5:【开发思维决定成长高度】当前讲述的是Camera领域log分析梯度分级讲解,讲究的是一种分析技巧,分析思维,一种感悟。技术路线的提升空间,需要更多开发技巧和开发学习能力去提升。技术大拿分析问题,可以从日志快速定位问题并解决问题,有充分的时间去学习更多知识,成长速度极快。同一起跑线,学习能力,开发效率等等都决定了程序员的成长提升空间。记得我毕业三年,同学之间的差距无限拉大,一些人还在几千块薪水,你已经是他的四五倍了,人与人的差距就是短短几年就拉开了。

二、:Google Camera 高通Camx HAL3日志关键字

相机HAL3接口V1关键字:" HalOp: "

相机HAL3接口V2关键字:" camxhal3.cpp|HalOp: "

PS:关键字中的 "|" 用于区分关键字与关键字之间间隔,在notepad++中使用多个关键字搜索,也是使用"|" 来区分多个关键字,可以直接复制到notepad++去搜索多个关键字。

三、:openCamera打开相机日志关键字

打开相机V1关键字:

"CameraDevice::open|OPEN_CAMERA|CLOSE_CAMERA|closeCameraDevice|openCamera start|open camera3 device|onOpenLocked|session::close|Begin OPEN|End OPEN|Begin CLOSE|End CLOSE"

打开相机V2关键字

"onCameraOpened|disconnect|camera.*close|close.*camera|camera.*open|open.*camera|open\(\) Open|close\(\) close|openCamera|closeCamera|session::open|onOpenLocked|probe"

打开相机V3关键字:

"action=ACTION_UP|, nameStr=|power key come|back button event|onbackkeypress|onhomekeypress|homebutton"

四、:ConfigureStreams配流日志关键字

配置流V1关键字:

"Number of streams|FINAL stream|Begin CONFIG|End CONFIG"

配置流V2关键字:

dumpSessionConfig|::configureStreams|onConfigure|chi_initialize_override_session

|stream size|convertStreamConfiguration"

配置流V3关键字:

"configureSession|Creating session|Initialize\(\) Session|CreateSession|CreateDescriptor\(\)|configure_streams|SelectFeatures|Clone usecase successfully|initialized successfully|created successfully"

配置流V4关键字:

"configuredSurfaceType|: CSLOpen\(|,isMultiCamera:|m_pChiFeatureGraphManager=|total resource used so far|classifyTargetstream|GetMatchingUsecase|GetXMLUsecaseByName|SelectFeatures|CreatePipeline|CreatePipelineDescriptor|CreateNodes|PipelineCreated|CreateRTSessions|PrepareStreamOn\(\)|setOperationMode|checkStream|evaluateConfiguration"

配置流V5关键字:

"evaluateCaptureConfiguration|createCaptureSession"

五、:Flush切换日志关键字

Flush切换V1关键字

"beginFlush|endFlush|HAL3Flush"

Flush切换V2关键字

"flush:|onFlushLocked|Flush\(\)|::flush"

六、:feature2流程日志关键字

feature2流程V1关键字:

"created with features|featureName =|SelectFeatureGraphforRequestFromTable|SearchFeatureGraphinTable|GetPrunedFeatureGraph|GetGraphDescriptorTables|SelectFeaturesForGraph|pSelectFGD FeatureName has:|GetFeatureGraphMapforConfig cloned getGraphName:|MergeFeatureGraphs pFeatureName Name : "

feature2流程V2关键字:

"GetAllFeatureGraphDescriptors|chifeature2wrapper.cpp|ALGO_FILTER |CreateFeatureInstance|DoFeatureCreate"

feature2流程V3关键字:

CreateSession|chimcxmflpolicy.cpp|chxtransitionmap.h|chimcxstaticpolicy.cpp|FillMCCResult|is discard!pruneRule|is saved.pruneRule|BuildInternalLinkPruneRule|BuildSinkLinkPruneRule|GetPruneRulesAndIdentifier|OnProcessRequest|: FeatureRequest State \[|PruneInternalGraphLinks|chxusecasemc.cpp:.*? ExecuteCaptureRequest\(\)|filterProcess|ALGO_FILTER|compare_entry_tags|PrepareFeatureData|DoStreamNegotiation|isFusion|BuildCameraIdSet"

七、:request日志关键字

request起始结束V1关键字:

"processCaptureRequest|process_capture_request\(\) frame_number|Saving buffer for CHI Frame|FRAME FPS|submitRequest.*requestNo|1st request"

request起始结束V2关键字:

"hardwareOps_request|Original framework framenumber|SAVING frame|NotifyNodeRequestIdDone|SetupRequestOutputPortFence\(\) CreatePrivateFence|for framework framenumber|begin to abortCaptures|SetFisrtFrame] isFirstFrame:"

request关键流程V3关键字:

"Finalized metadata result for Sequence ID|SetRequestToFeatureMapping|process_capture_request\(\)|ExecuteCaptureRequest\(\)|SelectFeatureToExecuteCaptureRequest\(\)|ExecuteProcessRequest\(\)|StreamOn\(\)|SubmitRequest\(\)|DispatchReadyNodes|ProcessRequestIdDone|CSLStreamOn|FinalizePipeline|SinkPortFenceSignaled|CbDispatchJob|ActivatePipeline|OnStreamOn|AddDeferredNode|ParseResultMetadata"

request关键流程V4关键字:

UpdateOrRemoveDependency|ThreadJobCallback|createOneRequest|submitOneRequest|magic num|finalize done!|status is now PipelineStatus::|Stream on Done =|FIRST_FRAME_CALLBACK|Session Request|ProcessRequest\(\) chiFrameNum:|GenerateRealtimeRequest\(\) frame:|request queue and launched job|DeferredWorkerCore|AddDependencyEntry|QueryVendorTagLocation|GetImageBuffer|AddImageReference|PopulateHALToChiStreamBuffer|GetOutputBufferFromRDIQueue|GetImageBufferInfo|OpenRequest|PopulateFrameworkRequestBuffer|OverrideProcessRequest|DeferredWorkerWrapper"

request帧number关键字:

"requestNumber|req_no|Frame:|Frame=|CHI Frame|resultFrameIndexChi|FrameNum|frame_number|frameNumber|frame id|frame number|SOF frame|first frame|AppRequest:|requestNo|RequestNo|requestFrame|frameNo:|ReqId:|RequestIdDone|RequestId|row name|Rxed Req Id|add req|dev req|request to|del_req_id|schedule_request|process_req|SOF Req|active request|move request|req_id|sched_req|slot_for_req|Request Id|add_req|Applied req|, req:|req:|Open req|sync_id:|resultID"

feature2 request关键字:

"requestState|FeatureRequest State|executing base request flow|set dependency on port|created for numrequests|state from|successful!!|sink links"

查看是否有出帧关键字:

"Notify SOF|SOF time stamp|__cam_isp_ctx_send_sof_timestamp|CSLMessageHandler|__cam_isp_ctx_sof_in_activated_state|start device success ctx"

八、:result日志关键字

result启动结束V1关键字:

"processCaptureResult|process_capture_result|onWarpStreamBaseCB|sof_cnt|Done Req|updateResult.*requestNo|ISPDeviceMgr.cpp|onRequestFinish|onCompleted|enqueResult|Returning framework result Frame|FRAME FPS|first frame"

result起始结束V2关键字:

"AidlCallback|onImgStreamBaseCB|FindFeatureToProcessResult|Pending result CHI frame|Processing Result|fence handler FOR|ProcessAndReturnFinishedResults\(\)|Inject result added|has returned all results"

result关键流程V3关键字:

"onCaptureCompleted|Fmt: * Width: |HandleMetadataResultReturn|convertCallbackParcelToHidl|InjectResult|ProcessResults|DispatchResults|ReturnFrameworkResult|ProcessFenceCallback|ProcessPartialMetadataDone|ProcessMetadataDone|ProcessResult|notify\(\)|OfflineSnapshotResult|OfflineFusionSnapshotResult"

result关键流程V4关键字:

"reporting I/O config|CSLFenceCallback|NotifyCSLMessage|GetResultFrameInfo|UpdateAppPartialResultMetadataFromDriver|NotifyAndReleaseFence|ReleaseBufferManagerCompositeImageReference|ReturnFrameworkMessage"

result帧number关键字:

"frameNo:|requestNo|SOF: idx|frame_timeout|Frame:|Frame=|frame_number|FrameNum|framenumber|resultFrame| Frame |frameID|frame number|chiframe|FrameIdx|result Frame|for Frame |ResultFrame|added request|snapshot frame|snapshot output frame|frameId:|first frame|first frame arr|first frame draw|frameIndex|SkipDrawFrame:"

feature2 result关键字:

"Release external|FeatureRequest State|All ports are done|moving URO to Complete|requests complete|result from request|processResultMetadataMessage|Resolving an input|BuffersRecieved:|OutputNotified |Release Ack For port|OutputNotified For port|Input Dependency|jobFrameNum "

九、:拍照日志关键字

拍照极简V1关键字:

"addImage, path|JpegArrived|completeCapture|onPictureSaved|Picture Save End| takePicture,|onShutterButtonClick|Hal_captureFail|LostPicture|capture, ID:|jpeg size|processJpeg|onCaptureShutter|picture count|request pictures|recording_cap_button|reprocessImage|isReadyToCapture|Respond Start, count|onCameraShutterButtonClick|checkReadyToCapture|burstCapture, pictureNum:|onImageAvailable|addCaptureImageToAPS|onCaptureStarted|countAddFrame|snapshot frame|newImage|TAKE YUV|onImageReceived|onPreviewCaptured|MediaProvider: Deleted|onCaptureFailed"

拍照流程V2关键字:

"ISPDeviceMgr.cpp|capture, unable to capture|pictureArrive, width:|capture intent:|hasSnapshot 1|onClickThumbnail|onFinishAddFrame|updateImage, path|updateStoragePlace, after sStoragePlace: off, sStorageOverrideState:|addframebuffer|Returning framework result Frame|.jpg|OCAM_MainShutterButton|mRequestNum|OCAM_Storage|updateImageForGallery|finishaddframe|picture save|ProcessedPictureSavingTask: writeData\(\)|saveImage|takeScreenshot|takePicture|ocam_ThumbnailUI|ocam_ThumbnailProcessor|onCameraPictureBuilt|connect call|CameraTest Shutter Respond Start|OneCameraImpl: burstCapture|timeStampMatched: true|blurlessProcess|pfProcess|image_path|savePicture|Camera View Picture End|Snapshot in|snapshot stream|snapshotstream|snapshot request|YUV SNAPSHOT|APSClient: addFrameBuff|onJpegReceived|showSuperTextResultView start|showSuperTextResultView, bitmapWidth|STELLA.cpp|clickShutterTime|processImages, processParameters:|procflag|process_time|needCaptureThumb| TAKE SNAPSHOT |MFSRFrameCount =|Got mc yuv buffer back|onTimeoutWaitingForProcessedPicture|OPPhotoSavingTask: writeData\(\) - File: /storage|onMediaSavingCompleted\(\) - Waiting for processed picture|Snapshot =|SaveSnapshot|jpeg stream"

拍照流程V3关键字:

"pictureResult|ProcessPicture|onCapture|Capture\(\)|onPreviewCapture.*?\(\)|onCapture.*?\(\)|-Picture-|CameraPreviewState|CaptureState|ShutterState|CaptureModeSwitchState|PhotoResolutionToSwitch|completePreparingCapturing|ExposureState|enqueueCapturedPostviewFrame"

拍照流程V3关键字:

"addImage,| timestamp:"

十、:Zoom日志关键字

Zoom V1关键字:

"onzoomchange,"

十一、:录像日志关键字

录像极简V1关键字:

"addImage, path|MediaWriter|onDIPStreamBaseCB|prepareIORequest|.mp4|startRecordstopRecord|settingVideo|startVideo|captureWhileVideo|videoFrameWidth|CaptureRate|VideoSurface|VideoRecording|videoSnapshot|onRecordStageChanged|image_uri|\.mp4|hasVideo 1"

录像流程V2关键字:

"modeName:|DeepThinker:|OCAM_Video|MediaScanner|OCAM_VideoBlurPresenter|AtlasVideo|OCAM_VideoSizePresenter|VideoBoost|OCAM_CommonVideoMode|OCAM_VideoRecorder|MPEG4Writer|CCodec  :|Codec2Client|MediaRecorderJNI|OCAM_CameraMediaCodec|MediaCodec|OCAM_RecordProcessor|OCAM_GalleryPreCodeClient|CCodec|CCodecBuffers|CCodecConfig|OCAM_VideoFusionTexturePreview|OCAM_VideoWatermarkTexturePreview|OCAM_VideoSaver|OCAM_StickerMediator|setVideo|OCAM_VideoMode|videoSizeType|VideoCaptureControllerImpl|MediaRecorder|VideoMode|Recording|startVideo|createVideoSurface|setVideoSurfaceState|onVideoShutterButtonClick|afterStartingVideoRecord|mVideoFilename|fps range|start video"

【关注我,后续持续新增专题博文,谢谢!!!】

下一篇讲解:

相关文章:

  • 基于安卓的线上考试APP源码数据库文档
  • 分享今天做的力扣SQL题
  • vue项目使用svg图标
  • python生成器
  • Linux --进程控制
  • NVM常用命令记录
  • opencv学习笔记2:卷积、均值滤波、中值滤波
  • 【数据结构与算法】从广度优先搜索到Dijkstra算法解决单源最短路问题
  • Linux权限探秘:驾驭权限模型,筑牢系统安全
  • 主流嵌入式Shell工具性能对比
  • 视频音频去掉开头结尾 视频去掉前n秒后n秒 电视剧去掉开头歌曲
  • 2025-04-22-X86 架构与 Arm 架构异同及应用
  • 【LeetCode】算法详解#6 ---除自身以外数组的乘积
  • python之可视化图形生成
  • AI短视频创富营
  • MCP(Model Context Protocol)与提示词撰写
  • 打卡第48天
  • 基于 llama-factory进行模型微调
  • android 模拟器如何进行单模块更新
  • SpringSecurity+vue通用权限系统2
  • 湖北黄石市黄石市建设材料价格信息在哪个网站查询/淮北网络推广
  • 重庆綦江网站制作公司哪家专业/佛山百度seo代理
  • 基于拍卖的拍卖网站开发/口碑营销渠道
  • 做pc端网站服务/哔哩哔哩b站在线看免费
  • 网站登录怎么退出/注册网站平台
  • 北京网站建设报价/企业查询系统