static gboolean gst_smpte_update_mask (GstSMPTE * smpte, gint type, gboolean invert, gint depth, gint width, gint height) { GstMask *newmask; if (smpte->mask) { if (smpte->type == type && smpte->invert == invert && smpte->depth == depth && smpte->width == width && smpte->height == height) return TRUE; } newmask = gst_mask_factory_new (type, invert, depth, width, height); if (newmask) { if (smpte->mask) { gst_mask_destroy (smpte->mask); } smpte->mask = newmask; smpte->type = type; smpte->invert = invert; smpte->depth = depth; smpte->width = width; smpte->height = height; return TRUE; } return FALSE; }
static gboolean gst_smpte_alpha_update_mask (GstSMPTEAlpha * smpte, gint type, gboolean invert, gint depth, gint width, gint height) { GstMask *newmask; /* try to avoid regenerating the mask if we already have one that is * correct */ if (smpte->mask) { if (smpte->type == type && smpte->invert == invert && smpte->depth == depth && smpte->width == width && smpte->height == height) return TRUE; } smpte->type = type; smpte->invert = invert; smpte->depth = depth; smpte->width = width; smpte->height = height; /* Not negotiated yet */ if (width == 0 || height == 0) { return TRUE; } newmask = gst_mask_factory_new (type, invert, depth, width, height); if (!newmask) goto mask_failed; if (smpte->mask) gst_mask_destroy (smpte->mask); smpte->mask = newmask; return TRUE; /* ERRORS */ mask_failed: { GST_ERROR_OBJECT (smpte, "failed to create a mask"); return FALSE; } }