mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
[MOVED FROM GST-P-FARSIGHT] Make the _set_caps function of mimic enc more robust
20071110051427-3e2dc-381a71f2cbfdbf508e941b672e9058c82fabce24.gz
This commit is contained in:
parent
7f0628b5f9
commit
38006a4c22
1 changed files with 25 additions and 8 deletions
|
@ -175,7 +175,7 @@ gst_mimenc_setcaps (GstPad *pad, GstCaps *caps)
|
||||||
{
|
{
|
||||||
GstMimEnc *filter;
|
GstMimEnc *filter;
|
||||||
GstStructure *structure;
|
GstStructure *structure;
|
||||||
int ret, height, width;
|
int ret = TRUE, height, width;
|
||||||
|
|
||||||
filter = GST_MIMENC (gst_pad_get_parent (pad));
|
filter = GST_MIMENC (gst_pad_get_parent (pad));
|
||||||
g_return_val_if_fail (filter != NULL, FALSE);
|
g_return_val_if_fail (filter != NULL, FALSE);
|
||||||
|
@ -183,17 +183,34 @@ gst_mimenc_setcaps (GstPad *pad, GstCaps *caps)
|
||||||
|
|
||||||
structure = gst_caps_get_structure( caps, 0 );
|
structure = gst_caps_get_structure( caps, 0 );
|
||||||
ret = gst_structure_get_int( structure, "width", &width );
|
ret = gst_structure_get_int( structure, "width", &width );
|
||||||
|
if (!ret) {
|
||||||
|
GST_DEBUG_OBJECT (filter, "No width set");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
ret = gst_structure_get_int( structure, "height", &height );
|
ret = gst_structure_get_int( structure, "height", &height );
|
||||||
|
if (!ret) {
|
||||||
|
GST_DEBUG_OBJECT (filter, "No height set");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (width == 320 && height == 240)
|
||||||
|
filter->res = MIMIC_RES_HIGH;
|
||||||
|
else if (width == 160 && height == 120)
|
||||||
|
filter->res = MIMIC_RES_LOW;
|
||||||
|
else {
|
||||||
|
GST_WARNING_OBJECT (filter, "Invalid resolution %dx%d", width, height);
|
||||||
|
ret = FALSE;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
filter->width = (guint16)width;
|
filter->width = (guint16)width;
|
||||||
filter->height = (guint16)height;
|
filter->height = (guint16)height;
|
||||||
filter->res = (width == 320) ? MIMIC_RES_HIGH : MIMIC_RES_LOW;
|
|
||||||
GST_DEBUG ("Got info from caps w : %d, h : %d", filter->width, filter->height);
|
GST_DEBUG_OBJECT (filter,"Got info from caps w : %d, h : %d",
|
||||||
if (!ret) {
|
filter->width, filter->height);
|
||||||
|
out:
|
||||||
gst_object_unref(filter);
|
gst_object_unref(filter);
|
||||||
return FALSE;
|
return ret;
|
||||||
}
|
|
||||||
gst_object_unref(filter);
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
|
|
Loading…
Reference in a new issue