小编Her*_*hal的帖子

使用由Camera预览填充的SurfaceTexture作为Jelly Bean中的Renderscript输入分配

在Jelly Bean中,是否可以使用由相机预览填充的SurfaceTexture创建Renderscript分配?我正在Android源代码树中构建我的应用程序,所以我可以使用@hide API,例如Allocation.setSurfaceTexture().但是我想避免使用RS Graphics弃用的API.这里的类似问题没有得到完全回答,也没有特定于JB的问题.

尝试以下代码时出现以下问题:

  • 进入Renderscript的数据始终为零
  • 对于重复调用的onFrameAvailable回调,我必须updateTexImage(),因为当我调用Allocation.ioReceive()时,它在第一次之后不再被回调,并且logcat中存在"无效的EGLDisplay".然而我认为ioReceive()是要走的路 - 它内部也是updateTexImage().
  • 支持的分配类型包括RGBA8888但不包括NV21(这是相机预览格式),RS代码如何能够以这种方式格式化数据?

(我知道我正在使用的设备确实支持所请求的VGA分辨率).

public class SampleRSCPCActivity extends Activity implements SurfaceTexture.OnFrameAvailableListener {
final static int DO_KERNEL = 0;
private static final String TAG="SAMPLERSCP";
private static Camera mCamera;
private Camera.Parameters mParams;
private int mFrameWidth, mFrameHeight;
private static SurfaceTexture mST;
private RenderScript mRS;
private Allocation mInAllocation;
private Allocation mOutAllocation;
private ScriptC_mono mScript;

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    Log.i(TAG, "onCreate()");
    createGUI();
    createCamera();
    createRSEnvironment();
}

public void onPause() {
    Log.i(TAG, "onPause");
    mCamera.stopPreview();
    mCamera.release();
    mCamera …
Run Code Online (Sandbox Code Playgroud)

android renderscript android-camera android-4.2-jelly-bean

7
推荐指数
1
解决办法
3774
查看次数