[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