[vlc-devel] [PATCH 4/6] ios: display: delete obsolete display module

Thomas Guillem thomas at gllm.fr
Fri Jan 29 08:22:50 UTC 2021



On Thu, Jan 28, 2021, at 17:57, Alexandre Janniaux wrote:
> Now that the Core Animation layer baked EAGL implementation is available
> as an usual vlc_gl_t opengl es2 provider, and that the UI interaction
> with the UIView has been moved to a specific vout window module, we
> don't need a specific display code for OpenGL on iOS and can rely on the
> usual linux/android module.


Yeah ! More common code \o/

> ---
>  modules/video_output/ios.m | 265 -------------------------------------
>  1 file changed, 265 deletions(-)
>  delete mode 100644 modules/video_output/ios.m
> 
> diff --git a/modules/video_output/ios.m b/modules/video_output/ios.m
> deleted file mode 100644
> index cd2e760e58..0000000000
> --- a/modules/video_output/ios.m
> +++ /dev/null
> @@ -1,265 +0,0 @@
> -/*****************************************************************************
> - * ios.m: iOS OpenGL ES provider
> - 
> *****************************************************************************
> - * Copyright (C) 2001-2017 VLC authors and VideoLAN
> - *
> - * Authors: Pierre d'Herbemont <pdherbemont at videolan dot org>
> - *          Felix Paul Kühne <fkuehne at videolan dot org>
> - *          David Fuhrmann <david dot fuhrmann at googlemail dot com>
> - *          Rémi Denis-Courmont
> - *          Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
> - *          Eric Petit <titer at m0k.org>
> - *
> - * This program is free software; you can redistribute it and/or 
> modify it
> - * under the terms of the GNU Lesser General Public License as 
> published by
> - * the Free Software Foundation; either version 2.1 of the License, or
> - * (at your option) any later version.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> - * GNU Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public 
> License
> - * along with this program; if not, write to the Free Software 
> Foundation,
> - * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
> - 
> *****************************************************************************/
> -
> -/*****************************************************************************
> - * Preamble
> - 
> *****************************************************************************/
> -
> -#import <UIKit/UIKit.h>
> -#import <OpenGLES/EAGL.h>
> -#import <OpenGLES/ES2/gl.h>
> -#import <OpenGLES/ES2/glext.h>
> -#import <QuartzCore/QuartzCore.h>
> -#import <dlfcn.h>
> -
> -#ifdef HAVE_CONFIG_H
> -# import "config.h"
> -#endif
> -
> -#import <vlc_common.h>
> -#import <vlc_plugin.h>
> -#import <vlc_vout_display.h>
> -#import <vlc_opengl.h>
> -#import <vlc_dialog.h>
> -#import "opengl/filter_draw.h"
> -#import "opengl/renderer.h"
> -#import "opengl/vout_helper.h"
> -
> -/**
> - * Forward declarations
> - */
> -static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
> -                video_format_t *fmt, vlc_video_context *context);
> -static void Close(vout_display_t *vd);
> -
> -static void PictureRender(vout_display_t *, picture_t *, subpicture_t 
> *, vlc_tick_t);
> -static void PictureDisplay(vout_display_t *, picture_t *);
> -static int Control(vout_display_t*, int);
> -
> -/**
> - * Module declaration
> - */
> -vlc_module_begin ()
> -    set_shortname("iOS vout")
> -    set_description("iOS OpenGL video output")
> -    set_category(CAT_VIDEO)
> -    set_subcategory(SUBCAT_VIDEO_VOUT)
> -    set_callback_display(Open, 300)
> -
> -    add_shortcut("vout_ios2", "vout_ios")
> -    add_glopts()
> -
> -    add_opengl_submodule_renderer()
> -    add_opengl_submodule_draw()
> -vlc_module_end ()
> -
> -struct vout_display_sys_t
> -{
> -    VLCOpenGLES2VideoView *glESView;
> -
> -    vlc_gl_t *gl;
> -
> -    vout_window_t *embed;
> -};
> -
> -struct gl_sys
> -{
> -    VLCOpenGLES2VideoView *glESView;
> -    vout_display_opengl_t *vgl;
> -    GLuint renderBuffer;
> -    GLuint frameBuffer;
> -    EAGLContext *previousEaglContext;
> -};
> -
> -
> -static int SetViewpoint(vout_display_t *vd, const vlc_viewpoint_t *vp)
> -{
> -    vout_display_sys_t *sys = vd->sys;
> -    struct gl_sys *glsys = sys->gl->sys;
> -    return vout_display_opengl_SetViewpoint (glsys->vgl, vp);
> -}
> -
> -static const struct vlc_display_operations ops = {
> -    Close, PictureRender, PictureDisplay, Control, NULL, SetViewpoint,
> -};
> -
> -static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
> -                video_format_t *fmt, vlc_video_context *context)
> -{
> -    vout_window_t *wnd = cfg->window;
> -    if (wnd->type != VOUT_WINDOW_TYPE_NSOBJECT)
> -        return VLC_EGENERIC;
> -
> -    vout_display_sys_t *sys = vlc_obj_calloc(VLC_OBJECT(vd), 1, 
> sizeof(*sys));
> -
> -    if (!sys)
> -        return VLC_ENOMEM;
> -
> -    vd->sys = sys;
> -    sys->gl = NULL;
> -
> -    @autoreleasepool {
> -        /* setup the actual OpenGL ES view */
> -
> -        [VLCOpenGLES2VideoView 
> performSelectorOnMainThread:@selector(getNewView:)
> -                                                withObject:[NSArray 
> arrayWithObjects:
> -                                                           [NSValue 
> valueWithPointer:vd],
> -                                                           [NSValue 
> valueWithPointer:wnd], nil]
> -                                             waitUntilDone:YES];
> -        if (!sys->glESView) {
> -            msg_Err(vd, "Creating OpenGL ES 2 view failed");
> -            return VLC_EGENERIC;
> -        }
> -
> -        const vlc_fourcc_t *subpicture_chromas;
> -
> -        sys->embed = cfg->window;
> -        sys->gl = vlc_object_create(vd, sizeof(*sys->gl));
> -        if (!sys->gl)
> -            goto bailout;
> -
> -        struct gl_sys *glsys = sys->gl->sys =
> -            vlc_obj_malloc(VLC_OBJECT(vd), sizeof(struct gl_sys));
> -        if (unlikely(!sys->gl->sys))
> -            goto bailout;
> -        glsys->glESView = sys->glESView;
> -        glsys->vgl = NULL;
> -        glsys->renderBuffer = glsys->frameBuffer = 0;
> -
> -        /* Initialize common OpenGL video display */
> -        sys->gl->make_current = GLESMakeCurrent;
> -        sys->gl->release_current = GLESReleaseCurrent;
> -        sys->gl->swap = GLESSwap;
> -        sys->gl->get_proc_address = OurGetProcAddress;
> -        sys->gl->api_type = VLC_OPENGL_ES2;
> -
> -        if (vlc_gl_MakeCurrent(sys->gl) != VLC_SUCCESS)
> -            goto bailout;
> -
> -        vout_display_opengl_t *vgl = vout_display_opengl_New(fmt, 
> &subpicture_chromas,
> -                                                             sys->gl, 
> &cfg->viewpoint,
> -                                                             context);
> -        vlc_gl_ReleaseCurrent(sys->gl);
> -        if (!vgl)
> -            goto bailout;
> -        glsys->vgl = vgl;
> -
> -        /* Setup vout_display_t once everything is fine */
> -        vd->info.subpicture_chromas = subpicture_chromas;
> -
> -        vd->ops = &ops;
> -
> -        return VLC_SUCCESS;
> -
> -    bailout:
> -        Close(vd);
> -        return VLC_EGENERIC;
> -    }
> -}
> -
> -static void Close(vout_display_t *vd)
> -{
> -    vout_display_sys_t *sys = vd->sys;
> -
> -    @autoreleasepool {
> -        BOOL flushed = NO;
> -        if (sys->gl != NULL) {
> -            struct gl_sys *glsys = sys->gl->sys;
> -            msg_Dbg(vd, "deleting display");
> -
> -            if (likely(glsys->vgl))
> -            {
> -                int ret = vlc_gl_MakeCurrent(sys->gl);
> -                vout_display_opengl_Delete(glsys->vgl);
> -                if (ret == VLC_SUCCESS)
> -                {
> -                    vlc_gl_ReleaseCurrent(sys->gl);
> -                    flushed = YES;
> -                }
> -            }
> -            vlc_object_delete(sys->gl);
> -        }
> -
> -        [sys->glESView cleanAndRelease:flushed];
> -    }
> -}
> -
> -/*****************************************************************************
> - * vout display callbacks
> - 
> *****************************************************************************/
> -
> -static int Control(vout_display_t *vd, int query)
> -{
> -    vout_display_sys_t *sys = vd->sys;
> -    struct gl_sys *glsys = sys->gl->sys;
> -
> -    switch (query) {
> -        case VOUT_DISPLAY_CHANGE_DISPLAY_FILLED:
> -        case VOUT_DISPLAY_CHANGE_ZOOM:
> -        case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT:
> -        case VOUT_DISPLAY_CHANGE_SOURCE_CROP:
> -        case VOUT_DISPLAY_CHANGE_DISPLAY_SIZE:
> -        {
> -            assert(vd->cfg);
> -
> -            [sys->glESView updateVoutCfg:vd->cfg withVGL:glsys->vgl];
> -
> -            return VLC_SUCCESS;
> -        }
> -
> -        default:
> -            msg_Err(vd, "Unknown request %d", query);
> -            return VLC_EGENERIC;
> -    }
> -}
> -
> -static void PictureDisplay(vout_display_t *vd, picture_t *pic)
> -{
> -    vout_display_sys_t *sys = vd->sys;
> -    struct gl_sys *glsys = sys->gl->sys;
> -    VLC_UNUSED(pic);
> -
> -    if (vlc_gl_MakeCurrent(sys->gl) == VLC_SUCCESS)
> -    {
> -        vout_display_opengl_Display(glsys->vgl);
> -        vlc_gl_ReleaseCurrent(sys->gl);
> -    }
> -}
> -
> -static void PictureRender(vout_display_t *vd, picture_t *pic, 
> subpicture_t *subpicture,
> -                          vlc_tick_t date)
> -{
> -    VLC_UNUSED(date);
> -    vout_display_sys_t *sys = vd->sys;
> -    struct gl_sys *glsys = sys->gl->sys;
> -
> -    if (vlc_gl_MakeCurrent(sys->gl) == VLC_SUCCESS)
> -    {
> -        vout_display_opengl_Prepare(glsys->vgl, pic, subpicture);
> -        vlc_gl_ReleaseCurrent(sys->gl);
> -    }
> -}
> -- 
> 2.30.0
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list