[vlc-commits] [Git][videolan/vlc][master] 4 commits: vaapi: chroma: add P012 download/upload

Steve Lhomme (@robUx4) gitlab at videolan.org
Sat Dec 21 07:12:28 UTC 2024



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
84ebe0f9 by Thomas Guillem at 2024-12-21T06:46:45+00:00
vaapi: chroma: add P012 download/upload

- - - - -
8de8f447 by Thomas Guillem at 2024-12-21T06:46:45+00:00
fourcc: add fallbacks for VLC_CODEC_VAAPI_420_12BPP

- - - - -
2d552a3d by Thomas Guillem at 2024-12-21T06:46:45+00:00
chroma: chain: handle I420_12*

- - - - -
5f9ebb5c by Thomas Guillem at 2024-12-21T06:46:45+00:00
chroma: chain: add VLC_CODEC_VAAPI_420_12BPP fallback

- - - - -


3 changed files:

- modules/hw/vaapi/chroma.c
- modules/video_chroma/chain.c
- src/misc/fourcc.c


Changes:

=====================================
modules/hw/vaapi/chroma.c
=====================================
@@ -111,9 +111,11 @@ FillPictureFromVAImage(picture_t *dest,
         break;
     }
     case VA_FOURCC_P010:
+    case VA_FOURCC_P012:
         switch (dest->format.i_chroma)
         {
             case VLC_CODEC_P010:
+            case VLC_CODEC_P012:
                 Copy420_SP_to_SP(dest, src_planes, src_pitches, src_img->height,
                                  cache);
                 break;
@@ -121,6 +123,10 @@ FillPictureFromVAImage(picture_t *dest,
                 Copy420_16_SP_to_P(dest, src_planes, src_pitches,
                                    src_img->height, 6, cache);
                 break;
+            case VLC_CODEC_I420_12L:
+                Copy420_16_SP_to_P(dest, src_planes, src_pitches,
+                                   src_img->height, 4, cache);
+                break;
             default:
                 vlc_assert_unreachable();
         }
@@ -230,9 +236,16 @@ FillVAImageFromPicture(VAImage *dest_img, uint8_t *dest_buf,
         Copy420_16_P_to_SP(dest_pic, src_planes, src_pitches,
                            src->format.i_height, -6, cache);
         break;
+    case VLC_CODEC_I420_12L:
+        assert(dest_pic->format.i_chroma == VLC_CODEC_VAAPI_420_12BPP);
+        Copy420_16_P_to_SP(dest_pic, src_planes, src_pitches,
+                           src->format.i_height, -4, cache);
+        break;
     case VLC_CODEC_P010:
+    case VLC_CODEC_P012:
     {
-        assert(dest_pic->format.i_chroma == VLC_CODEC_VAAPI_420_10BPP);
+        assert(dest_pic->format.i_chroma == VLC_CODEC_VAAPI_420_10BPP
+            || dest_pic->format.i_chroma == VLC_CODEC_VAAPI_420_12BPP);
         Copy420_SP_to_SP(dest_pic,  src_planes, src_pitches,
                          src->format.i_height, cache);
         break;
@@ -327,6 +340,14 @@ static int CheckFmt(const video_format_t *in, const video_format_t *out,
                 return VLC_SUCCESS;
             }
             break;
+        case VLC_CODEC_VAAPI_420_12BPP:
+            if (out->i_chroma == VLC_CODEC_P012
+             || out->i_chroma == VLC_CODEC_I420_12L)
+            {
+                *pixel_bytes = 2;
+                return VLC_SUCCESS;
+            }
+            break;
     }
 
     *upload = true;
@@ -344,6 +365,14 @@ static int CheckFmt(const video_format_t *in, const video_format_t *out,
                 return VLC_SUCCESS;
             }
             break;
+        case VLC_CODEC_VAAPI_420_12BPP:
+            if (in->i_chroma == VLC_CODEC_P012
+             || in->i_chroma == VLC_CODEC_I420_12L)
+            {
+                *pixel_bytes = 2;
+                return VLC_SUCCESS;
+            }
+            break;
     }
     return VLC_EGENERIC;
 }


=====================================
modules/video_chroma/chain.c
=====================================
@@ -69,6 +69,8 @@ static void EsFormatMergeSize( es_format_t *p_dst,
 #define ALLOWED_CHROMAS_YUV10 \
     VLC_CODEC_I420_10L, \
     VLC_CODEC_I420_10B, \
+    VLC_CODEC_I420_12B, \
+    VLC_CODEC_I420_12L, \
     VLC_CODEC_I420_16L \
 
 static const vlc_fourcc_t pi_allowed_chromas_yuv[] = {
@@ -118,11 +120,14 @@ static const vlc_fourcc_t *get_allowed_chromas( filter_t *p_filter )
     {
         case VLC_CODEC_I420_10L:
         case VLC_CODEC_I420_10B:
+        case VLC_CODEC_I420_12L:
+        case VLC_CODEC_I420_12B:
         case VLC_CODEC_I420_16L:
         case VLC_CODEC_CVPX_P010:
         case VLC_CODEC_D3D9_OPAQUE_10B:
         case VLC_CODEC_D3D11_OPAQUE_10B:
         case VLC_CODEC_VAAPI_420_10BPP:
+        case VLC_CODEC_VAAPI_420_12BPP:
             return pi_allowed_chromas_yuv10;
         case VLC_CODEC_I444:
             return pi_allowed_chromas_yuv444;


=====================================
src/misc/fourcc.c
=====================================
@@ -383,6 +383,10 @@ static const vlc_fourcc_t p_VAAPI_420_10BPP_fallback[] = {
     VLC_CODEC_VAAPI_420_10BPP, VLC_CODEC_P010, VLC_CODEC_I420_10L, 0,
 };
 
+static const vlc_fourcc_t p_VAAPI_420_12BPP_fallback[] = {
+    VLC_CODEC_VAAPI_420_12BPP, VLC_CODEC_P012, VLC_CODEC_I420_12L, 0,
+};
+
 static const vlc_fourcc_t p_D3D9_OPAQUE_fallback[] = {
     VLC_CODEC_D3D9_OPAQUE, VLC_CODEC_I420, 0,
 };
@@ -502,6 +506,7 @@ static const vlc_fourcc_t *const pp_YUV_fallback[] = {
     p_CVPX_VIDEO_P010_fallback,
     p_VAAPI_420_fallback,
     p_VAAPI_420_10BPP_fallback,
+    p_VAAPI_420_12BPP_fallback,
     p_D3D9_OPAQUE_fallback,
     p_D3D9_OPAQUE_10B_fallback,
     p_D3D11_OPAQUE_fallback,



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/8c857503f6b5c224f0bdd6dd3d0580073060c691...5f9ebb5c5eb97a760c793a70b6dbe04683d2e72e

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/8c857503f6b5c224f0bdd6dd3d0580073060c691...5f9ebb5c5eb97a760c793a70b6dbe04683d2e72e
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list