static GstCaps * generate_sink_template(void) { GstCaps *caps; GstStructure *struc; caps = gst_caps_new_empty(); struc = gst_structure_new("video/x-raw-yuv", "width", GST_TYPE_INT_RANGE, 16, 4096, "height", GST_TYPE_INT_RANGE, 16, 4096, "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, 30, 1, NULL); { GValue list; GValue val; list.g_type = val.g_type = 0; g_value_init(&list, GST_TYPE_LIST); g_value_init(&val, GST_TYPE_FOURCC); #if 0 gst_value_set_fourcc(&val, GST_MAKE_FOURCC('I', '4', '2', '0')); gst_value_list_append_value(&list, &val); gst_value_set_fourcc(&val, GST_MAKE_FOURCC('Y', 'U', 'Y', '2')); gst_value_list_append_value(&list, &val); gst_value_set_fourcc(&val, GST_MAKE_FOURCC('U', 'Y', 'V', 'Y')); gst_value_list_append_value(&list, &val); #else gst_value_set_fourcc(&val, GST_MAKE_FOURCC('U', 'Y', 'V', 'Y')); gst_value_list_append_value(&list, &val); #endif gst_structure_set_value(struc, "format", &list); g_value_unset(&val); g_value_unset(&list); } gst_caps_append_structure(caps, struc); return caps; }
static GstCaps * gst_smpte_alpha_transform_caps (GstBaseTransform * trans, GstPadDirection direction, GstCaps * from) { GstCaps *to = gst_caps_copy (from); GstStructure *s; gst_caps_truncate (to); s = gst_caps_get_structure (to, 0); if (gst_structure_has_name (s, "video/x-raw-yuv")) { GValue list = { 0, }; GValue val = { 0, }; gst_structure_remove_field (s, "format"); g_value_init (&list, GST_TYPE_LIST); g_value_init (&val, GST_TYPE_FOURCC); gst_value_set_fourcc (&val, GST_STR_FOURCC ("AYUV")); gst_value_list_append_value (&list, &val); g_value_reset (&val); gst_value_set_fourcc (&val, GST_STR_FOURCC ("I420")); gst_value_list_append_value (&list, &val); g_value_reset (&val); gst_value_set_fourcc (&val, GST_STR_FOURCC ("YV12")); gst_value_list_append_value (&list, &val); g_value_unset (&val); gst_structure_set_value (s, "format", &list); g_value_unset (&list); } else if (!gst_structure_has_name (s, "video/x-raw-rgb")) { gst_caps_unref (to); to = gst_caps_new_empty (); } return to; }
static void transform_value (GValue * dest) { GValue fourcc = { 0 }; g_value_init (dest, GST_TYPE_LIST); g_value_init (&fourcc, GST_TYPE_FOURCC); gst_value_set_fourcc (&fourcc, GST_MAKE_FOURCC ('I', '4', '2', '0')); gst_value_list_append_value (dest, &fourcc); gst_value_set_fourcc (&fourcc, GST_MAKE_FOURCC ('Y', 'V', '1', '2')); gst_value_list_append_value (dest, &fourcc); gst_value_set_fourcc (&fourcc, GST_MAKE_FOURCC ('Y', 'U', 'Y', '2')); gst_value_list_append_value (dest, &fourcc); gst_value_set_fourcc (&fourcc, GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y')); gst_value_list_append_value (dest, &fourcc); gst_value_set_fourcc (&fourcc, GST_MAKE_FOURCC ('A', 'Y', 'U', 'V')); gst_value_list_append_value (dest, &fourcc); gst_value_set_fourcc (&fourcc, GST_MAKE_FOURCC ('Y', '4', '2', 'B')); gst_value_list_append_value (dest, &fourcc); gst_value_set_fourcc (&fourcc, GST_MAKE_FOURCC ('Y', '4', '4', '4')); gst_value_list_append_value (dest, &fourcc); gst_value_set_fourcc (&fourcc, GST_MAKE_FOURCC ('v', '2', '1', '0')); gst_value_list_append_value (dest, &fourcc); gst_value_set_fourcc (&fourcc, GST_MAKE_FOURCC ('v', '2', '1', '6')); gst_value_list_append_value (dest, &fourcc); g_value_unset (&fourcc); }
static VALUE fourcc_replace_bang(VALUE self, VALUE fourcc) { gst_value_set_fourcc(DATA_PTR(self), value_to_fourcc(fourcc)); return Qnil; }
static VALUE fourcc_initialize(VALUE self, VALUE fourcc) { gst_value_set_fourcc(DATA_PTR(self), value_to_fourcc(fourcc)); return Qnil; }
static void fourcc_rvalue2gvalue(VALUE value, GValue *result) { gst_value_set_fourcc(result, gst_value_get_fourcc(RVAL2GOBJ(value))); }