Android VLC - GL Init

来源:互联网 发布:java 写excel换行 编辑:程序博客网 时间:2024/05/16 12:22

 

 

 

Android VLC - GL Init

gl.c:open() => sys->gl = vlc_gl_Create (sys->window, API, "$" MODULE_VARNAME);
以 MODULE_VARNAME = gles2 为例。

opengl.c:vlc_gl_Create() =>
    gl = vlc_custom_create(parent, sizeof (*gl), "gl");
    gl->surface = wnd;
    gl->module = module_need(gl, type, name, true);
    // type = "opengl es2", name = "gles2"

modules.c:module_need() =>
    vlc_module_load(obj, cap, name, strict, generic_start, obj);
   
modules.c:vlc_module_load() =>
    module_load (obj, cand, probe, args); // probe = generic_start

modules.c:module_load() =>
    init (m->pf_activate, ap); 
    // init = probe = generic_start
    // m->pf_activate = OpenGLES2

modules.c:generic_start() =>
    vlc_object_t *obj = va_arg(ap, vlc_object_t *);
    int (*activate)(vlc_object_t *) = func;

    return activate(obj);

egl.c:OpenGLES2() =>
    static const struct gl_api api = {
        "OpenGL_ES", EGL_OPENGL_ES_API, 3, EGL_OPENGL_ES2_BIT,
        { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE },
    };
    return Open (obj, &api);
   
egl.c:open() => Init egl etc

   

 

0 0