codecs: h264dec: Output the picture directly if already a frame.
authorHe Junyan <junyan.he@intel.com>
Thu, 29 Jul 2021 13:30:32 +0000 (21:30 +0800)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 12 Aug 2021 07:41:28 +0000 (07:41 +0000)
We forget one case that is the frame and field pictures may be mixed
together. For this case, the dpb is interlaced while the last picture
may be a complete frame. We do not need to cache that complete picture
and should output it directly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2448>

gst-libs/gst/codecs/gsth264decoder.c

index f179be4..2632896 100644 (file)
@@ -724,7 +724,7 @@ output_picture_directly (GstH264Decoder * self, GstH264Picture * picture)
   GstH264Picture *out_pic = NULL;
   gboolean ret = TRUE;
 
-  if (!gst_h264_dpb_get_interlaced (priv->dpb)) {
+  if (GST_H264_PICTURE_IS_FRAME (picture)) {
     g_assert (priv->last_field == NULL);
     out_pic = g_steal_pointer (&picture);
     ret = TRUE;