通过LOG分析可知
1.360Camera App有把Preview Size从728x480 改成854x480
01-01 00:20:50.833 146 2180 D MtkCam/ParamsManager:[setParameters] Preview Size change: 728x480/854x480 -> (854x480)
2.传递给Camera Service的Surface是Null.
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 FrameBuffer给APP
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 Tag是Camera360App打出来的。
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 Flinger去display的。
Render应该是根据Preview Size和Screen Size算出一个ratio,对Preview Buffer做resize。
但这里拿到的Screen Size是一个奇怪的值:737x480,具体的逻辑可能需要看Source Code才知道。
能断定是360Camera App问题,可能未考虑到ScreenSize为737x480 这种Case。
這是三方Camera app的問題,他可能沒有處理比較特殊的比例,
所以三方Camera App有打Error log.