FreeBSD Manual Pages
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)
NAME | SYNOPSIS | DESCRIPTION | EXAMPLE | EXAMPLE | MISUSE | MISUSE | SEE ALSO:
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>