From 95d7f95971467bc7af75f8be4b68d5d7c8df4f99 Mon Sep 17 00:00:00 2001 From: Sreerenj Balachandran Date: Fri, 27 Jun 2014 16:38:03 +0300 Subject: [PATCH] encoder: h264: generate new SPS only when codec config changed. It is not necessary to periodically send SPS or subset SPS headers. This is up to the upper layer (e.g. transport layer) to decide on if/how to periodically submit those. For now, only generate new SPS or subset SPS headers when the codec config changed. Note: the upper layer could readily determine the config headers (SPS/PPS) through the gst_vaapi_encoder_h264_get_codec_data() function. https://bugzilla.gnome.org/show_bug.cgi?id=732083 Signed-off-by: Gwenole Beauchesne --- 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 c955d95968..3277f00017 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_h264.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_h264.c @@ -1941,8 +1941,8 @@ ensure_sequence (GstVaapiEncoderH264 * encoder, GstVaapiEncPicture * picture) { GstVaapiEncSequence *sequence = NULL; - // Submit an SPS header before every new I-frame - if (picture->type != GST_VAAPI_PICTURE_TYPE_I) + /* submit an SPS header before every new I-frame, if codec config changed */ + if (!encoder->config_changed || picture->type != GST_VAAPI_PICTURE_TYPE_I) return TRUE; sequence = GST_VAAPI_ENC_SEQUENCE_NEW (H264, encoder); @@ -1964,6 +1964,9 @@ ensure_sequence (GstVaapiEncoderH264 * encoder, GstVaapiEncPicture * picture) gst_vaapi_enc_picture_set_sequence (picture, sequence); gst_vaapi_codec_object_replace (&sequence, NULL); } + + if (!encoder->is_mvc || encoder->view_idx > 0) + encoder->config_changed = FALSE; return TRUE; /* ERRORS */