[vlc-devel] [PATCH] vout: android: allow force select android-opaque

Thomas Guillem thomas at gllm.fr
Fri Aug 10 09:07:51 CEST 2018


Merged, thanks!

On Fri, Aug 10, 2018, at 04:45, Zhao Zhili wrote:
> This allows the following use case: the user of libvlc do render itself
> with OpenGLES and interoperate with libvlc via SurfaceTexture, just as
> what VLC gles2 module does.
> ---
>  modules/video_output/android/display.c | 22 +++++++++++-----------
>  1 file changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/modules/video_output/android/display.c b/modules/
> video_output/android/display.c
> index 79e7144..579942b 100644
> --- a/modules/video_output/android/display.c
> +++ b/modules/video_output/android/display.c
> @@ -505,12 +505,11 @@ static int OpenCommon(vout_display_t *vd)
>      vout_display_sys_t *sys;
>      video_format_t sub_fmt;
>  
> -    /* Fallback to normal projection in case of soft decoding/display (the
> -     * openGL vout, with a higher priority, should be used when the projection
> -     * need to be handled). */
> -    if (vd->fmt.i_chroma == VLC_CODEC_ANDROID_OPAQUE
> -     && vd->fmt.projection_mode != PROJECTION_MODE_RECTANGULAR)
> -        return VLC_EGENERIC;
> +    /* There are three cases:
> +     * 1. the projection_mode is PROJECTION_MODE_RECTANGULAR
> +     * 2. gles2 vout failed
> +     * 3. the module is force selected
> +     */
>      vd->fmt.projection_mode = PROJECTION_MODE_RECTANGULAR;
>  
>      vout_window_t *embed =
> @@ -621,8 +620,6 @@ static int Open(vlc_object_t *p_this)
>      if (vd->fmt.i_chroma == VLC_CODEC_ANDROID_OPAQUE)
>          return VLC_EGENERIC;
>  
> -    /* At this point, gles2 vout failed (old Android device) */
> -    vd->fmt.projection_mode = PROJECTION_MODE_RECTANGULAR;
>      return OpenCommon(vd);
>  }
>  
> @@ -630,9 +627,12 @@ static int OpenOpaque(vlc_object_t *p_this)
>  {
>      vout_display_t *vd = (vout_display_t*)p_this;
>  
> -    if (vd->fmt.i_chroma != VLC_CODEC_ANDROID_OPAQUE
> -     || vd->fmt.projection_mode != PROJECTION_MODE_RECTANGULAR
> -     || vd->fmt.orientation != ORIENT_NORMAL)
> +    if (vd->fmt.i_chroma != VLC_CODEC_ANDROID_OPAQUE)
> +        return VLC_EGENERIC;
> +
> +    if (!vd->obj.force
> +        && (vd->fmt.projection_mode != PROJECTION_MODE_RECTANGULAR
> +            || vd->fmt.orientation != ORIENT_NORMAL))
>      {
>          /* Let the gles2 vout handle orientation and projection */
>          return VLC_EGENERIC;
> -- 
> 2.9.5
> 
> 
> 
> 
> _______________________________________________
> 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