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:samplerate,
     function:callback )
     define_recordtarget(     vid:buffer,     vid:resource,    string:arguments,
     vidtbl:vids )
     define_recordtarget( aidtbl:aids,	int:detach,  int:scale,  int:samplerate,
     function:callback )

DESCRIPTION
     This  function  inherits from define_rendertarget . Please refer to the de-
     scription of that function for assistance with the detach , scale	and sam-
     plerate  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  argu-
     ments   or "") or created in the APPL_TEMP  namespace, and passed as a file
     descriptor into the process on creation.  arguments  will be forwarded  us-
     ing 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  accepts
     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 for-
     warded, 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			   August 2026		  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+15.1.quarterly>

home | help