From 6ebf7b10ae5895fb2ce67249c5d3d3f9bbaf9460 Mon Sep 17 00:00:00 2001 From: Hyunjun Ko Date: Fri, 9 Jun 2017 14:47:40 +0900 Subject: [PATCH] libs: encoder: h264: submit sps in case of IDR picture If the picture is IDR, also submit a SPS header. This means when frame number reaches to keyframe-period or an force key unit event arrives, we insert SPS/PPS again. https://bugzilla.gnome.org/show_bug.cgi?id=776712 --- gst-libs/gst/vaapi/gstvaapiencoder_h264.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_h264.c b/gst-libs/gst/vaapi/gstvaapiencoder_h264.c index 3ae4430ac7..601a4be28d 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_h264.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_h264.c @@ -2175,8 +2175,11 @@ ensure_sequence (GstVaapiEncoderH264 * encoder, GstVaapiEncPicture * picture) goto error_create_packed_au_delimiter; } - /* submit an SPS header before every new I-frame, if codec config changed */ - if (!encoder->config_changed || picture->type != GST_VAAPI_PICTURE_TYPE_I) + /* submit an SPS header before every new I-frame, if codec config changed + * or if the picture is IDR. + */ + if ((!encoder->config_changed || picture->type != GST_VAAPI_PICTURE_TYPE_I) + && !GST_VAAPI_ENC_PICTURE_IS_IDR (picture)) return TRUE; sequence = GST_VAAPI_ENC_SEQUENCE_NEW (H264, encoder);