CainKernel / CainCamera

CainCamera is an Android Project to learn about development of beauty camera, image and short video
2.84k stars 777 forks source link

相机原始帧数据和美颜渲染后帧数据的同步问题 #101

Closed wanliang527 closed 4 years ago

wanliang527 commented 4 years ago

请教一下,如何保证相机原始帧数据和美颜渲染后帧数据的同步? 我需要获取到原始相机帧数据,尝试改造了RenderThread.drawframe方法,如下: // 执行拍照 if (mCameraParam.isTakePicture) { synchronized (mSyncFence) { ByteBuffer buffer = mDisplaySurface.getCurrentFrame(); mCameraParam.captureCallback.onCapture(buffer, mDisplaySurface.getWidth(), mDisplaySurface.getHeight()); mCameraParam.isTakePicture = false; long start = System.currentTimeMillis(); Bitmap bitmap = new NV21ToBitmap(mContext).nv21ToBitmap(data, mCameraParam.previewWidth, mCameraParam.previewHeight); BitmapUtils.bitmapToFile(bitmap, Bitmap.CompressFormat.JPEG, "mnt/sdcard/face_temp.jpg"); } } 然而实际保存的图片数据与美颜后的图片不是同一帧

wanliang527 commented 4 years ago

我在Camera的onPreviewCallback里,将NV21的数据传递到渲染函数里,利用了拍照的逻辑来获取帧数据

wanliang527 commented 4 years ago

找到原因了,传递帧数据过程中,数据被覆盖的原因。

wanliang527 commented 4 years ago

问题已解决