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

FreeBSD Manual Pages

  
 
  

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

NAME
     launch_avfeed - Launch a customized frameserver

SYNOPSIS
     vid:newvid, aid:newaid, string:guid, int:cookie
     launch_avfeed( string:argument )
     launch_avfeed( string:argument, string:mode )
     launch_avfeed( string:argument, string:mode, func:callback )

DESCRIPTION
     launch_avfeed  is intended for launching authoritative frameservers for the
     'decode', 'terminal' and 'avfeed' archetypes.  The  'decode'  archetype  is
     used  for providing streaming audio and video decoding of some input source
     defined by the argument  string.  The  'terminal'	archetype  is  used  for
     spawning an interactive command-line interface, and the 'avfeed' is for un-
     specified	custom	input  providers,  typically  for binding to other media
     frameworks. The support for these archetypes are probed at  engine  startup
     and  set in the global variable FRAMESERVER_MODES . If no mode  argument is
     provided, it will default to 'avfeed'. The possible values for argument  is
     dependent on the frameserver implementation,  where  the  defaults  can  be
     probed  by  running  the  respective binaries standalone with the ARCAN_ARG
     =help environment set, though this can vary slightly with the underlying OS
     . It uses a special key1:key2=value with a tab character acting as  element
     separator,  and the tab character itself being forbidden. If avmode  is not
     specified, it defaults to 'avfeed'. As with other frameserver- related man-
     agement functions, it is advised that you provide a handler callback  func-
     tion  directly  or via the target_updatehandler  call. The contents and be-
     havior of this callback function is described in detail in launch_target  .
     If  successful,  new  audio  and  video reference identifiers are returned,
     along with a per-instance unique uid (base-64 encoded), intended to be used
     to regain tracking should a connection be lost, by accident or voluntary.

NOTES
     1	    The reason argument  comes before mode  is for historical reasons as
	    the function name previously held a different behavior and use.

     2

	    SECURITY - alert: allowing the _terminal frameserver is currently  a
	    possible  scriptable  way  of  running arbitrary programs within the
	    context of the terminal, partly through the possible exec=	argument
	    but  also by manually inputting commands through target_input . This
	    can be hardened in multiple ways: by intercepting target_input   and
	    only  allow if it is visible (appl specific solution), by intercept-
	    ing launch_avfeed  and filtering argstr or by  simply  not	allowing
	    the  terminal frameserver (disable at buildtime or specify a differ-
	    ent set of afsrv_ binaries using the --binpath argument).

EXAMPLE
     function launch_avfeed0()
	   local vid, _, guid = launch_avfeed("", "terminal",
		 function(source, status)
		       print("[new event]");
		       for k,v in pairs(status) do
			     print("", k, v);
		       end
		       if (status.kind == "resized") then
			     resize_image(source, status.width, status.height);
		       end
		 end
	   );
	   show_image(vid);
	   print("launched as", vid, guid);
     end

SEE ALSO:
     launch_target(3) define_recordtarget(3) net_open(3) net_listen(3)

targetcontrol			   August 2026			launch_avfeed(3)

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

home | help