[vlc-devel] [PATCH] vout: android: don't overwrite projection_mode for opaque

Zhao Zhili quinkblack at foxmail.com
Wed Aug 22 10:01:43 CEST 2018



On 2018年08月22日 15:44, Steve Lhomme wrote:
> On 22/08/2018 09:26, Zhao Zhili wrote:
>>
>>
>> On 2018年08月22日 11:52, Zhao Zhili wrote:
>>> Fix "Failed to adapt decoder format to display" and fallback to 
>>> software
>>> decoder.
>>
>> Overwrite projection_mode can affect software decoder too, although 
>> it doesn't fail. For example:
>>
>>  libvlc vout display: A filter to adapt decoder I420 to display I420 
>> is needed
>>  libvlc filter: 2048x1024 (2048x1026) chroma: I420 -> 2048x1024 
>> (2048x1026) chroma: I420 with scaling using Bicubic (good quality)
>>  libvlc filter: using video converter module "swscale"
>>
>> The swscale is almost useless.
>
> Not only that but it's probably wrong. It pretends to transform from 
> one projection to the other when in fact it doesn't.

It doesn't make much sense for VLC as an application, but make
sense for libvlc. It's a clean way to let libvlc render to
android-display and the user get the texture via SurfaceTexture.
The user of libvlc can do render itself and handle projection as
far as it can get the projection info.

>
>>
>>> ---
>>>   modules/video_output/android/display.c | 12 ++++++------
>>>   1 file changed, 6 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/modules/video_output/android/display.c 
>>> b/modules/video_output/android/display.c
>>> index 78c2331..7f22c41 100644
>>> --- a/modules/video_output/android/display.c
>>> +++ b/modules/video_output/android/display.c
>>> @@ -505,12 +505,6 @@ static int OpenCommon(vout_display_t *vd)
>>>       vout_display_sys_t *sys;
>>>       video_format_t sub_fmt;
>>>   -    /* There are three cases:
>>> -     * 1. the projection_mode is PROJECTION_MODE_RECTANGULAR
>>> -     * 2. gles2 vout failed
>>> -     * 3. the module is forced */
>>> -    vd->fmt.projection_mode = PROJECTION_MODE_RECTANGULAR;
>>> -
>>>       vout_window_t *embed =
>>>           vout_display_NewWindow(vd, VOUT_WINDOW_TYPE_ANDROID_NATIVE);
>>>   @@ -619,6 +613,12 @@ static int Open(vlc_object_t *p_this)
>>>       if (vd->fmt.i_chroma == VLC_CODEC_ANDROID_OPAQUE)
>>>           return VLC_EGENERIC;
>>>   +    /* There are three cases:
>>> +     * 1. the projection_mode is PROJECTION_MODE_RECTANGULAR
>>> +     * 2. gles2 vout failed
>>> +     * 3. the module is forced */
>>> +    vd->fmt.projection_mode = PROJECTION_MODE_RECTANGULAR;
>>> +
>>>       return OpenCommon(vd);
>>>   }
>>
>>
>>
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
>
> _______________________________________________
> 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