vl: fix low strength denoise filter
A filter strength of zero or one doesn't make any sense. Thanks to Andy Furniss for pointing this out. Signed-off-by: Christian König <deathsimple@vodafone.de>
This commit is contained in:
parent
356eb0aadb
commit
553e820387
|
@ -165,7 +165,7 @@ generate_offsets(enum vl_median_filter_shape shape, unsigned size,
|
||||||
assert(offsets && num_offsets);
|
assert(offsets && num_offsets);
|
||||||
|
|
||||||
/* size needs to be odd */
|
/* size needs to be odd */
|
||||||
size = align(size, 2) - 1;
|
size = align(size + 1, 2) - 1;
|
||||||
half_size = size >> 1;
|
half_size = size >> 1;
|
||||||
|
|
||||||
switch(shape) {
|
switch(shape) {
|
||||||
|
@ -249,7 +249,7 @@ vl_median_filter_init(struct vl_median_filter *filter, struct pipe_context *pipe
|
||||||
|
|
||||||
assert(filter && pipe);
|
assert(filter && pipe);
|
||||||
assert(width && height);
|
assert(width && height);
|
||||||
assert(size > 0 && size < 20);
|
assert(size > 1 && size < 20);
|
||||||
|
|
||||||
memset(filter, 0, sizeof(*filter));
|
memset(filter, 0, sizeof(*filter));
|
||||||
filter->pipe = pipe;
|
filter->pipe = pipe;
|
||||||
|
|
|
@ -278,12 +278,12 @@ vlVdpVideoMixerUpdateNoiseReductionFilter(vlVdpVideoMixer *vmixer)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* and create a new filter as needed */
|
/* and create a new filter as needed */
|
||||||
if (vmixer->noise_reduction. enabled && vmixer->noise_reduction.level > 0.0f) {
|
if (vmixer->noise_reduction. enabled && vmixer->noise_reduction.level > 0) {
|
||||||
vmixer->noise_reduction.filter = MALLOC(sizeof(struct vl_median_filter));
|
vmixer->noise_reduction.filter = MALLOC(sizeof(struct vl_median_filter));
|
||||||
vl_median_filter_init(vmixer->noise_reduction.filter,
|
vl_median_filter_init(vmixer->noise_reduction.filter,
|
||||||
vmixer->device->context->pipe,
|
vmixer->device->context->pipe,
|
||||||
vmixer->video_width, vmixer->video_height,
|
vmixer->video_width, vmixer->video_height,
|
||||||
9 * vmixer->noise_reduction.level,
|
vmixer->noise_reduction.level + 1,
|
||||||
VL_MEDIAN_FILTER_CROSS);
|
VL_MEDIAN_FILTER_CROSS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -545,7 +545,7 @@ vlVdpVideoMixerSetAttributeValues(VdpVideoMixer mixer,
|
||||||
if (val < 0.f || val > 1.f)
|
if (val < 0.f || val > 1.f)
|
||||||
return VDP_STATUS_INVALID_VALUE;
|
return VDP_STATUS_INVALID_VALUE;
|
||||||
|
|
||||||
vmixer->noise_reduction.level = val;
|
vmixer->noise_reduction.level = val * 10;
|
||||||
vlVdpVideoMixerUpdateNoiseReductionFilter(vmixer);
|
vlVdpVideoMixerUpdateNoiseReductionFilter(vmixer);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -658,7 +658,7 @@ vlVdpVideoMixerGetAttributeValues(VdpVideoMixer mixer,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL:
|
case VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL:
|
||||||
*(float*)attribute_values[i] = vmixer->noise_reduction.level;
|
*(float*)attribute_values[i] = (float)vmixer->noise_reduction.level / 10.0f;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA:
|
case VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA:
|
||||||
|
|
|
@ -311,7 +311,7 @@ typedef struct
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
bool supported, enabled;
|
bool supported, enabled;
|
||||||
float level;
|
unsigned level;
|
||||||
struct vl_median_filter *filter;
|
struct vl_median_filter *filter;
|
||||||
} noise_reduction;
|
} noise_reduction;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue