Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
dac3cffc by Steve Lhomme at 2024-04-03T15:31:12+00:00
d3d11_fmt: allow selecting a format with any alpha value

The decoder may end up using a format with alpha even if it doesn't use it.

- - - - -
72f534b2 by Steve Lhomme at 2024-04-03T15:31:12+00:00
d3d11va: allow decoder output with alpha values

Only for formats that meet all the bit depth and chroma sub-sampling.

- - - - -


3 changed files:

- modules/codec/avcodec/d3d11va.c
- modules/video_chroma/d3d11_fmt.cpp
- modules/video_chroma/d3d11_fmt.h


Changes:

=====================================
modules/codec/avcodec/d3d11va.c
=====================================
@@ -396,8 +396,9 @@ static int DxSetupOutput(vlc_va_t *va, const 
directx_va_mode_t *mode, const vide
     int idx = 0;
     const d3d_format_t *decoder_format;
     UINT supportFlags = D3D11_FORMAT_SUPPORT_DECODER_OUTPUT | 
D3D11_FORMAT_SUPPORT_SHADER_LOAD;
+    // enough sub-sampling+bit depth, with any alpha
     decoder_format = FindD3D11Format( va, sys->d3d_dev, 0, 
DXGI_RGB_FORMAT|DXGI_YUV_FORMAT,
-                                      mode->bit_depth, mode->log2_chroma_h+1, 
mode->log2_chroma_w+1, 0,
+                                      mode->bit_depth, mode->log2_chroma_h+1, 
mode->log2_chroma_w+1, -1,
                                       DXGI_CHROMA_GPU, supportFlags );
     if (decoder_format == NULL)
         // other chroma sub-sampling


=====================================
modules/video_chroma/d3d11_fmt.cpp
=====================================
@@ -744,7 +744,7 @@ const d3d_format_t *(FindD3D11Format)(vlc_object_t *o,
                                     uint8_t bits_per_channel,
                                     uint8_t widthDenominator,
                                     uint8_t heightDenominator,
-                                    uint8_t alpha_bits,
+                                    int alpha_bits,
                                     int cpu_gpu,
                                     UINT supportFlags)
 {
@@ -766,7 +766,7 @@ const d3d_format_t *(FindD3D11Format)(vlc_object_t *o,
             continue;
         if (heightDenominator && heightDenominator < 
output_format->heightDenominator)
             continue;
-        if (alpha_bits && output_format->bitsForAlpha < alpha_bits)
+        if (alpha_bits > 0 && output_format->bitsForAlpha < alpha_bits)
             continue;
         if (alpha_bits == 0 && output_format->bitsForAlpha != 0)
             continue;


=====================================
modules/video_chroma/d3d11_fmt.h
=====================================
@@ -197,7 +197,7 @@ const d3d_format_t *FindD3D11Format(vlc_object_t *,
                                     uint8_t bits_per_channel,
                                     uint8_t widthDenominator,
                                     uint8_t heightDenominator,
-                                    uint8_t alpha_bits,
+                                    int alpha_bits,
                                     int cpu_gpu,
                                     UINT supportFlags);
 #define FindD3D11Format(a,b,c,d,e,f,g,h,i,j)  \



View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/6f115bf3597ecbdedc11f9e9fbd923b48eddbf11...72f534b24eb017e4b128622b59b9b895f124f7a7

-- 
View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/6f115bf3597ecbdedc11f9e9fbd923b48eddbf11...72f534b24eb017e4b128622b59b9b895f124f7a7
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance
_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to