Skip to content

vaapipostproc: handle size and direction together in src events

Mapping a pointer event needs to consider both size and video-direction operations together, not just one or the other.

This fixes an issue where x,y were not being mapped correctly for 90r, 90l, ur-ll and ul-lr video-direction. In these directions, the WxH are swapped and GST_VAAPI_POSTPROC_FLAG_SIZE is set. Thus, the first condition in the pointer event handling was entered and x,y scale factor were incorrectly computed due to srcpad WxH swap.

This also fixes all cases where both video-direction and scaling are enabled at the same time.

Test that all pointer events map appropriately:

    for i in `seq 0 7`
    do
     GST_DEBUG=vaapipostproc:5 gst-launch-1.0 -vf videotestsrc \
      ! vaapipostproc video-direction=${i} width=300 \
      ! vaapisink
     GST_DEBUG=vaapipostproc:5 gst-launch-1.0 -vf videotestsrc \
      ! vaapipostproc video-direction=${i} width=300 height=200 \
      ! vaapisink
     GST_DEBUG=vaapipostproc:5 gst-launch-1.0 -vf videotestsrc \
      ! vaapipostproc video-direction=${i} height=200 \
      ! vaapisink
     GST_DEBUG=vaapipostproc:5 gst-launch-1.0 -vf videotestsrc \
      ! vaapipostproc video-direction=${i} \
      ! vaapisink
    done
Edited by U. Artie Eoff

Merge request reports