|
|
|
@@ -71,24 +71,22 @@ static int denoise_vaapi_build_filter_params(AVFilterContext *avctx) |
|
|
|
|
|
|
|
VAProcFilterParameterBuffer denoise; |
|
|
|
|
|
|
|
if (ctx->denoise != DENOISE_DEFAULT) { |
|
|
|
vas = vaQueryVideoProcFilterCaps(vpp_ctx->hwctx->display, vpp_ctx->va_context, |
|
|
|
VAProcFilterNoiseReduction, |
|
|
|
&caps, &num_caps); |
|
|
|
if (vas != VA_STATUS_SUCCESS) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Failed to query denoise caps " |
|
|
|
"context: %d (%s).\n", vas, vaErrorStr(vas)); |
|
|
|
return AVERROR(EIO); |
|
|
|
} |
|
|
|
|
|
|
|
denoise.type = VAProcFilterNoiseReduction; |
|
|
|
denoise.value = map(ctx->denoise, DENOISE_MIN, DENOISE_MAX, |
|
|
|
caps.range.min_value, |
|
|
|
caps.range.max_value); |
|
|
|
ff_vaapi_vpp_make_param_buffers(avctx, VAProcFilterParameterBufferType, |
|
|
|
&denoise, sizeof(denoise), 1); |
|
|
|
vas = vaQueryVideoProcFilterCaps(vpp_ctx->hwctx->display, vpp_ctx->va_context, |
|
|
|
VAProcFilterNoiseReduction, |
|
|
|
&caps, &num_caps); |
|
|
|
if (vas != VA_STATUS_SUCCESS) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Failed to query denoise caps " |
|
|
|
"context: %d (%s).\n", vas, vaErrorStr(vas)); |
|
|
|
return AVERROR(EIO); |
|
|
|
} |
|
|
|
|
|
|
|
denoise.type = VAProcFilterNoiseReduction; |
|
|
|
denoise.value = map(ctx->denoise, DENOISE_MIN, DENOISE_MAX, |
|
|
|
caps.range.min_value, |
|
|
|
caps.range.max_value); |
|
|
|
ff_vaapi_vpp_make_param_buffers(avctx, VAProcFilterParameterBufferType, |
|
|
|
&denoise, sizeof(denoise), 1); |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
@@ -104,26 +102,24 @@ static int sharpness_vaapi_build_filter_params(AVFilterContext *avctx) |
|
|
|
|
|
|
|
VAProcFilterParameterBuffer sharpness; |
|
|
|
|
|
|
|
if (ctx->sharpness != SHARPNESS_DEFAULT) { |
|
|
|
vas = vaQueryVideoProcFilterCaps(vpp_ctx->hwctx->display, vpp_ctx->va_context, |
|
|
|
VAProcFilterSharpening, |
|
|
|
&caps, &num_caps); |
|
|
|
if (vas != VA_STATUS_SUCCESS) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Failed to query sharpness caps " |
|
|
|
"context: %d (%s).\n", vas, vaErrorStr(vas)); |
|
|
|
return AVERROR(EIO); |
|
|
|
} |
|
|
|
|
|
|
|
sharpness.type = VAProcFilterSharpening; |
|
|
|
sharpness.value = map(ctx->sharpness, |
|
|
|
SHARPNESS_MIN, SHARPNESS_MAX, |
|
|
|
caps.range.min_value, |
|
|
|
caps.range.max_value); |
|
|
|
ff_vaapi_vpp_make_param_buffers(avctx, |
|
|
|
VAProcFilterParameterBufferType, |
|
|
|
&sharpness, sizeof(sharpness), 1); |
|
|
|
vas = vaQueryVideoProcFilterCaps(vpp_ctx->hwctx->display, vpp_ctx->va_context, |
|
|
|
VAProcFilterSharpening, |
|
|
|
&caps, &num_caps); |
|
|
|
if (vas != VA_STATUS_SUCCESS) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Failed to query sharpness caps " |
|
|
|
"context: %d (%s).\n", vas, vaErrorStr(vas)); |
|
|
|
return AVERROR(EIO); |
|
|
|
} |
|
|
|
|
|
|
|
sharpness.type = VAProcFilterSharpening; |
|
|
|
sharpness.value = map(ctx->sharpness, |
|
|
|
SHARPNESS_MIN, SHARPNESS_MAX, |
|
|
|
caps.range.min_value, |
|
|
|
caps.range.max_value); |
|
|
|
ff_vaapi_vpp_make_param_buffers(avctx, |
|
|
|
VAProcFilterParameterBufferType, |
|
|
|
&sharpness, sizeof(sharpness), 1); |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
|