video encoder可以直接编码gpu处理过的数据,为了减少带宽需求,video encoder最好支持gpu输出的格式:
在android4.0 system/media/mca/filterfw/jni/jni_gl_enviroment.cpp
Java_android_filterfw_core_GLEnvironment_nativeAddSurfaceFromMediaRecorder()函数中,
会从encoder那边拿到一个window // Get the ANativeWindow
sp<ANativeWindow> window = surfaceTC;
用这个window创建一个surface,eglCreateWindowSurface。
如下的configAttribs在我们的平台上最终选择的config会是什么呢?我的想法是让encoder直接支持这个格式的编码。
EGLint configAttribs[] = {
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_RED_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_BLUE_SIZE, 8,
EGL_RECORDABLE_ANDROID, EGL_TRUE,
EGL_NONE
};
在android4.0 system/media/mca/filterfw/jni/jni_gl_enviroment.cpp
Java_android_filterfw_core_GLEnvironment_nativeAddSurfaceFromMediaRecorder()函数中,
会从encoder那边拿到一个window // Get the ANativeWindow
sp<ANativeWindow> window = surfaceTC;
用这个window创建一个surface,eglCreateWindowSurface。
如下的configAttribs在我们的平台上最终选择的config会是什么呢?我的想法是让encoder直接支持这个格式的编码。
EGLint configAttribs[] = {
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_RED_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_BLUE_SIZE, 8,
EGL_RECORDABLE_ANDROID, EGL_TRUE,
EGL_NONE
};