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;
}
Beispiel #3
0
	[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);