omxvideodec: retrieve OMX_IndexParamVideoPortFormat before setting it
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Wed, 29 Nov 2017 13:18:41 +0000 (14:18 +0100)
committerOlivier CrĂȘte <olivier.crete@collabora.com>
Wed, 29 Nov 2017 17:41:37 +0000 (12:41 -0500)
The usual pattern when setting OMX params is to first get the struct
param, override the values we want to set and then set the updated
param.
We were not doing this with OMX_IndexParamVideoPortFormat and so were
resetting some fields such as OMX_VIDEO_PARAM_PORTFORMATTYPE.xFramerate

https://bugzilla.gnome.org/show_bug.cgi?id=790979

omx/gstomxvideodec.c

index 6d5db9a..38b4c1b 100644 (file)
@@ -1957,6 +1957,14 @@ gst_omx_video_dec_negotiate (GstOMXVideoDec * self)
   GST_OMX_INIT_STRUCT (&param);
   param.nPortIndex = self->dec_out_port->index;
 
+  err = gst_omx_component_get_parameter (self->dec,
+      OMX_IndexParamVideoPortFormat, &param);
+  if (err != OMX_ErrorNone) {
+    GST_ERROR_OBJECT (self, "Failed to get video port format: %s (0x%08x)",
+        gst_omx_error_to_string (err), err);
+    return FALSE;
+  }
+
   for (l = negotiation_map; l; l = l->next) {
     GstOMXVideoNegotiationMap *m = l->data;