[FFmpeg-devel] [PATCH V10] libavfilter: add transpose_vaapi filter

Mark Thompson sw at jkqxz.net
Thu Jan 24 01:33:01 EET 2019


On 17/01/2019 03:33, Zachary Zhou wrote:
> Swap width and height when do clock/cclock rotation
> Add reversal/hflip/vflip options
> 
> ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128
> -hwaccel_output_format vaapi -i input.264 -vf "transpose_vaapi=clock_flip"
> -c:v h264_vaapi output.h264
> 
> Signed-off-by: Zachary Zhou <zachary.zhou at intel.com>
> ---
>  configure                        |   2 +
>  libavfilter/Makefile             |   1 +
>  libavfilter/allfilters.c         |   1 +
>  libavfilter/transpose.h          |   3 +
>  libavfilter/vf_transpose_vaapi.c | 316 +++++++++++++++++++++++++++++++
>  5 files changed, 323 insertions(+)
>  create mode 100644 libavfilter/vf_transpose_vaapi.c
> 
> ...
> +static int transpose_vaapi_vpp_config_output(AVFilterLink *outlink)
> +{
> +    AVFilterContext *avctx     = outlink->src;
> +    VAAPIVPPContext *vpp_ctx   = avctx->priv;
> +    TransposeVAAPIContext *ctx = avctx->priv;
> +    AVFilterLink *inlink       = avctx->inputs[0];
> +
> +    if ((inlink->w >= inlink->h && ctx->passthrough == TRANSPOSE_PT_TYPE_LANDSCAPE) ||
> +        (inlink->w <= inlink->h && ctx->passthrough == TRANSPOSE_PT_TYPE_PORTRAIT)) {
> +        av_log(avctx, AV_LOG_VERBOSE,
> +               "w:%d h:%d -> w:%d h:%d (passthrough mode)\n",
> +               inlink->w, inlink->h, inlink->w, inlink->h);
> +        return 0;
> +    }

This case was missing the propagation of the hw_frames_ctx to the next link, which is required for all following processing - I added it.

With that change - tested, LGTM, applied.

Thanks,

- Mark


More information about the ffmpeg-devel mailing list