Emit connection-failed signal if gst_pad_alloc_buffer fails.
Buffer allocation might fail for requested format. We need to emit connection-failed signal and allow backend to insert colorspace transformation element. Change-Id: I9a101bb3c027f150c68bbeaba8ab932deded47ea Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com> Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
3998106d93
commit
1a71385d6a
@@ -200,6 +200,8 @@ gst_video_connector_buffer_alloc (GstPad * pad, guint64 offset, guint size,
|
|||||||
return GST_FLOW_ERROR;
|
return GST_FLOW_ERROR;
|
||||||
*buf = NULL;
|
*buf = NULL;
|
||||||
|
|
||||||
|
gboolean isFailed = FALSE;
|
||||||
|
while (1) {
|
||||||
GST_OBJECT_LOCK (element);
|
GST_OBJECT_LOCK (element);
|
||||||
gst_object_ref(element->srcpad);
|
gst_object_ref(element->srcpad);
|
||||||
GST_OBJECT_UNLOCK (element);
|
GST_OBJECT_UNLOCK (element);
|
||||||
@@ -243,6 +245,16 @@ gst_video_connector_buffer_alloc (GstPad * pad, guint64 offset, guint size,
|
|||||||
return GST_FLOW_UNEXPECTED;
|
return GST_FLOW_UNEXPECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (res >= GST_FLOW_OK || isFailed == TRUE)
|
||||||
|
break;
|
||||||
|
|
||||||
|
//if gst_pad_alloc_buffer failed, emit "connection-failed" signal
|
||||||
|
//so colorspace transformation element can be inserted
|
||||||
|
GST_INFO_OBJECT(element, "gst_video_connector_buffer_alloc failed, emit connection-failed signal");
|
||||||
|
g_signal_emit(G_OBJECT(element), gst_video_connector_signals[SIGNAL_CONNECTION_FAILED], 0);
|
||||||
|
isFailed = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,7 +271,7 @@ gst_video_connector_setcaps (GstPad *pad, GstCaps *caps)
|
|||||||
|
|
||||||
if (!res) {
|
if (!res) {
|
||||||
//if set_caps failed, emit "connection-failed" signal
|
//if set_caps failed, emit "connection-failed" signal
|
||||||
//so colorspace transformation elemnt can be inserted
|
//so colorspace transformation element can be inserted
|
||||||
GST_INFO_OBJECT(element, "gst_video_connector_setcaps failed, emit connection-failed signal");
|
GST_INFO_OBJECT(element, "gst_video_connector_setcaps failed, emit connection-failed signal");
|
||||||
g_signal_emit(G_OBJECT(element), gst_video_connector_signals[SIGNAL_CONNECTION_FAILED], 0);
|
g_signal_emit(G_OBJECT(element), gst_video_connector_signals[SIGNAL_CONNECTION_FAILED], 0);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user