diff options
Diffstat (limited to 'gst/smpte/barboxwipes.c')
-rw-r--r-- | gst/smpte/barboxwipes.c | 529 |
1 files changed, 431 insertions, 98 deletions
diff --git a/gst/smpte/barboxwipes.c b/gst/smpte/barboxwipes.c index 031c282a..8c858f9d 100644 --- a/gst/smpte/barboxwipes.c +++ b/gst/smpte/barboxwipes.c @@ -20,122 +20,455 @@ #include "paint.h" #include "gstmask.h" -static void -gst_bar_wipe_lr_update (GstMask *mask, - GstClockTime position, - GstClockTime duration) +enum { - gint width = mask->width; - gint height = mask->height; - gint split = (position * width) / duration; + BOX_VERTICAL = 1, + BOX_HORIZONTAL = 2, + TRIGANLE_LINEAR = 3, +}; - gst_smpte_paint_rect (mask->data, width, split, 0, width - split, height, 0); - gst_smpte_paint_rect (mask->data, width, 0, 0, split, height, 255); -} +static gint boxes_1b[][7] = +{ +#define WIPE_B1_1 0 + { BOX_VERTICAL, 0, 0, 0, 1, 1, 1 }, +#define WIPE_B1_2 1 + { BOX_HORIZONTAL, 0, 0, 0, 1, 1, 1 } +}; -static void -gst_bar_wipe_tb_update (GstMask *mask, - GstClockTime position, - GstClockTime duration) +static gint boxes_2b[][7*2] = { - gint width = mask->width; - gint height = mask->height; - gint split = (position * height) / duration; +#define WIPE_B2_21 0 + { BOX_VERTICAL, 0, 0, 1, 1, 2, 0, + BOX_VERTICAL, 1, 0, 0, 2, 2, 1 }, +#define WIPE_B2_22 1 + { BOX_HORIZONTAL, 0, 0, 1, 2, 1, 0, + BOX_HORIZONTAL, 0, 1, 0, 2, 2, 1 }, +}; - gst_smpte_paint_rect (mask->data, width, 0, 0, width, split, 255); - gst_smpte_paint_rect (mask->data, width, 0, split, width, height - split, 0); -} +static gint triangles_2t[][2*9] = +{ + /* 3 -> 6 */ +#define WIPE_T2_3 0 + { 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1, 0, 1, 0, 0, 0, 1, 1, 1 }, +#define WIPE_T2_4 WIPE_T2_3+1 + { 0, 0, 1, 1, 0, 0, 0, 1, 1, + 1, 0, 0, 0, 1, 1, 1, 1, 1 }, +#define WIPE_T2_5 WIPE_T2_4+1 + { 0, 0, 1, 0, 1, 1, 1, 1, 0, + 1, 0, 1, 0, 0, 1, 1, 1, 0 }, +#define WIPE_T2_6 WIPE_T2_5+1 + { 0, 0, 1, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 1, 1 }, +#define WIPE_T2_41 WIPE_T2_6+1 + { 0, 0, 0, 1, 0, 1, 0, 1, 1, + 1, 0, 1, 0, 1, 1, 1, 1, 2 }, +#define WIPE_T2_42 WIPE_T2_41+1 + { 0, 0, 1, 1, 0, 0, 1, 1, 1, + 0, 0, 1, 0, 1, 2, 1, 1, 1 }, +#define WIPE_T2_45 WIPE_T2_42+1 + { 0, 0, 1, 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, 1, 1, 1 }, +#define WIPE_T2_46 WIPE_T2_45+1 + { 0, 0, 0, 1, 0, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 0 }, +}; + +static gint triangles_3t[][3*9] = +{ + /* 23 -> 26 */ +#define WIPE_T3_23 0 + { 0, 0, 1, 1, 0, 0, 0, 2, 1, + 1, 0, 0, 0, 2, 1, 2, 2, 1, + 1, 0, 0, 2, 0, 1, 2, 2, 1 }, +#define WIPE_T3_24 1 + { 0, 0, 1, 2, 0, 1, 2, 1, 0, + 0, 0, 1, 2, 1, 0, 0, 2, 1, + 2, 1, 0, 0, 2, 1, 2, 2, 1 }, +#define WIPE_T3_25 2 + { 0, 0, 1, 0, 2, 1, 1, 2, 0, + 0, 0, 1, 2, 0, 1, 1, 2, 0, + 2, 0, 1, 1, 2, 0, 2, 2, 1 }, +#define WIPE_T3_26 3 + { 0, 0, 1, 2, 0, 1, 0, 1, 0, + 2, 0, 1, 0, 1, 0, 2, 2, 1, + 0, 1, 0, 0, 2, 1, 2, 2, 1 } +}; + +static gint triangles_4t[][4*9] = +{ +#define WIPE_T4_61 0 + { 0, 0, 1, 1, 0, 0, 1, 2, 1, + 0, 0, 1, 0, 2, 2, 1, 2, 1, + 1, 0, 0, 2, 0, 1, 1, 2, 1, + 2, 0, 1, 1, 2, 1, 2, 2, 2 }, +#define WIPE_T4_62 1 + { 0, 0, 2, 2, 0, 1, 0, 1, 1, + 2, 0, 1, 0, 1, 1, 2, 1, 0, + 0, 1, 1, 2, 1, 0, 2, 2, 1, + 0, 1, 1, 0, 2, 2, 2, 2, 1 }, +#define WIPE_T4_63 2 + { 0, 0, 2, 1, 0, 1, 0, 2, 1, + 1, 0, 1, 0, 2, 1, 1, 2, 0, + 1, 0, 1, 1, 2, 0, 2, 2, 1, + 1, 0, 1, 2, 0, 2, 2, 2, 1 }, +#define WIPE_T4_64 3 + { 0, 0, 1, 2, 0, 2, 2, 1, 1, + 0, 0, 1, 0, 1, 0, 2, 1, 1, + 0, 1, 0, 2, 1, 1, 0, 2, 1, + 2, 1, 1, 0, 2, 1, 2, 2, 2 }, +#define WIPE_T4_65 4 + { 0, 0, 0, 1, 0, 1, 1, 2, 0, + 0, 0, 0, 0, 2, 1, 1, 2, 0, + 1, 0, 1, 2, 0, 0, 1, 2, 0, + 2, 0, 0, 1, 2, 0, 2, 2, 1 }, +#define WIPE_T4_66 5 + { 0, 0, 1, 2, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 1, 0, 2, 1, 1, + 0, 1, 0, 2, 1, 1, 2, 2, 0, + 0, 1, 0, 0, 2, 1, 2, 2, 0 }, +#define WIPE_T4_67 6 + { 0, 0, 1, 1, 0, 0, 0, 2, 0, + 1, 0, 0, 0, 2, 0, 1, 2, 1, + 1, 0, 0, 1, 2, 1, 2, 2, 0, + 1, 0, 0, 2, 0, 1, 2, 2, 0 }, +#define WIPE_T4_68 7 + { 0, 0, 0, 2, 0, 1, 2, 1, 0, + 0, 0, 0, 0, 1, 1, 2, 1, 0, + 0, 1, 1, 2, 1, 0, 0, 2, 0, + 2, 1, 0, 0, 2, 0, 2, 2, 1 }, +#define WIPE_T4_101 8 + { 0, 0, 1, 2, 0, 1, 1, 1, 0, + 0, 0, 1, 1, 1, 0, 0, 2, 1, + 1, 1, 0, 0, 2, 1, 2, 2, 1, + 2, 0, 1, 1, 1, 0, 2, 2, 1 } +}; + +static gint triangles_8t[][8*9] = +{ + /* 7 */ +#define WIPE_T8_7 0 + { 0, 0, 0, 1, 0, 1, 1, 1, 1, + 1, 0, 1, 2, 0, 0, 1, 1, 1, + 2, 0, 0, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 2, 1, 1, 2, 2, 0, + 1, 1, 1, 1, 2, 1, 2, 2, 0, + 1, 1, 1, 0, 2, 0, 1, 2, 1, + 0, 1, 1, 1, 1, 1, 0, 2, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 1 }, +#define WIPE_T8_43 1 + { 0, 0, 1, 1, 0, 0, 1, 1, 1, + 1, 0, 0, 2, 0, 1, 1, 1, 1, + 2, 0, 1, 1, 1, 1, 2, 1, 2, + 1, 1, 1, 2, 1, 2, 2, 2, 1, + 1, 1, 1, 1, 2, 0, 2, 2, 1, + 1, 1, 1, 0, 2, 1, 1, 2, 0, + 0, 1, 2, 1, 1, 1, 0, 2, 1, + 0, 0, 1, 0, 1, 2, 1, 1, 1 }, +#define WIPE_T8_44 2 + { 0, 0, 1, 1, 0, 2, 1, 1, 1, + 1, 0, 2, 2, 0, 1, 1, 1, 1, + 2, 0, 1, 1, 1, 1, 2, 1, 0, + 1, 1, 1, 2, 1, 0, 2, 2, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 1, + 1, 1, 1, 0, 2, 1, 1, 2, 2, + 0, 1, 0, 1, 1, 1, 0, 2, 1, + 0, 0, 1, 0, 1, 0, 1, 1, 1 }, +#define WIPE_T8_47 3 + { 0, 0, 0, 1, 0, 1, 1, 1, 0, + 1, 0, 1, 2, 0, 0, 1, 1, 0, + 2, 0, 0, 1, 1, 0, 2, 1, 1, + 1, 1, 0, 2, 1, 1, 2, 2, 0, + 1, 1, 0, 1, 2, 1, 2, 2, 0, + 1, 1, 0, 0, 2, 0, 1, 2, 1, + 0, 1, 1, 1, 1, 0, 0, 2, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 0 }, +#define WIPE_T8_48 4 + { 0, 0, 1, 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 0, 0, 2, 0, 1, 2, 1, 0, + 1, 0, 0, 1, 1, 1, 2, 1, 0, + 0, 1, 0, 1, 1, 1, 1, 2, 0, + 0, 1, 0, 0, 2, 1, 1, 2, 0, + 1, 1, 1, 2, 1, 0, 1, 2, 0, + 2, 1, 0, 1, 2, 0, 2, 2, 1 }, +}; + +static gint triangles_16t[][16*9] = +{ + /* 8 */ +#define WIPE_T16_8 0 + { 0, 0, 1, 2, 0, 1, 1, 1, 0, + 2, 0, 1, 1, 1, 0, 2, 2, 1, + 1, 1, 0, 0, 2, 1, 2, 2, 1, + 0, 0, 1, 1, 1, 0, 0, 2, 1, + 2, 0, 1, 4, 0, 1, 3, 1, 0, + 4, 0, 1, 3, 1, 0, 4, 2, 1, + 3, 1, 0, 2, 2, 1, 4, 2, 1, + 2, 0, 1, 3, 1, 0, 2, 2, 1, + 0, 2, 1, 2, 2, 1, 1, 3, 0, + 2, 2, 1, 1, 3, 0, 2, 4, 1, + 1, 3, 0, 0, 4, 1, 2, 4, 1, + 0, 2, 1, 1, 3, 0, 0, 4, 1, + 2, 2, 1, 4, 2, 1, 3, 3, 0, + 4, 2, 1, 3, 3, 0, 4, 4, 1, + 3, 3, 0, 2, 4, 1, 4, 4, 1, + 2, 2, 1, 3, 3, 0, 2, 4, 1 } +}; + +typedef struct _GstWipeConfig GstWipeConfig; + +struct _GstWipeConfig { + gint *objects; + gint nobjects; + gint xscale; + gint yscale; + gint cscale; +}; + +static GstWipeConfig wipe_config[] = +{ +#define WIPE_CONFIG_1 0 + { boxes_1b[WIPE_B1_1], 1, 0, 0, 0 }, /* 1 */ +#define WIPE_CONFIG_2 WIPE_CONFIG_1+1 + { boxes_1b[WIPE_B1_2], 1, 0, 0, 0 }, /* 2 */ +#define WIPE_CONFIG_3 WIPE_CONFIG_2+1 + { triangles_2t[WIPE_T2_3], 2, 0, 0, 0 }, /* 3 */ +#define WIPE_CONFIG_4 WIPE_CONFIG_3+1 + { triangles_2t[WIPE_T2_4], 2, 0, 0, 0 }, /* 4 */ +#define WIPE_CONFIG_5 WIPE_CONFIG_4+1 + { triangles_2t[WIPE_T2_5], 2, 0, 0, 0 }, /* 5 */ +#define WIPE_CONFIG_6 WIPE_CONFIG_5+1 + { triangles_2t[WIPE_T2_6], 2, 0, 0, 0 }, /* 6 */ +#define WIPE_CONFIG_7 WIPE_CONFIG_6+1 + { triangles_8t[WIPE_T8_7], 8, 1, 1, 0 }, /* 7 */ +#define WIPE_CONFIG_8 WIPE_CONFIG_7+1 + { triangles_16t[WIPE_T16_8], 16, 2, 2, 0 }, /* 8 */ + +#define WIPE_CONFIG_21 WIPE_CONFIG_8+1 + { boxes_2b[WIPE_B2_21], 2, 1, 1, 0 }, /* 21 */ +#define WIPE_CONFIG_22 WIPE_CONFIG_21+1 + { boxes_2b[WIPE_B2_22], 2, 1, 1, 0 }, /* 22 */ + +#define WIPE_CONFIG_23 WIPE_CONFIG_22+1 + { triangles_3t[WIPE_T3_23], 3, 1, 1, 0 }, /* 23 */ +#define WIPE_CONFIG_24 WIPE_CONFIG_23+1 + { triangles_3t[WIPE_T3_24], 3, 1, 1, 0 }, /* 24 */ +#define WIPE_CONFIG_25 WIPE_CONFIG_24+1 + { triangles_3t[WIPE_T3_23], 3, 1, 1, 0 }, /* 25 */ +#define WIPE_CONFIG_26 WIPE_CONFIG_25+1 + { triangles_3t[WIPE_T3_26], 3, 1, 1, 0 }, /* 26 */ +#define WIPE_CONFIG_41 WIPE_CONFIG_26+1 + { triangles_2t[WIPE_T2_41], 2, 0, 0, 1 }, /* 41 */ +#define WIPE_CONFIG_42 WIPE_CONFIG_41+1 + { triangles_2t[WIPE_T2_42], 2, 0, 0, 1 }, /* 42 */ +#define WIPE_CONFIG_43 WIPE_CONFIG_42+1 + { triangles_8t[WIPE_T8_43], 8, 1, 1, 1 }, /* 43 */ +#define WIPE_CONFIG_44 WIPE_CONFIG_43+1 + { triangles_8t[WIPE_T8_44], 8, 1, 1, 1 }, /* 44 */ +#define WIPE_CONFIG_45 WIPE_CONFIG_44+1 + { triangles_2t[WIPE_T2_45], 2, 0, 0, 0 }, /* 45 */ +#define WIPE_CONFIG_46 WIPE_CONFIG_45+1 + { triangles_2t[WIPE_T2_46], 2, 0, 0, 0 }, /* 46 */ +#define WIPE_CONFIG_47 WIPE_CONFIG_46+1 + { triangles_8t[WIPE_T8_47], 8, 1, 1, 0 }, /* 47 */ +#define WIPE_CONFIG_48 WIPE_CONFIG_47+1 + { triangles_8t[WIPE_T8_48], 8, 1, 1, 0 }, /* 48 */ +#define WIPE_CONFIG_61 WIPE_CONFIG_48+1 + { triangles_4t[WIPE_T4_61], 4, 1, 1, 1 }, /* 61 */ +#define WIPE_CONFIG_62 WIPE_CONFIG_61+1 + { triangles_4t[WIPE_T4_62], 4, 1, 1, 1 }, /* 62 */ +#define WIPE_CONFIG_63 WIPE_CONFIG_62+1 + { triangles_4t[WIPE_T4_63], 4, 1, 1, 1 }, /* 63 */ +#define WIPE_CONFIG_64 WIPE_CONFIG_63+1 + { triangles_4t[WIPE_T4_64], 4, 1, 1, 1 }, /* 64 */ +#define WIPE_CONFIG_65 WIPE_CONFIG_64+1 + { triangles_4t[WIPE_T4_65], 4, 1, 1, 0 }, /* 65 */ +#define WIPE_CONFIG_66 WIPE_CONFIG_65+1 + { triangles_4t[WIPE_T4_66], 4, 1, 1, 0 }, /* 66 */ +#define WIPE_CONFIG_67 WIPE_CONFIG_66+1 + { triangles_4t[WIPE_T4_67], 4, 1, 1, 0 }, /* 67 */ +#define WIPE_CONFIG_68 WIPE_CONFIG_67+1 + { triangles_4t[WIPE_T4_68], 4, 1, 1, 0 }, /* 68 */ +#define WIPE_CONFIG_101 WIPE_CONFIG_68+1 + { triangles_4t[WIPE_T4_101], 4, 1, 1, 0 }, /* 101 */ +}; static void -gst_box_wipe_update (GstMask *mask, - GstClockTime position, - GstClockTime duration) +gst_wipe_boxes_draw (GstMask *mask) { - static gint box_wipe_impacts[8][4] = - { - /* 3 -> 6 */ - { 0, 0, 0, 0 }, - { 2, 2, 0, 0 }, - { 2, 2, 2, 2 }, - { 0, 0, 2, 2 }, - /* 23 -> 26 */ - { 1, 1, 0, 0 }, - { 2, 2, 1, 1 }, - { 1, 1, 2, 2 }, - { 0, 0, 1, 1 }, - }; - gint *impacts = box_wipe_impacts[(mask->type & 0x0F) - 3]; - gint width = mask->width; - gint height = mask->height; - gint splitx = (position * width) / duration; - gint splity = (position * height) / duration; - - gst_smpte_paint_rect (mask->data, width, 0, 0, width, height, 0); - gst_smpte_paint_rect (mask->data, width, - (impacts[0] * width)/2 - (impacts[1] * splitx)/2, - (impacts[2] * height)/2 - (impacts[3] * splity)/2, - splitx, splity, 255); + GstWipeConfig *config = mask->user_data; + gint *impacts = config->objects; + gint width = (mask->width >> config->xscale) - 1; + gint height = (mask->height >> config->yscale) - 1; + gint depth = (1 << mask->bpp) >> config->cscale; + + gint i; + + for (i = 0; i < config->nobjects; i++) { + switch (impacts[0]) { + case BOX_VERTICAL: + gst_smpte_paint_vbox (mask->data, mask->width, + impacts[1] * width, impacts[2] * height, impacts[3] * depth, + impacts[4] * width, impacts[5] * height, impacts[6] * depth); + impacts += 7; + break; + case BOX_HORIZONTAL: + gst_smpte_paint_hbox (mask->data, mask->width, + impacts[1] * width, impacts[2] * height, impacts[3] * depth, + impacts[4] * width, impacts[5] * height, impacts[6] * depth); + impacts += 7; + default: + break; + } + } } static void -gst_fourc_box_wipe_update (GstMask *mask, - GstClockTime position, - GstClockTime duration) +gst_wipe_triangles_draw (GstMask *mask) { - static gint box_wipe_impacts[8][4] = - { - { 0, 0, 0, 0 }, - { 1, 1, 1, 1 }, - { 4, 2, 0, 0 }, - { 3, 1, 1, 1 }, - { 4, 2, 4, 2 }, - { 1, 1, 3, 1 }, - { 0, 0, 4, 2 }, - { 3, 1, 3, 1 }, - }; - gint *impacts; - gint width = mask->width; - gint height = mask->height; - gint splitx = (position * width/2) / duration; - gint splity = (position * height/2) / duration; - gint i; + GstWipeConfig *config = mask->user_data; + gint *impacts = config->objects; + gint width = (mask->width >> config->xscale) - 1; + gint height = (mask->height >> config->yscale) - 1; + gint depth = (1 << mask->bpp) >> config->cscale; - gst_smpte_paint_rect (mask->data, width, 0, 0, width, height, 0); + gint i; - for (i = 7; i > 0; i -= 2) { - impacts = box_wipe_impacts[mask->type - i]; - gst_smpte_paint_rect (mask->data, width, - (impacts[0] * width)/4 - (impacts[1] * splitx)/2, - (impacts[2] * height)/4 - (impacts[3] * splity)/2, - splitx, splity, 255); + for (i = 0; i < config->nobjects; i++) { + gst_smpte_paint_triangle_linear (mask->data, mask->width, + impacts[0] * width, impacts[1] * height, impacts[2] * depth, + impacts[3] * width, impacts[4] * height, impacts[5] * depth, + impacts[6] * width, impacts[7] * height, impacts[8] * depth); + impacts += 9; } } static GstMaskDefinition definitions[] = { - { 1, "bar_wipe_lr", "A bar moves from left to right", - _gst_mask_default_new, _gst_mask_default_destroy, gst_bar_wipe_lr_update }, - { 2, "bar_wipe_tb", "A bar moves from top to bottom", - _gst_mask_default_new, _gst_mask_default_destroy, gst_bar_wipe_tb_update }, - { 3, "box_wipe_tl", "A box expands from the upper-left corner to the lower-right corner", - _gst_mask_default_new, _gst_mask_default_destroy, gst_box_wipe_update }, - { 4, "box_wipe_tr", "A box expands from the upper-right corner to the lower-left corner", - _gst_mask_default_new, _gst_mask_default_destroy, gst_box_wipe_update }, - { 5, "box_wipe_br", "A box expands from the lower-right corner to the upper-left corner", - _gst_mask_default_new, _gst_mask_default_destroy, gst_box_wipe_update }, - { 6, "box_wipe_bl", "A box expands from the lower-left corner to the upper-right corner", - _gst_mask_default_new, _gst_mask_default_destroy, gst_box_wipe_update }, - { 23, "box_wipe_tc", "A box expands from the top edge's midpoint to the bottom corners", - _gst_mask_default_new, _gst_mask_default_destroy, gst_box_wipe_update }, - { 24, "box_wipe_rc", "A box expands from the right edge's midpoint to the left corners", - _gst_mask_default_new, _gst_mask_default_destroy, gst_box_wipe_update }, - { 25, "box_wipe_bc", "A box expands from the bottom edge's midpoint to the top corners", - _gst_mask_default_new, _gst_mask_default_destroy, gst_box_wipe_update }, - { 26, "box_wipe_lc", "A box expands from the left edge's midpoint to the right corners", - _gst_mask_default_new, _gst_mask_default_destroy, gst_box_wipe_update }, - { 7 , "four_box_wipe_ci", "A box shape expands from each of the four corners toward the center", - _gst_mask_default_new, _gst_mask_default_destroy, gst_fourc_box_wipe_update }, - { 8 , "four_box_wipe_co", "A box shape expands from the center of each quadrant toward the corners of each quadrant", - _gst_mask_default_new, _gst_mask_default_destroy, gst_fourc_box_wipe_update }, + { 1, "bar_wipe_lr", + "A bar moves from left to right", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_1] }, + { 2, "bar_wipe_tb", + "A bar moves from top to bottom", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_2] }, + { 3, "box_wipe_tl", + "A box expands from the upper-left corner to the lower-right corner", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_3] }, + { 4, "box_wipe_tr", + "A box expands from the upper-right corner to the lower-left corner", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_4] }, + { 5, "box_wipe_br", + "A box expands from the lower-right corner to the upper-left corner", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_5] }, + { 6, "box_wipe_bl", + "A box expands from the lower-left corner to the upper-right corner", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_6] }, + { 7 , "four_box_wipe_ci", + "A box shape expands from each of the four corners toward the center", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_7] }, + { 8 , "four_box_wipe_co", + "A box shape expands from the center of each quadrant toward the corners of each quadrant", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_8] }, + { 21, "barndoor_v", + "A central, vertical line splits and expands toward the left and right edges", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_21] }, + { 22, "barndoor_h", + "A central, horizontal line splits and expands toward the top and bottom edges", + gst_wipe_boxes_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_22] }, + { 23, "box_wipe_tc", + "A box expands from the top edge's midpoint to the bottom corners", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_23] }, + { 24, "box_wipe_rc", + "A box expands from the right edge's midpoint to the left corners", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_24] }, + { 25, "box_wipe_bc", + "A box expands from the bottom edge's midpoint to the top corners", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_25] }, + { 26, "box_wipe_lc", + "A box expands from the left edge's midpoint to the right corners", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_26] }, + { 41, "diagonal_tl", + "A diagonal line moves from the upper-left corner to the lower-right corner", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_41] }, + { 42, "diagonal_tr", + "A diagonal line moves from the upper right corner to the lower-left corner", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_42] }, + { 43, "bowtie_v", + "Two wedge shapes slide in from the top and bottom edges toward the center", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_43] }, + { 44, "bowtie_h", + "Two wedge shapes slide in from the left and right edges toward the center", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_44] }, + { 45, "barndoor_dbl", + "A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_45] }, + { 46, "barndoor_dtl", + "A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_46] }, + { 47, "misc_diagonal_dbd", + "Four wedge shapes split from the center and retract toward the four edges", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_47] }, + { 48, "misc_diagonal_dd", + "A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_48] }, + { 61, "vee_d", + "A wedge shape moves from top to bottom", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_61] }, + { 62, "vee_l", + "A wedge shape moves from right to left", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_62] }, + { 63, "vee_u", + "A wedge shape moves from bottom to top", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_63] }, + { 64, "vee_r", + "A wedge shape moves from left to right", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_64] }, + { 65, "barnvee_d", + "A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_65] }, + { 66, "barnvee_l", + "A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_66] }, + { 67, "barnvee_u", + "A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_67] }, + { 68, "barnvee_r", + "A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_68] }, + { 101, "iris_rect", + "A rectangle expands from the center.", + gst_wipe_triangles_draw, _gst_mask_default_destroy, + &wipe_config[WIPE_CONFIG_101] }, { 0, NULL, NULL, NULL } }; |