const VisPluginInfo *get_plugin_info (void) { static VisActorPlugin actor = { .requisition = act_jakdaw_requisition, .palette = act_jakdaw_palette, .render = act_jakdaw_render, .vidoptions.depth = VISUAL_VIDEO_DEPTH_32BIT }; static VisPluginInfo info = { .type = VISUAL_PLUGIN_TYPE_ACTOR, .plugname = "jakdaw", .name = "Jakdaw plugin", .author = N_("Original by: Christopher Wilson <*****@*****.**>, Port by: Dennis Smit <*****@*****.**>"), .version = "0.0.1", .about = N_("jakdaw visual plugin"), .help = N_("This is the libvisual port of the xmms Jakdaw plugin"), .license = VISUAL_PLUGIN_LICENSE_GPL, .init = act_jakdaw_init, .cleanup = act_jakdaw_cleanup, .events = act_jakdaw_events, .plugin = VISUAL_OBJECT (&actor) }; return &info; } static int act_jakdaw_init (VisPluginData *plugin) { JakdawPrivate *priv; VisParamContainer *paramcontainer = visual_plugin_get_params (plugin); static VisParamEntry params[] = { VISUAL_PARAM_LIST_ENTRY_INTEGER ("zoom mode", FEEDBACK_ZOOMRIPPLE), VISUAL_PARAM_LIST_ENTRY_INTEGER ("plotter trigger", PLOTTER_COLOUR_MUSICTRIG), VISUAL_PARAM_LIST_ENTRY_INTEGER ("plotter type", PLOTTER_SCOPE_LINES), VISUAL_PARAM_LIST_END }; /* static VisParamEntry zoomparamchoices[] = { VISUAL_PARAM_LIST_ENTRY_INTEGER ("Zoom ripple", FEEDBACK_ZOOMRIPPLE), VISUAL_PARAM_LIST_ENTRY_INTEGER ("Blur only", FEEDBACK_BLURONLY), VISUAL_PARAM_LIST_ENTRY_INTEGER ("Zoom rotate", FEEDBACK_ZOOMROTATE), VISUAL_PARAM_LIST_ENTRY_INTEGER ("Scroll", FEEDBACK_SCROLL), VISUAL_PARAM_LIST_ENTRY_INTEGER ("Into screen", FEEDBACK_INTOSCREEN), VISUAL_PARAM_LIST_ENTRY_INTEGER ("Ripple", FEEDBACK_NEWRIPPLE), VISUAL_PARAM_LIST_END }; static VisParamEntry colorparamchoices[] = { VISUAL_PARAM_LIST_ENTRY_INTEGER ("Solid", PLOTTER_COLOUR_SOLID), VISUAL_PARAM_LIST_ENTRY_INTEGER ("Random", PLOTTER_COLOUR_RANDOM), VISUAL_PARAM_LIST_ENTRY_INTEGER ("On music", PLOTTER_COLOUR_MUSICTRIG), VISUAL_PARAM_LIST_END }; static VisParamEntry scopeparamchoices[] = { VISUAL_PARAM_LIST_ENTRY_INTEGER ("Lines", PLOTTER_SCOPE_LINES), VISUAL_PARAM_LIST_ENTRY_INTEGER ("Dots", PLOTTER_SCOPE_DOTS), VISUAL_PARAM_LIST_ENTRY_INTEGER ("Solid", PLOTTER_SCOPE_SOLID), VISUAL_PARAM_LIST_ENTRY_INTEGER ("Nothing", PLOTTER_SCOPE_NOTHING), VISUAL_PARAM_LIST_END }; */ #if ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); #endif priv = visual_mem_new0 (JakdawPrivate, 1); visual_object_set_private (VISUAL_OBJECT (plugin), priv); priv->rcontext = visual_plugin_get_random_context (plugin); priv->decay_rate = 1; priv->zoom_ripplesize = 32; priv->zoom_ripplefact = 0.1; priv->zoom_zoomfact = 0.9; priv->plotter_amplitude = 0.5; /* FIXME make param of this one as well */ priv->plotter_scopecolor = 0xff00ff; visual_param_container_add_many (paramcontainer, params); priv->pcmbuf = visual_buffer_new_allocate (512 * sizeof (float)); priv->freqbuf = visual_buffer_new_allocate (256 * sizeof (float)); return 0; }
AVSElement *avs_parse_trans_movement (AVSTree *avstree) { AVSElement *movement; int len = avstree->cur_section_length; int pos=0; int effect; int rectangular; int blend; int sourcemapped; int subpixel; int wrap; int REFFECT_MAX = 23; int effect_exp_ch; char buf[257]; VisParamContainer *pcont; static VisParamEntry params[] = { VISUAL_PARAM_LIST_ENTRY_INTEGER ("effect", 0), VISUAL_PARAM_LIST_ENTRY_INTEGER ("rectangular", 0), VISUAL_PARAM_LIST_ENTRY_INTEGER ("blend", 0), VISUAL_PARAM_LIST_ENTRY_INTEGER ("sourcemapped", 0), VISUAL_PARAM_LIST_ENTRY_INTEGER ("subpixel", 0), VISUAL_PARAM_LIST_ENTRY_INTEGER ("wrap", 0), VISUAL_PARAM_LIST_ENTRY_STRING ("code", ""), VISUAL_PARAM_LIST_END }; visual_mem_set (buf, 0, sizeof (buf)); pcont = visual_param_container_new (); visual_param_container_add_many(pcont, params); movement = visual_mem_new0 (AVSElement, 1); /* Do the VisObject initialization */ visual_object_initialize (VISUAL_OBJECT (movement), TRUE, avs_element_dtor); AVS_ELEMENT (movement)->pcont = pcont; AVS_ELEMENT (movement)->type = AVS_ELEMENT_TYPE_TRANS_MOVEMENT; /* Deserialize without using the container, too complex (borked) serialization */ if (len - pos >= 4) { effect=AVS_SERIALIZE_GET_INT (avstree->cur); AVS_SERIALIZE_SKIP_INT (avstree->cur); pos += 4; } if (effect == 32767) { if (!memcmp(avstree->cur,"!rect ",6)) { AVS_SERIALIZE_SKIP_LENGTH (avstree->cur, 6); rectangular=1; } if (AVS_SERIALIZE_GET_BYTE (avstree->cur) == 1) { AVS_SERIALIZE_SKIP_BYTE (avstree->cur); pos++; int l=AVS_SERIALIZE_GET_INT(avstree->cur); AVS_SERIALIZE_SKIP_INT (avstree->cur); pos += 4; if (l > 0 && len-pos >= l) { // effect_exp.resize(l); memcpy(buf, avstree->cur, l); buf[l] = 0; // memcpy(effect_exp.get(), data+pos, l); AVS_SERIALIZE_SKIP_LENGTH (avstree->cur, l); pos+=l; } else { // effect_exp.resize(1); // effect_exp.get()[0]=0; } } else if (len-pos >= 256) { int l = 256 - (rectangular ? 6 : 0); memcpy(buf,avstree->cur,l); buf[l]=0; // effect_exp.assign(buf); AVS_SERIALIZE_SKIP_LENGTH (avstree->cur, l); pos+=l; printf ("trans_movement buf %s\n", buf); } } if (len-pos >= 4) { blend=AVS_SERIALIZE_GET_INT(avstree->cur); AVS_SERIALIZE_SKIP_INT (avstree->cur);pos+=4; } if (len-pos >= 4) { sourcemapped=AVS_SERIALIZE_GET_INT(avstree->cur); AVS_SERIALIZE_SKIP_INT (avstree->cur);pos+=4; } if (len-pos >= 4) { rectangular=AVS_SERIALIZE_GET_INT(avstree->cur); AVS_SERIALIZE_SKIP_INT (avstree->cur);pos+=4; } if (len-pos >= 4) { subpixel=AVS_SERIALIZE_GET_INT(avstree->cur); AVS_SERIALIZE_SKIP_INT (avstree->cur);pos+=4; } else subpixel=0; if (len-pos >= 4) { wrap=AVS_SERIALIZE_GET_INT(avstree->cur); AVS_SERIALIZE_SKIP_INT (avstree->cur);pos+=4; } else wrap=0; if (!effect && len-pos >= 4) { effect=AVS_SERIALIZE_GET_INT(avstree->cur); AVS_SERIALIZE_SKIP_INT (avstree->cur);pos+=4; } if (effect != 32767 && (effect > REFFECT_MAX || effect < 0)) effect=0; effect_exp_ch=1; visual_param_entry_set_integer (visual_param_container_get (pcont, "effect"), effect); visual_param_entry_set_integer (visual_param_container_get (pcont, "rectangular"), rectangular); visual_param_entry_set_integer (visual_param_container_get (pcont, "blend"), blend); visual_param_entry_set_integer (visual_param_container_get (pcont, "sourcemapped"), sourcemapped); visual_param_entry_set_integer (visual_param_container_get (pcont, "subpixel"), subpixel); visual_param_entry_set_integer (visual_param_container_get (pcont, "wrap"), wrap); visual_param_entry_set_string (visual_param_container_get (pcont, "code"), buf); printf ("effect: %d, rectangular: %d, blend %d, sourcemapped %d, subpixel %d, wrap %d\n", effect, rectangular, blend, sourcemapped, subpixel, wrap); return movement; }
[AVS_ELEMENT_TYPE_MISC_RENDERSTATE] = "error", [AVS_ELEMENT_TYPE_TRANS_INTERFERENCES] = "avs_interferences", [AVS_ELEMENT_TYPE_TRANS_CHANNELSHIFT] = "avs_channelshift", [AVS_ELEMENT_TYPE_TRANS_DMOVE] = "avs_dmovement", [AVS_ELEMENT_TYPE_TRANS_FASTBRIGHT] = "avs_fastbright", [AVS_ELEMENT_TYPE_UNKNOWN_DCOLORMODE] = "error", [AVS_ELEMENT_TYPE_MAIN] = "error", [AVS_ELEMENT_TYPE_APE] = "error", [AVS_ELEMENT_TYPE_TRANS_MULTIPLIER] = "avs_multiplier", NULL }; */ static VisParamEntry container_params[] = { VISUAL_PARAM_LIST_ENTRY_INTEGER("clearscreen", 1), VISUAL_PARAM_LIST_END }; /* Prototypes */ static int lvavs_preset_dtor (VisObject *object); static int lvavs_preset_element_dtor (VisObject *object); static int lvavs_preset_container_dtor (VisObject *object); //LVAVSPresetContainer *lvavs_preset_container_from_xml_node(LVAVSPresetContainer *cont, xmlNodePtr node); /*static int preset_convert_from_wavs (LVAVSPresetContainer *presetcont, AVSContainer *cont); LVAVSPresetElement *wavs_convert_main_new (AVSElement *avselem); LVAVSPresetElement *wavs_convert_ring_new (AVSElement *avselem); LVAVSPresetElement *wavs_convert_channelshift_new (AVSElement *avselem);