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

来源:互联网 发布:淘宝我的空间 编辑:程序博客网 时间:2024/05/16 14:12

通过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.



0 0
原创粉丝点击