plugins: postproc: Fix a problem of propose_allocation when passthrough.

We should query the downstream element to answer a precise allocation
query when the passthrough mode is enabled.
The current way still decides the allocation by the postproc itself. The
pipeline such as:
  gst-launch-1.0 -v filesrc location=xxx.264 ! h264parse ! vaapih264dec ! \
  vaapipostproc ! fakevideosink silent=false sync=true
will lose some info such as the GST_VIDEO_META_API_TYPE.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/413>
This commit is contained in:
He Junyan 2021-02-04 15:05:55 +08:00 committed by GStreamer Merge Bot
parent 4ff4bcd725
commit 18f530978b

View file

@ -1801,6 +1801,13 @@ gst_vaapipostproc_propose_allocation (GstBaseTransform * trans,
gint allocation_width, allocation_height; gint allocation_width, allocation_height;
gint negotiated_width, negotiated_height; gint negotiated_width, negotiated_height;
/* passthrough query, we just bypass to the peer */
if (decide_query == NULL) {
return GST_BASE_TRANSFORM_CLASS
(gst_vaapipostproc_parent_class)->propose_allocation (trans,
decide_query, query);
}
/* advertise to upstream that we can handle crop meta */ /* advertise to upstream that we can handle crop meta */
if (decide_query) if (decide_query)
gst_query_add_allocation_meta (query, GST_VIDEO_CROP_META_API_TYPE, NULL); gst_query_add_allocation_meta (query, GST_VIDEO_CROP_META_API_TYPE, NULL);