libs: Change the parameter setting order when encode picture.
authorHe Junyan <junyan.he@hotmail.com>
Fri, 29 Mar 2019 05:33:41 +0000 (13:33 +0800)
committerHe Junyan <junyan.he@hotmail.com>
Fri, 29 Mar 2019 05:33:41 +0000 (13:33 +0800)
The order in gst_vaapi_enc_picture_encode when encoding one
picture is not very correct. The misc parameters are set before
the picture parameters. Some of the misc parameters such as
ROI may change the current picture parameters. But the later
setting of picture parameter will re-init all picture related
parameters and clear the previous setting. The right order
should be picture parameter first and then misc parameters.

Signed-off-by: He Junyan <junyan.he@hotmail.com>
gst-libs/gst/vaapi/gstvaapiencoder_objects.c

index f31181e..3227607 100644 (file)
@@ -555,6 +555,10 @@ gst_vaapi_enc_picture_encode (GstVaapiEncPicture * picture)
       return FALSE;
   }
 
+  /* Submit Picture parameter */
+  if (!do_encode (va_display, va_context, &picture->param_id, &picture->param))
+    return FALSE;
+
   /* Submit Misc Params */
   for (i = 0; i < picture->misc_params->len; i++) {
     GstVaapiEncMiscParam *const misc =
@@ -563,10 +567,6 @@ gst_vaapi_enc_picture_encode (GstVaapiEncPicture * picture)
       return FALSE;
   }
 
-  /* Submit Picture parameter */
-  if (!do_encode (va_display, va_context, &picture->param_id, &picture->param))
-    return FALSE;
-
   /* Submit Slice parameters */
   for (i = 0; i < picture->slices->len; i++) {
     GstVaapiEncSlice *const slice = g_ptr_array_index (picture->slices, i);