1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- --- a/omx/gstomxvideodec.c 2020-10-26 19:17:03.000000000 +0800
- +++ b/omx/gstomxvideodec.c 2021-08-16 16:23:08.082113380 +0800
- @@ -2185,6 +2185,7 @@
- gst_omx_video_dec_negotiate (GstOMXVideoDec * self)
- {
- OMX_VIDEO_PARAM_PORTFORMATTYPE param;
- + OMX_PARAM_PORTDEFINITIONTYPE port_def;
- OMX_ERRORTYPE err;
- GstCaps *comp_supported_caps;
- GList *negotiation_map = NULL, *l;
- @@ -2192,6 +2193,7 @@
- GstVideoFormat format;
- GstStructure *s;
- const gchar *format_str;
- + gint width, height;
-
- GST_DEBUG_OBJECT (self, "Trying to negotiate a video format with downstream");
-
- @@ -2281,6 +2283,31 @@
- gst_omx_error_to_string (err), err);
- }
-
- + if (gst_structure_get_int(s, "width", &width) && gst_structure_get_int(s, "height", &height))
- + {
- + GST_OMX_INIT_STRUCT (&port_def);
- + port_def.nPortIndex = self->dec_out_port->index;
- + err = gst_omx_component_get_parameter (self->dec,
- + OMX_IndexParamPortDefinition, &port_def);
- + if (err != OMX_ErrorNone) {
- + GST_ERROR_OBJECT (self, "Failed to get video port definition: %s (0x%08x)",
- + gst_omx_error_to_string (err), err);
- + return FALSE;
- + }
- +
- + port_def.format.video.nFrameHeight = height;
- + port_def.format.video.nFrameWidth = width;
- +
- + err =
- + gst_omx_component_set_parameter (self->dec,
- + OMX_IndexParamPortDefinition, &port_def);
- + if (err != OMX_ErrorNone) {
- + GST_ERROR_OBJECT (self, "Failed to set video port definition: %s (0x%08x)",
- + gst_omx_error_to_string (err), err);
- + return FALSE;
- + }
- + }
- +
- gst_caps_unref (intersection);
- return (err == OMX_ErrorNone);
- }
|