mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 02:28:10 +02:00
st/vdpau: fix GenerateCSCMatrix with NULL procamp
As per API specification, it is legal to supply a NULL procamp. In this case, a CSC matrix according to the colorspace should be generated, but no further adjustments are made. Addresses: https://trac.videolan.org/vlc/ticket/9281 https://bugs.freedesktop.org/show_bug.cgi?id=68792 Reviewed-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
parent
5b4e2db12d
commit
1a5bac2149
1 changed files with 12 additions and 9 deletions
|
|
@ -768,22 +768,25 @@ vlVdpGenerateCSCMatrix(VdpProcamp *procamp,
|
|||
enum VL_CSC_COLOR_STANDARD vl_std;
|
||||
struct vl_procamp camp;
|
||||
|
||||
if (!(csc_matrix && procamp))
|
||||
if (!csc_matrix)
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
if (procamp->struct_version > VDP_PROCAMP_VERSION)
|
||||
return VDP_STATUS_INVALID_STRUCT_VERSION;
|
||||
|
||||
switch (standard) {
|
||||
case VDP_COLOR_STANDARD_ITUR_BT_601: vl_std = VL_CSC_COLOR_STANDARD_BT_601; break;
|
||||
case VDP_COLOR_STANDARD_ITUR_BT_709: vl_std = VL_CSC_COLOR_STANDARD_BT_709; break;
|
||||
case VDP_COLOR_STANDARD_SMPTE_240M: vl_std = VL_CSC_COLOR_STANDARD_SMPTE_240M; break;
|
||||
default: return VDP_STATUS_INVALID_COLOR_STANDARD;
|
||||
}
|
||||
camp.brightness = procamp->brightness;
|
||||
camp.contrast = procamp->contrast;
|
||||
camp.saturation = procamp->saturation;
|
||||
camp.hue = procamp->hue;
|
||||
vl_csc_get_matrix(vl_std, &camp, true, csc_matrix);
|
||||
|
||||
if (procamp) {
|
||||
if (procamp->struct_version > VDP_PROCAMP_VERSION)
|
||||
return VDP_STATUS_INVALID_STRUCT_VERSION;
|
||||
camp.brightness = procamp->brightness;
|
||||
camp.contrast = procamp->contrast;
|
||||
camp.saturation = procamp->saturation;
|
||||
camp.hue = procamp->hue;
|
||||
}
|
||||
|
||||
vl_csc_get_matrix(vl_std, procamp ? &camp : NULL, true, csc_matrix);
|
||||
return VDP_STATUS_OK;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue