Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
define_recordtarget(3)		 Arcan Lua API		define_recordtarget(3)

NAME
       define_recordtarget - Create a rendertarget with	a periodic readback

SYNOPSIS
       nil
       define_recordtarget(   vid:buffer,  string:resource,  string:arguments,
       vidtbl:vids )
       define_recordtarget( aidtbl:aids, int:detach,  int:scale,  int:sampler-
       ate, function:callback )
       define_recordtarget(    vid:buffer,   vid:resource,   string:arguments,
       vidtbl:vids )
       define_recordtarget( aidtbl:aids, int:detach,  int:scale,  int:sampler-
       ate, function:callback )

DESCRIPTION
       This  function  inherits	from define_rendertarget . Please refer	to the
       description of that function for	assistance with	the detach  ,  scale
       and samplerate  arguments.

       There  are two distinct cases for using recordtargets. One is to	create
       a new frameserver (afsrv_encode process)	session	used for features such
       as streaming and	remote displays	i.e. lossy output.

       In this case, resource  will be used as the output resource path	 which
       will  either be mapped to a NULL	 file (in the case of container=stream
       in arguments  or	"") or created in the APPL_TEMP	 namespace, and	passed
       as a file descriptor into the process on	creation.  arguments  will  be
       forwarded  using	 the ARCAN_ARG	environment variable.  ARCAN_ARG =help
       afsrv_encode from a command-line	can be used to see the possible	values
       for arguments .

       The second usecase is creating  an  output    segment  in  an  existing
       client.	Here,  arguments  will be ignored and resource	is expected to
       refer to	a valid	( valid_vid ) frameserver segment. Trying  to  push  a
       subsegment  to a	VID  that is not a connected frameserver is a terminal
       state transition.

       The callback  argument should point to a	Lua defined function that  ac-
       cepts  a	 source_id(will	 match	dest_buffer ) and a table with members
       that describe events that are performed on the underlying segment.

       aids  should either be a	table of valid AID s that should be mixed  and
       forwarded, or to	WORLDID	 as a means of hooking all arcan managed audio
       input.  By  default,  they  are	mixed and clipped equally. This	can be
       changed using recordtarget_gain .

EXAMPLE
       function	define_recordtarget0()
	     a = fill_surface(64, 64, 128, 0, 0);
	     b = fill_surface(32, 32, 0, 128, 0);
	     c = fill_surface(16, 16, 0, 0, 128);
	     move_image(b, VRESW - 32, 0);
	     move_image(c, VRESW - 16, VRESH - 16);
	     show_image({a,b,c});
	     move_image(a, VRESW - 64, 0, 100);
	     move_image(b, VRESW - 32, VRESH - 32, 100);
	     move_image(c, 0, VRESH - 16, 100);
	     move_image(a, VRESW - 64, VRESH - 64, 100);
	     move_image(b, 0, VRESH - 32, 100);
	     move_image(c, 0, 0, 100);
	     image_transform_cycle(a, 1);
	     image_transform_cycle(b, 1);
	     image_transform_cycle(c, 1);
	     dst = alloc_surface(VRESW * 0.5, VRESH * 0.5);
	     define_recordtarget(dst, "output.mkv", "vpreset=8:noaudio:fps=25",	{a,c}, {},
		   RENDERTARGET_NODETACH, RENDERTARGET_SCALE, -4);
       end

EXAMPLE
       function	define_recordtarget1()
	     a = fill_surface(64, 64, 128, 0, 0);
	     move_image(a, VRESW - 64, 0, 100);
	     move_image(a, VRESW - 64, VRESH - 64 ,100);
	     cycle_image_transform(a);
	     dst = alloc_surface(VRESW * 0.5, VRESH * 0.5);
	     define_recordtarget(dst, "", "protocol=vnc:port=6200:fps=10", {a},	{},
		   RENDERTARGET_NODETACH, RENDERTARGET_SCALE, -4, function(source, status)
		   for k,v in pairs(status) do
			 print("key:", k, "value:", v);
		   end
	     end);
       end

MISUSE
       function	define_recordtarget0()
	     define_recordtarget(nil, "output.mkv", "vpreset=8:noaudio:fps=25",	{}, {},
		   RENDERTARGET_NODETACH, RENDERTARGET_SCALE, -4);
       end

MISUSE
       function	define_recordtarget1()
	     dst = fill_surface(VRESW, VRESH, 0, 0, 0);
	     define_recordtarget(dst, "output.mkv", "vpreset=11:noaudio:fps120", "", "",
		   RENDERTARGET_NODETACH, RENDERTARGET_SCALE, -4);
       end

SEE ALSO:
       define_rendertarget(3) define_calctarget(3) target_alloc(3)

targetcontrol			  April	2025		define_recordtarget(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=define_recordtarget&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help