Android LCM特殊分辨率时,360camera预览异常分析

本文分析了360CameraApp在预览尺寸调整过程中的问题,发现应用将预览尺寸从728x480更改为854x480,并且在某些情况下传递给CameraService的Surface为Null。此外,还发现应用获取了预览缓冲区并进行了处理(如加特效或调整大小),然后将其传递给SurfaceFlinger进行显示。在处理过程中遇到了一个奇怪的屏幕尺寸737x480的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过LOG分析可知

 

1.360Camera App有把Preview Size728x480 改成854x480

01-01 00:20:50.833 146 2180 D MtkCam/ParamsManager:[setParameters] Preview Size change: 728x480/854x480 -> (854x480)

 

2.传递给Camera ServiceSurfaceNull.

01-01 00:20:50.743 1896 1896 D Camera : app passedNULL surface

01-01 00:20:50.744 141 396 I SurfaceFlinger: [staticbool android::LayerScreenshot::isFrozen()] LayerScreenshot top:163 (orient:128,alpha:1)

01-01 00:20:50.744 141 396 I SurfaceFlinger: No needto freeze screen...

01-01 00:20:50.744 141 396 D hwcomposer_v1.0: [HWC]pre=2/gl=1/ui=0/mm=0

01-01 00:20:50.744 141 396 I SurfaceFlinger:[doDisplayComposition] skip composition for DisplayDevice(type:0) sincedirtyRegion is empty

01-01 00:20:50.744 141 396 D hwcomposer_v1.0: [SYNC]Disable unused layers...

01-01 00:20:50.746 141 1123 D SurfaceFlinger:requestNextVsync(575)

01-01 00:20:50.747 146 146 D CameraClient:setPreviewDisplay(0x0) (pid 1896)3.

 

3.360Camera APP有去拿Preview Buffer,一次handleMessage:16 表示 Camera App Framework传递一帧Preview FrameBufferAPP

01-01 00:20:51.800 1896 1896 I Camera : handleMessage:16

01-01 00:20:52.234 1896 1896 I Camera : handleMessage:16

01-01 00:20:52.406 1896 1896 I Camera : handleMessage:16

01-01 00:20:52.531 1896 1896 I Camera : handleMessage:16

 

4. 猜测Render TagCamera360App打出来的。

01-01 00:20:51.211 1896 1896 E Render : Previewsize:854/480

01-01 00:20:51.211 1896 1896 E Render : Screensize:737/480

 

可以得到如下结论:

360Camera APP是拿到Preview Buffer,处理后(加特效 or resize等)再交给Surface Flingerdisplay的。

Render应该是根据Preview SizeScreen Size算出一个ratio,对Preview Bufferresize

但这里拿到的Screen Size是一个奇怪的值:737x480,具体的逻辑可能需要看Source Code才知道。

能断定是360Camera App问题,可能未考虑到ScreenSize737x480 这种Case

這是三方Camera app的問題,他可能沒有處理比較特殊的比例,

所以三方Camera App有打Error log.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值